如何将特定类放入主DEX文件?

Tar*_*ras 9 android amazon gradle dex

我们发现Amazon market如果IAP的接收器不在主DEX文件中,则该IAP不起作用.问题是如何强制gradle将特定类(接收器)放入主DEX文件中.

编辑:使用gradle 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')
Run Code Online (Sandbox Code Playgroud)

Ser*_*kyi 13

借助适用于Gradle的Android插件,修订版2.2.0(2016年9月发布),您可以使用multiDexKeepFile api

android {
    buildTypes {
        debug {
            ...
            multiDexEnabled true
            multiDexKeepFile file('multidex_keep_file.txt')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪里multidex_keep_file.txt是每行一个类文件,该文件需要显式地添加到主DEX

 com/example/MyClass.class
 com/example/MyClass2.class
Run Code Online (Sandbox Code Playgroud)

您还可以使用multiDexKeepProguard整个包裹

-keep class com.example.** { *; }
Run Code Online (Sandbox Code Playgroud)