gpt4 book ai didi

android - 如何将proguard应用于android中的AAR库?

转载 作者:太空狗 更新时间:2023-10-29 14:45:58 24 4
gpt4 key购买 nike

我已经开发了一个 Android AAR 库,其中包含客户需要的所有功能,我想在将其交付给客户之前在库上应用混淆器,以便混淆代码,使代码不容易反编译。

我在发布这个问题之前用谷歌搜索了一下,发现库项目本身不运行 ProGuard,因此它们不使用任何配置,如此处所述 Click Here

为了在我的库项目中应用混淆器,我已经完成了以下配置。

buildTypes {

debug {
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

我已经在 proguard-rules.pro 上应用了这个规则

 -keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {
public protected *;
}

-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}

-keepclasseswithmembernames class * {
native <methods>;
}

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}

但是在我的演示项目上使用这个 aar 之后,库得到了正确的使用,但代码没有被隐藏,它只是在 android studio 中反编译后可见,因为我们只需按住 ctrl 并单击该方法来反编译方法,所有方法都包含只是在没有对该库应用任何混淆规则的情况下可见。

请建议我相关的方式或告诉我我采取了哪些错误的步骤,因为我是 android 的新手。

最佳答案

AAR 模块确实可以被混淆。

consumerProguardFiles 'proguard-rules.pro' 添加到您的 AAR build.gradle 配置以及 proguardFiles,这样如果应用/如果使用 AAR 的模块运行 ProGuard,您的配置(即任何不应该缩小的公共(public) API 排除项)将被接受。

关于android - 如何将proguard应用于android中的AAR库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40232189/

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