`
xuanzhui
  • 浏览: 197087 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android混淆编译

阅读更多

1. Android Studio / Gradle

如果有多个module,只要对application module定义混淆编译即可,

对application module的build.gradle,修改minifyEnabled为true

 

android {
	//...

    buildTypes {
        release {
            minifyEnabled true  //混淆打包
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

 Android Studio会同时使用预定义(默认)的混淆编译规则和自定义的混淆规则(在proguard-rules.pro文件中)。

Android ProGuard Doc

The getDefaultProguardFile('proguard-android.txt') method obtains the default ProGuard settings from the Android SDK tools/proguard/ folder.

 

如果在当前的application module或者依赖的library module中使用了第三方的库,并不需要显式添加规则

-libraryjars xxx

添加了反而有可能在打包的时候遭遇同一个jar多次被指定的错误,

一般只需要添加忽略警告和保持某些class不被混淆的声明。

例如

 

#忽略警告的声明
-dontwarn org.androidannotations.api.rest.**

#保留签名 这个比较重要
-keepattributes Signature

#只有一个 * 表示仅仅是该目录下的类不混淆,子目录依然会被混编
-keep class cn.beecloud.* { *; }

#两个 * 表示该目录下的所有类 包括子目录下的都不混淆编译
-keep class com.google.** { *; }

#一般用到的自定义bean(entity)也需要添加例外
#...

 

 

2. Eclipse ADT

在项目根目录下文件 project.properties 中添加

proguard.config=proguard-project.txt

 

然后在项目根目录下文件 proguard-project.txt 中定义混淆内容,需要添加的内容相对来说比较多,而且

-libraryjars xxx

也是必须的。

 

不额外介绍,网上资源比较多。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics