Проблема с префиксом идентификатора приложения Android - PullRequest
3 голосов
/ 02 марта 2011

Я создаю приложение Adobe Air для Android, и у меня возникла большая проблема. Я опубликовал приложение на рынке Android с использованием старого расширения Flash Air, которое сохранило идентификатор приложения с префиксом «приложение».

Теперь, когда я обновил расширение, теперь он сохраняет идентификатор приложения с префиксом «air».

Это означает, что я больше не могу публиковать обновления своих приложений; так что я могу сделать?

Проблема с использованием устаревшего расширения заключается в том, что после публикации обновления пользователь не может открыть приложение, пока не будут очищены файлы кэша.

Ответы [ 3 ]

8 голосов
/ 16 мая 2013

Существует простая переменная окружения, которую вы можете установить, чтобы легко отключить префикс air..В пакере Adobe AIR существует следующий код:

String optOut = System.getenv("AIR_NOANDROIDFLAIR");
if ((optOut == null) || (optOut.indexOf("true") == -1)) {
  packageName = "air." + packageName;
}

Итак, просто установите для переменной среды AIR_NOANDROIDFLAIR значение true, перепакуйте приложение, и у него не будет префикса air..Google, как установить переменные окружения в windows или mac для вашей конкретной версии ОС.

Например, я использую компилятор командной строки в Mac / Linux, поэтомуЯ запускаю:

> export AIR_NOANDROIDFLAIR=true
> java -jar $AIR_HOME/lib/adt.jar -package -target apk-captive-runtime -storetype pkcs12 -keystore cert.p12 -storepass *** Main.apk Main-app.xml Main.swf

Предупреждение: я не знаю, какое это имеет значение.Согласно чьему-либо примечанию выше, это может быть хорошей идеей только для среды выполнения в неволе (но это стандартная версия AIR 3.8.)этот флаг не должен вызывать проблем.

Перекрестная публикация здесь (немного другой вопрос, тот же ответ).

0 голосов
/ 15 ноября 2014

Недавно я сделал это, и вот мои результаты.
Протестировано и отлично работает с AIR SDK 15, Mac OSX 10.10 Yosemite. окна должны работать аналогично.

Чтобы увидеть все опции в adt.jar

java -jar $AIR_HOME/lib/adt.jar -help

Чтобы включить ANE файлы, добавьте -extdir

export AIR_NOANDROIDFLAIR=true
java -jar /FULL_PATH_TO_AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype pkcs12 -keystore <DEVELOPER>.p12 -storepass <PASSWORD> Main.apk Main-app.xml Main.swf -extdir /PATH_TO_ANE_DIRECTORY

Вместо файла .p12, если у вас есть существующий Android .keystore, используйте -storetype jks

java -jar /FULL_PATH_TO_AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype jks -keystore <DEVELOPER>.keystore -storepass <PASSWORD> Main.apk Main-app.xml Main.swf -extdir /PATH_TO_ANE_DIRECTORY

Например

java -jar /Users/cforcloud/AIR_SDK/lib/adt.jar -package -target apk-captive-runtime -storetype jks -keystore /Users/cforcloud/android.keystore -storepass secretPassword Main.apk Main-app.xml Main.swf -extdir /Users/cforcloud/ane_directory

Найдите дополнительные параметры для пакетов Android APK и настроек Android

Благодаря @ JeffWard

0 голосов
/ 15 марта 2011

Я опубликую свои результаты с этой проблемой на случай, если кому-то еще это понадобится. Подводя итог, я ненавижу говорить, просто опубликуйте ваше приложение как новое.

Я нашел этот пост, в котором рассказывается, как разбить уже скомпилированное приложение, изменить префикс приложения и перекомпилировать его.

http://kb2.adobe.com/cps/875/cpsid_87562.html

Теперь я должен сказать вам, что это не сработало для меня. Я дошел до последнего шага, подписал перепакованное приложение и выложил на рынок. Проблема, с которой я столкнулся, заключалась в том, что оригинальное приложение было подписано с помощью mycert.p12, созданного Adobe Flash CS5. jarsigner (то, что вы используете для подписи приложения) не будет использовать этот сертификат, он сказал, что он был в неправильном формате. Не пытайтесь создать новый сертификат, потому что Android Market ТОЛЬКО позволит вам обновить ваше приложение, используя оригинальный сертификат. Сначала я этого не знал. Хорошо, тогда я обнаружил, что если щелкнуть правой кнопкой мыши (Windows Vista) на сертификате, опция top устанавливает сертификат как другой файл, который затем можно экспортировать из MMC (перейдите в Пуск - Выполнить - введите в MMC) в формат, который jarsigner позволил. Приложение было подписано, и я загрузил его на рынок - ошибка не содержит закрытого ключа ... ОТКАЗ. Если вы посмотрите на сертификат с помощью keytool -list, в котором указан серийный номер, ключи md5 и aes, я бы подумал, что одним из них был бы закрытый ключ. Я никогда не находил способ подписать приложение так, как это позволяет рынок. С тех пор я переиздал приложение, и я постепенно перемещаю своих клиентов, возвращая первую покупку после покупки новой.

Извлеченный урок: оставайтесь в курсе ваших расширений. и что самое важное, СОЗДАЙТЕ СВОЙ ФАЙЛ CERT НА МНОГИЕ МНОГИ Если вы потеряете его, вы не будете обновлять ваши опубликованные приложения снова, по крайней мере, я нашел.

Вот сообщение на форуме из моего исследования этой темы. http://forums.adobe.com/thread/800068?tstart=0

Последнее, что я узнал о рынке. Нет возможности отдать ваше приложение в качестве промо. Они должны купить это. Если вы вернете клиенту, приложение клиента может быть удалено. Хотя я нашел несколько противоречивых историй об этом.

Если вы все еще хотите погрузиться в удачу.

...