gpt4 book ai didi

android - 公开发布的Android库无法正确维护

转载 作者:行者123 更新时间:2023-12-03 06:10:43 26 4
gpt4 key购买 nike

我正在公开发布的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.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;
}

但是,该库的发行版本在内部也不 protected 地使用,因此我需要三种类型的构建:调试,发行和保护发行。

为此,我目前为我的图书馆提供了以下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 {
}

但是,当我尝试创建 protected 版本时,我说要保留的所有程序包都会保留,但是我所有要扩展Parcelable的类(除了我说要保留的程序包中的那些类)都会被混淆。

我尝试在计算机上的proguard-android.txt文件中放入一个错误,并且构建没有崩溃,所以我知道该文件实际上并未被读取。但是我不知道该怎么做,以使我所有扩展Parcelable的类都不会被混淆,除了明确告诉proguard不要混淆每一个。

该proguard文件曾经用于我的旧Ant构建,因此我的猜测是我在某种程度上弄乱了gradle构建脚本。谁能告诉我如何?

最佳答案

-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}

ProGuard规则中的此片段仅使类成员处于Parcelable类型中-如果要保留类/成员的命名,则需要添加类似于以下内容的规则:
-keepnames class * implements android.os.Parcelable
您是否有理由不希望混淆这些类型?

关于android - 公开发布的Android库无法正确维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com