如何将proguard应用到android的AAR库中



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

我在发布这个问题之前谷歌了一下,我发现库项目本身不运行ProGuard,所以他们不使用任何配置,正如这里提到的,点击这里

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

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 构建中。gradle配置与proguardFiles一起,这样,如果应用程序/模块使用AAR运行ProGuard,您的配置(即任何不应该被最小化的公共API除外)将被尊重。

Android库(aar -files)根本没有混淆。在com.android.library -projects中忽略minifyEnabled选项。因此,每个人都可以很容易地反编译aar文件中包含的代码。

相关内容

  • 没有找到相关文章

最新更新