2

Я разработал небольшую игру, в которой используются Parse и push notifications (GCM, Google Cloud Messaging). Однако, когда я пытаюсь загрузить приложение в магазин Amazon Store, они говорят, что он не будет опубликован на некоторых устройствах, потому что он использует GCM.Создайте несколько разные АПК с тем же кодом

Итак, решение легко, просто удалите notifications. Проблема в том, что я хочу как можно больше автоматизировать генерацию apk. Под iOS (я разработчик iOS, новичок в Android), я просто создаю 2 цели и используя DEFINE, я могу изменить код в соответствии с целью. Я хотел бы иметь что-то подобное, поэтому я использую еще manifest в версии amazon, и, конечно же, я удаляю код push.

Как это сделать при использовании Android Studio? Я подозреваю, что мне нужно использовать граду или, возможно, концепцию модуля, потому что при создании signed apk в Android Studio мне нужно выбрать “app” module.

У вас есть идеи, предложения или ссылки? Благодарю.

+0

Отдельное приложение должно содержать один манифест. –

+0

У вас не может быть двух проявлений. у вас может быть два модуля приложений, я предполагаю, но я предлагаю иметь два отдельных ветвления VCS вместо дублирования всего кода. –

ответ

7

Вы можете выполнить это, используя ароматизаторы продукта. Каждый вкус продукта может иметь свой собственный AndroidManifest, и манифест каждого аромата будет объединен с манифестом основных приложений во время компиляции. См. Раздел build variants в документации.

В качестве примера, можно определить следующие ароматы продукта

productFlavors { 
    amazon 
    googleplay 
} 

Затем вы можете настроить следующие файлы манифеста

src/main/AndroidManifest.xml 
src/amazon/AndroidManifest.xml 
src/googleplay/AndroidManifest.xml <-- put GCM permissions here 

Вы также можете поместить все ваши Google Play код услуги и зависимых в ваш аромат googleplay, например:

dependencies { 
    googleplayCompile 'com.google.android.gms:play-services-location:7.0.0' 
} 
+0

Спасибо! Я не знал вариантов сборки. Это именно то, что я искал. – Ricardo

3

Как это сделать при использовании Android Studio?

Это работа для product flavors. Создайте аромат google и аромат amazon. Тогда:

  • Использование googleCompile вместо compile, для Play зависимостей Services SDK.

  • Имейте метаданные Службы воспроизведения только в своем выпуске манифеста в google.

  • Введите код, который зависит от SDK Play Services, в наборе источников google. Обратите внимание, что вам может понадобиться отвлечь некоторые крючки на этот код до класса NotificationStrategy, который вы реализуете в каждом вкусе, где работает функция «Службы», а amazon - что-то другое (или ничего). Ваш код в main может затем ссылаться на NotificationStrategy и получить правильную реализацию для каждого аромата.

Смежные вопросы