Вопросы о подготовке apk для Amazon Android App Store

В документации Amazon на удивление отсутствует информация о отправке двоичного процесса. Насколько я могу судить, вы отправляете неподписанный двоичный файл, а они заключают его в свой собственный код и создают подписанный apk?

Остается несколько вопросов:

  1. Amazon App Store выполняет для вас zipalign?
  2. Если ваше приложение уже есть в Android Market (Google), рекомендуется ли использовать то же имя пакета или другое? Какая разница?
  3. Я также видел в другом месте, что они предлагают возможность загрузить подготовленный apk и подписать его своим собственным ключом. Рекомендуется ли взять его, а затем подписать тем же ключом, который вы используете в Android Market? Какая разница?

Есть ли еще какие-то соображения или подводные камни, которые следует знать перед тем, как погрузиться в этот процесс?

Спасибо


person cottonBallPaws    schedule 02.06.2011    source источник


Ответы (4)


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

  2. Вы должны использовать то же имя пакета. В настоящее время дистрибьюторское соглашение Amazon содержит ряд оговорок; Например, цена вашего приложения не ниже в другом магазине приложений. Они также время от времени проверяют актуальность версии вашего приложения, представленной на рынке. Эти проверки в основном выполняются с использованием имени пакета; изменение имени пакета вашего приложения может легко рассматриваться ими как средство уклонения от условий соглашения.

  3. Нет. Могут быть веские причины, по которым кто-то захочет это сделать, но я не могу придумать ни одной. По умолчанию Amazon подписывает ваш apk подписью, характерной для вашей учетной записи разработчика Amazon.

Другой:

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

Изменить: пункт 2 больше не правильный; см. комментарий ниже.

person Michael A.    schedule 24.06.2011
comment
В конце концов, я отправил свое приложение, и я просто привяжу некоторые из своих впечатлений / заметок к этому ответу в надежде, что он может помочь кому-то другому. Я хотел, чтобы подпись была одинаковой на обоих рынках. Чтобы включить возможность загрузки двоичного файла таким образом, вы должны связаться с Amazon и запросить его включение на портале разработчика. Как только это произойдет, вы увидите опцию в двоичном разделе загрузки. В eclipse, если вы щелкните правой кнопкой мыши свой проект и перейдете в инструменты Android, появится опция экспорта двоичного файла без подписи. Загрузите его на Amazon и следуйте инструкциям, которые они предоставляют. - person cottonBallPaws; 29.06.2011
comment
Недавно мне пришлось загрузить свое приложение на Amazon, и определенно существует большой вариант использования для подписания собственного приложения. Если вы используете какой-либо сторонний API, такой как Google Maps или Facebook SSO, вам нужно будет подписать свой рабочий ключ с этими службами, чтобы использовать их в своем приложении. В этом случае вам нужно знать ключ, которым вы подписываете приложение, поэтому вы захотите подписать его своим собственным ключом (не говоря уже об удобстве управления одним ключом для сторонних сервисов). - person onit; 28.02.2012
comment
Ага - с тех пор я также видел пару случаев, когда я лично видел преимущества подписания. - person Michael A.; 04.03.2012
comment
У меня здесь проблема. У меня уже есть приложение в Amazon Appstore, и я согласился на их DRM. Итак, мое приложение на Amazon в настоящее время подписано их ключом. Но в моем следующем обновлении я представлю систему единого входа на Facebook, для которой мне нужно знать ключ, которым он подписан. Как мне справиться с этой ситуацией? - person Sudarshan Bhat; 13.09.2012
comment
Это сложная проблема. Лучше всего, вероятно, просто связаться со службой поддержки разработчиков Amazon напрямую и посмотреть, могут ли они вам помочь. - person Michael A.; 17.09.2012
comment
Ответ на 2-й вопрос уже неверен. См. developer.amazon.com/public. / support / submitting-your-app / Имя пакета каждого приложения должно быть уникальным. Имя пакета каждого приложения, которое вы отправляете в Amazon, должно отличаться от имени пакета, используемого в любом другом магазине приложений, например в Google Play. - person Alex Bitek; 28.07.2014
comment
Спасибо за обновленную информацию; поправил ответ. Есть идеи, почему они внесли это изменение? - person Michael A.; 29.07.2014
comment
Похоже, они изменили его снова, больше не указывая другие магазины: Имя пакета каждого приложения должно быть уникальным. Имя пакета каждого приложения, которое вы отправляете в Amazon, должно отличаться от имени пакета, используемого в любом другом приложении. Чему доверять? - person Murphy; 25.09.2014
comment
Вы должны доверять последней информации, содержащейся в документации Amazon, или, если ее нет, обратитесь в службу поддержки Amazon. С последним изменением они позволяют приложениям иметь одно и то же имя пакета в разных магазинах приложений. Вам нужно только убедиться, что имя пакета вашего приложения уникально в Amazon App Store. - person Alex Bitek; 27.08.2015

Вот ответ, который я получил от группы распространения мобильных приложений Amazon на вопрос о том, следует ли отправлять подписанные или неподписанные apk:

"Вы можете отправить подписанные или неподписанные двоичные файлы в магазин - в любом случае мы применим нашу подпись к вашему приложению. Если вам нужно подписать свое приложение известной подписью (если вы используете Facebook авторизация, например), вы можете выбрать загрузку своего приложения, используя наш процесс самоподписи (вам нужно будет попросить нас, чтобы это было разрешено для вас) ".

Самый простой способ отправить приложение - это экспортировать подписанный apk из Eclipse (все выровненные по zip-файлам готовы к работе), а затем загрузить через портал распространения, используя нашу DRM и подпись.

Для последнего обновления своего приложения я просто взял тот же подписанный apk, который я ранее выпустил в Google Play, и он работал хорошо.

person NULL    schedule 21.01.2013

Я опубликовал только два небольших приложения, которые почти ничего не продают, но оба были одобрены, и я выполнил ту же процедуру, что и при публикации на Android Market: я просто экспортировал подписанный .apk из eclipse и также использовал то же имя пакета. Пока у меня проблем нет, так что вроде нормально.

person David Erosa    schedule 06.06.2011

На практике вы должны выполнять zipalign во время каждой сборки.

Я использую тот же самый процесс сборки для Amazon, что и перед публикацией в Google. Единственное отличие - это переменная интерфейса для определения рыночной ссылки (во время сборки, если / else скомпилировано).

person CrackerJack9    schedule 30.07.2011
comment
Мне было интересно, не могли бы вы прояснить, как вы переключаете свою рыночную ссылку. В настоящее время мне нужно пройти и поменять ссылки Android Market на ссылки Amazon Appstore вручную. В результате получается два разных APK. У вас есть метод, позволяющий создать только один APK? Спасибо - person Tony Chan; 30.09.2011
comment
используя один apk-не то что я в курсе. мой скрипт сборки генерирует несколько apks (pay, demo, google, amazon) для каждой финальной сборки - person CrackerJack9; 01.10.2011
comment
@Turbo устанавливает статический метод в одном классе, а затем делает if (ThisOneClass.IS_MARKET){useMarketLink} else {useAppStoreLink} - person Reed; 06.10.2011
comment
@Jakar Я думаю, он вообще спрашивает, как установить ThisOneClass.IS_MARKET. - person CrackerJack9; 06.10.2011
comment
@Jakar CrackerJack9 правильный. Я понятия не имею, как вы можете проверить (я бы подумал, во время выполнения), с какого Маркета было установлено ваше приложение. В блоге разработчиков Amazon упоминается о возможности создания среды выполнения переключение ссылок, но я не знаю, как это сделать. - person Tony Chan; 07.10.2011
comment
@Turbo Хорошо. Думаю, я как бы неправильно понял. Я думал, что вопрос был больше в том, чтобы избежать двух проектов, а не просто в компиляции двух APK. Если я что-нибудь придумаю, я дам вам знать. - person Reed; 07.10.2011
comment
@Jakar, мы оба правы :) У меня он настроен так же, как и вы, за исключением того, что я установил ThisOneClass.IS_MARKET во время компиляции (что впоследствии полностью удаляет условие if / else). - person CrackerJack9; 07.10.2011
comment
@Turbo Перейдите сюда: stackoverflow.com/questions/7683130/ - person Reed; 07.10.2011
comment
@ crackerjack9 ссылка выше тоже может быть вам интересна. - person Reed; 12.10.2011
comment
@Jakar классный материал, я немного удивлен, что это возможно. Спасибо! Я также хотел бы попробовать метод, о котором вы и @ CrackerJack9 говорили, для управления только одним проектом. Когда CrackerJack говорит о настройке ThisOneClass.IS_MARKET во время компиляции, он просто меняет статическую логическую переменную перед экспортом APK? - person Tony Chan; 12.10.2011
comment
@Turbo Да, это было бы правильно. Во всяком случае, это то, чем я БЫЛ. - person Reed; 14.10.2011
comment
@Turbo Я делаю это во время сборки, <replace dir="${work.src}" token="public static final int MARKET_TYPE = MARKET_GOOGLE;" value="public static final int MARKET_TYPE = MARKET_AMAZON;"> <include name="**/ThisOneClass.java"/> </replace> - person CrackerJack9; 15.10.2011
comment
@Turbo будет ли это работать, если вы подпишете оба APK одинаковой подписью? Вы это проверяли? - person CrackerJack9; 15.10.2011
comment
Примечание из приведенного выше обсуждения. Нет причин для zipalign, если APK собирается отказаться, поскольку отставка отменяет его выравнивание. developer.android.com/guide/publishing/app-signing.html# выровнять - person Jeremy Logan; 08.12.2011