We found an issue on Amazon market
that IAP doesn't work if it's receivers located not in main DEX
file.
The question is how to force gradle
to put specific classes (receivers) into main DEX
file.
EDIT: updated with gradle DEX settings
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')
With Android Plugin for Gradle, Revision 2.2.0 (Released in September 2016) you can use multiDexKeepFile api
android {
buildTypes {
debug {
...
multiDexEnabled true
multiDexKeepFile file('multidex_keep_file.txt')
}
}
}
Where multidex_keep_file.txt
is file with single class per line which needs to be explicitly added to the main dex
com/example/MyClass.class
com/example/MyClass2.class
You can also use multiDexKeepProguard
to keep whole package
-keep class com.example.** { *; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With