我有一个Android库项目和一个使用该库项目的应用程序。在app的build.gradle文件中,我让ProGuard模糊整个应用程序,包括库项目代码:
//from the app project
buildTypes{
release {
runProguard true
proguardFile 'proguard-project.txt'
}
debug{
runProguard false
}
}
一切正常,lib项目和app项目都被混淆得很好。 但是,我想构建我的lib项目" standalone ",所以我可以在没有app项目的情况下分发它。这当然意味着自己对lib项目进行模糊处理。
我无法通过使用lib-projects buildTypes
中的build.gradle
代码并简单地运行proGuard来实现这一点,因为这会破坏app-project构建,因为构建应用程序会编译其代码再次使用已经混淆的lib-project代码......: - )
如果我在" standalone"中构建lib-project,我需要运行ProGuard 的可能性。模式,例如通过传递参数或执行特殊任务。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
自己解决了。在lib-project的构建文件中,我有两个构建类型,我将它们都发布:
publishNonDefault true
和构建类型:
buildTypes {
debug {
debuggable true
runProguard false
}
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
这会导致创建debug
和release
APK。在我的app项目的构建文件中,我通过声明依赖关系为debug configuration
添加显式依赖项,如下所示:
dependencies{
compile project(path: ':FancyLibProject', configuration: 'debug')
//...
}
当然在app-project中我还有两种构建类型debug和release,它们以与lib-project相同的方式调用ProGuard。
注意:我省略了发布版本的签名配置 - 如果没有那些APK将无法安装!