Мы обнаружили проблему на Amazon market
что IAP не работает, если приемники расположены не в основном файле DEX
. Вопрос заключается в том, как заставить gradle
помещать определенные классы (приемники) в основной файл DEX
.
EDIT: обновлено с настройками DEX градиента
afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' dx.additionalParameters += "--main-dex-list=class_files.txt" } } dexOptions { javaMaxHeapSize "4g" preDexLibraries = false } compile('com.android.support:multidex:1.0.0')
С Android Plugin для Gradle, версия 2.2.0 (выпущена в сентябре 2016 года), вы можете использовать multiDexKeepFile api
android { buildTypes { debug { ... multiDexEnabled true multiDexKeepFile file('multidex_keep_file.txt') } } }
Где multidex_keep_file.txt
– это файл с одним классом на строку, который должен быть явно добавлен в основной файл
com/example/MyClass.class com/example/MyClass2.class
Вы также можете использовать multiDexKeepProguard
для хранения всего пакета
-keep class com.example.** { *; }
Не нужно вручную добавлять параметры multi-dex к задачам dex.
Это может автоматически обрабатываться плагином Android (с версии v0.14.0).
Удалите раздел afterEvaluate и скомпилируйте ('com.android.support:multidex:1.0.0') из файла build.gradle и вместо этого добавьте следующее:
android { defaultConfig { ... multiDexEnabled = true } }
Плагин достаточно умен, чтобы упаковать все компоненты (получатели среди них) в основной файл dex.
Ансвар Сергея Печеницкого только держит некоторый класс в главном dex, но не генерирует два dex. Добавьте --minimal-main-dex
в свой builg.gradle
. Но это только решить ниже gradle1.5.0
. Вы можете использовать DexKnifePlugin для решения вашей проблемы.
afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' dx.additionalParameters += "--main-dex-list=class_files.txt" dx.additionalParameters += '--minimal-main-dex' } }