Реальность как бы намекает, что написать приложение мало, надо его ещё и собрать правильно.
Первая ошибка обескураживает: "Как же нет иконки? Я ж её вижу!". Переносим объявление android:icon из тега activity в тег application и всё становится на свои места.
Вторая ошибка заставит нас пройти непростой но очень полезный путь...
Что нам понадобится?
- Java jdk - он у нас есть, иначе бы мы ничего не написали :)
- Android sdk - аналогично
- apkTool - очень полезная, как оказывается, утилита. Скачивается двумя архивами под соответствующую платформу. В одном jar, в другом запускающий скрипт и бинарник aapt, который требуется для сборки apk
Идём в bin директорию вашего jdk. Выполняем команду:
./keytool -genkey -v -keystore <имя файла вашего нового хранилища ключей> -alias <имя вашего нового ключа> -keyalg RSA -keysize 2048 -validity 10000
Отвечаем на вопросы "личного характера" :) и получаем хранилище с ключом, который лучше не терять.Шаг 2. "Разбираем" apk
Распаковываем apktool в любой каталог кроме домашнего. В домашнем каталоге apktool создаст каталог с таким же именем. Распаковываем своё приложение без декомпиляции исходников:
apktool d -s <ваш .apk>
В текущем каталоге будет создан каталог по имени apk-файла. В нём находим AndroidManifest.xml и проводим его инспекцию. В теге manifest должны обязательно присутствовать атрибуты:
Первые два служат для отображении версии в Market-е, третий позволит перенести приложение на CD-карту в версиях старше 2.
Для определения минимально допустимой версии Android обязательно должен присутствовать тег:
<uses-sdk android:minSdkVersion="3" />
Версии sdk определяем по простой табличке, которую берём отсюда.
android:versionCode = "1"
android:versionName = "1.0"
android:installLocation="auto"
Первые два служат для отображении версии в Market-е, третий позволит перенести приложение на CD-карту в версиях старше 2.
Для определения минимально допустимой версии Android обязательно должен присутствовать тег:
<uses-sdk android:minSdkVersion="3" />
Версии sdk определяем по простой табличке, которую берём отсюда.
Platform Version | API Level |
---|---|
Android 3.0 | 11 |
Android 2.3.3 | 10 |
Android 2.3 | 9 |
Android 2.2 | 8 |
Android 2.1 | 7 |
Android 2.0.1 | 6 |
Android 2.0 | 5 |
Android 1.6 | 4 |
Android 1.5 | 3 |
В теге activity должны присутствовать атрибуты:
android:label="<имя приложения>"
android:icon="<иконка приложения>"
android:name="<имя окна>"
android:label="<имя приложения>"
android:icon="<иконка приложения>"
android:name="<имя окна>"
Шаг 3: "Собираем" apk
Тут всё просто:
apktool b <каталог с разобранным .apk> <ваш новый .apk>
Шаг 4: Подписываем приложение
Тут кстати, вспоминаем про сгенерированный на первом шаге ключ, переходим в каталог bin вашего jdk и выполняем:
./jarsigner -verbose -keystore <ваше хранилище ключей> <ваш .apk> <алиас ключа из хранилища>
Переходим в каталог tools Android sdk и выполняем команду:
./zipalign -v 4 <неупакованный .apk> <окончательный вариант .apk>
Автору спасибо!
ОтветитьУдалитьОчень полезная статья, спасибо вам! Не могли бы вы рассказать как перенести созданные ключи например на флэшку, чтобы потом вновь подписывать ими?
ОтветитьУдалить