Я пишу свое первое приложение в течение нескольких недель, и сегодня я понял, что если мы хотим разработать для сотовых и обычных телефонов, мы должны упаковать их вместе как одно приложение, а не как два приложения с разными целями.
Поэтому я начал новый проект в Eclipse с целевым значением 2.1 (уровень SDK 7) и скопировал поверх своих Java, XML и других ресурсов из старого (проект, ориентированный на Honeycomb), на новый (ориентированный на телефон + планшет) проект.
Все шло хорошо, пока я не зацепил код ActionBar, в частности, когда я установил значок приложения, чтобы перейти к основному действию - ему почему-то не нравится.
Как мы должны писать одно приложение для обеих платформ? Я думал, что это будет так же просто, как две версии макета и несколько настроек MINOR на Java.
Я посмотрел на новый (ориентированный на телефон + планшет) проект, чтобы увидеть, не было ли чего-то, что я пропустил, что вызовет проблему.
Оказывается, в androidmanifest.xml у меня были неправильные уровни targetdk и minsdk.
Я изменил их на правильные:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="11" />
Это изменение решило проблему. Спасибо за помощь.
Лучший пример, который я нашел до сих пор, - это расписание Google IO 2011, которое доступно на http://code.google.com/p/iosched/. Проект был специально создан для этой цели - 1 apk предлагает версию приложения, подходящую для телефона, а другую для планшетов. В зависимости от того, как ваше приложение структурировано, с некоторой настройкой (основной или второстепенной в зависимости от вашей перспективы) приложение может делать практически что угодно для двух платформ устройства.
ActionBar
был впервые представлен в Android 3.0
Если вы хотите, чтобы ваше приложение запускалось с другими версиями, вам нужно будет проверить ActionBar
доступен ли ActionBar
(а затем запустить конкретный код), а если нет, вам придется придумать другое решение (возможно, ваша собственная реализация).
Build.VERSION можно использовать для определения версии Android, на которой работает приложение.
VerifyError
во время выполнения. Вот пример проекта, демонстрирующего это для размещения пользовательскогоView
в панели действий: github.com/commonsguy/cw-android/tree/master/Menus/ActionBarBC