【发布时间】:2016-06-28 11:43:06
【问题描述】:
我有一个带有一个类的 android 库,我想让它成为一个 .aar 库。当我将minifyEnabled 设置为true 时,另一个android 项目无法使用该库(如果minifyEnabled 设置为false 很好)。我想问一下带AAR库的proguard的正确配置是什么
HelloWorld.java
package com.example.hello;
import android.util.Log;
public class HelloWorld {
public static void Hello(){
Log.v("HelloWorld","Hello World!");
}
}
build.grandle
apply plugin: 'com.android.library'
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.0.0'
}
proguard-rules.pro
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
-keep class com.example.hello {public *;}
【问题讨论】:
-
你能不能把proguard-rules的最后一行改成
-keep class com.example.hello.** {public *;} -
@basilisk 好像可以,但是android studio还是可以反编译正常吗?另外,这是处理依赖库的正确方法吗?
-
@Joshua 任何 APK 都可以被反编译。 Proguard 不会以任何方式保护 APK 或库。它只对不属于 API 的类进行一点混淆。
标签: android android-proguard aar