公开发布的Android库未正确进行防护
我在一个公开发布的android库上工作。对于外部版本,我需要使用以下选项运行proguard:公开发布的Android库未正确进行防护,android,gradle,android-gradle-plugin,proguard,android-proguard,Android,Gradle,Android Gradle Plugin,Proguard,Android Proguard,我在一个公开发布的android库上工作。对于外部版本,我需要使用以下选项运行proguard: -keep public class com.example.package_one.* { public protected *; } -keep public class com.example.package_one.subpackage_one.* { public protected *; } -keep public class com.example.package_one
-keep public class com.example.package_one.* {
public protected *;
}
-keep public class com.example.package_one.subpackage_one.* {
public protected *;
}
-keep public class com.example.package_one.subpackage_two.* {
public protected *;
}
-keep public class com.example.package_one.subpackage_three.* {
public protected *;
}
-keep public class com.example.package_one.subpackage_four.* {
public protected *;
}
-keep public class com.example.package_one.subpackage_four.sub_subpackage_one.* {
public protected *;
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
但是,库的发布版本也在内部使用,因此我需要三种类型的构建:调试版本、发布版本和预发布版本
为此,我的库目前有以下build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 17
targetSdkVersion 23
}
sourceSets {
main {}
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
buildTypes {
debug {}
release {}
proguarded{
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
}
但是,当我尝试创建Proguard build时,我说要保留的所有包都被保留了,但是我所有扩展Parcelable的类(我说要保留的包中的类除外)都被混淆了
我试着在我的计算机上的proguard-android.txt文件中放入一个bug,但是构建没有崩溃,所以我知道该文件实际上没有被读取。但我不知道该怎么做才能使我所有扩展Parcelable的类都不被混淆,除了显式地告诉proguard不要混淆每个类
这个proguard文件也曾用于我的旧Ant构建,所以我猜我不知怎么搞砸了我的gradle构建脚本。谁能告诉我是怎么回事吗?
-keepclassmembers类*实现了android.os.Parcelable{
静态**创建者;
}
ProGuard规则中的此片段仅保留可包裹类型的类成员-如果要保留类/成员的命名,则需要添加类似于以下内容的规则:
-keepnames类*实现android.os.Parcelable
您不想让这些类型混淆有什么原因吗?这一行是从proguard手册的Android项目示例中复制的。为了使parcelable类工作,proguard-android.txt文件包含以下内容:-keepclassmembers类*实现android.os.parcelable{public static final android.os.parcelable$Creator;}无法对CREATOR类成员进行模糊处理,以使Parcelable对象能够在具有不同级别的进程之间可靠地对自身进行打包和解打包。