从Gradle中的Android库jar中排除BuildConfig.class和R.class

sno*_*eam 3 android gradle android-gradle-plugin

使用Gradle构建Android库项目时,从生成的.jar中排除BuildConfig.class和R.class的正确方法是什么?

Ogn*_*yan 8

可能最优雅的解决方案是在库的末尾添加build.gradle

afterEvaluate {
    generateReleaseBuildConfig.enabled = false
}
Run Code Online (Sandbox Code Playgroud)


Vla*_*lad 6

为了排除 R 和 BuildConfig 使用这个

afterEvaluate {
    generateReleaseBuildConfig.enabled = false
    generateDebugBuildConfig.enabled = false
    generateReleaseResValues.enabled = false
    generateDebugResValues.enabled = false
}
Run Code Online (Sandbox Code Playgroud)

在构建之前不要迷失在清理项目中


sno*_*eam 5

添加自定义任务:

task androidReleaseJar(type: Jar, dependsOn: assembleRelease) {
    from "$buildDir/intermediates/classes/release/"
    exclude '**/BuildConfig.class'
    exclude '**/R.class'
    exclude '**/R$*.class'
}
Run Code Online (Sandbox Code Playgroud)

参考文献:
1. https://github.com/facebook/rebound/blob/master/build.gradle 2. https://github.com/keyboardsurfer/Crouton/blob/master/library/build.gradle 3. HTTPS: //github.com/SnowdreamFramework/android-log/commit/4297a0244c972e3fcb9042b5e12181b21c33b524