`
folie2006
  • 浏览: 33867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android使用了ProGuard时注意的事项

阅读更多

# -------------------------------------
# android 原始混淆模板
# -------------------------------------

# ----------------------------------
#  通过指定数量的优化能执行
#  -optimizationpasses n
# ----------------------------------
-optimizationpasses 5

# ----------------------------------
#   混淆时不会产生形形色色的类名 
#   -dontusemixedcaseclassnames
# ----------------------------------
#-dontusemixedcaseclassnames
# ----------------------------------
#      指定不去忽略非公共的库类
#  -dontskipnonpubliclibraryclasses
# ----------------------------------
#-dontskipnonpubliclibraryclasses

# ----------------------------------
#       不预校验
#    -dontpreverify
# ----------------------------------
# -dontpreverify

# ----------------------------------
#      输出生成信息
#       -verbose
# ----------------------------------
-verbose

# ----------------------------------
#        优化选项
#   optimizations  {optimization_filter} 
# ----------------------------------
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
    native <methods>;
}
# -----------------
# modify 修改合并
# -----------------
-keep public class * extends android.view.View {
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
    public void set*(...);
}

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

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

#--------------------------
# 保护类型   -keepattributes 说明
# Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, 
# LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, 
# RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault
# --------------------
-keepattributes **
-libraryjars <java.home>/lib/rt.jar

# ----------------------
#  不压缩指定的文件
#  -dontshrink
# ----------------------
-dontshrink

# ----------------------
#  不优化指定的文件
#  -dontoptimize
# -----------------------
-dontoptimize

# -----------------------
#  不混淆指定的文件
#  -dontobfuscate
# -----------------------

# ----- 混淆包路径 -------
-repackageclasses ''
-flattenpackagehierarchy ''
-target 1.6

# -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保护的字段及类相关 --------
-keep class com.google.inject.Binder
-keepclassmembers class * {
    @com.google.inject.Inject <init>(...);
}
-keepclassmembers class * {
    void *(**On*Event); 
}
-keepclassmembers class **.R$* {
    public static <fields>;
}

# ------ 编译时需要用到的 jar 包
-libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar

# ------ 保护 谷歌第三方 jar 包,界面特效 ----------
-keep class android.support.v4.**
-dontwarn android.support.v4.**

# ------ 保护百度地址jar包 --------
-keep class com.baidu.mapapi.** { *; }
-dontwarn com.baidu.mapapi.**

# --- 打包时忽略以下类的警告 --
-dontwarn com.classpackage.AA

#-keepnames class * implements java.io.Serializable
# ---------保护所有实体中的字段名称----------
-keepclassmembers class * implements java.io.Serializable {
    <fields>;
}

# --------- 保护类中的所有方法名 ------------
-keepclassmembers class * {
	public <methods>;
}

 

总结:

     无非就是要保护一些反射实现的逻辑,还有如果调用到外部接口(如hessian实现的)时方法名需要保护。

分享到:
评论
3 楼 malaya 2012-11-14  
非常感谢,按您说的已经搞定
2 楼 folie2006 2012-06-25  
malaya 写道
您好,我使用hessian并混淆后出错,能否告知如何保护hessian,谢谢

我也使用了hessian,需要保护的是定义的接口类以及对象的成员变量。
1 楼 malaya 2012-05-10  
您好,我使用hessian并混淆后出错,能否告知如何保护hessian,谢谢

相关推荐

    开源bbs源码java-Android-ProGuard:Android分享:代码混淆那些事

    混淆注意事项 不能混淆 * 在AndroidManifest中配置的类,比如四大组件 * JNI调用的方法 * 反射用到的类 * WebView中JavaScript调用的方法 * Layout文件引用到的自定义View * 一些引入的第三方库(一般都会有混淆说明...

    Android-apk

    Android 反编译 在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很... 注意:反编译的前提是:开发者没有使用proguard(java代码混淆的工具)。

    AndroidProguardScala:使用Scala的Android项目的Eclipse构建器

    AndroidProguardScala是一个Eclipse插件,当您在Android上使用Scala时,可以加快开发过程。 Scala + Android要求在每个版本上都运行Proguard。 太慢了该插件监视代码更改,并在未发生重大更改的情况下避免运行...

    Android-DFU-Library:具有DFU功能的库,适用于Android 4.3+

    如果您使用proguard / R8,则将以下行添加到您的proguard规则中(尽管应该自动添加):- -keep class no.nordicsemi.android.dfu.** { *; } -keep class no.nordicsemi.android.dfu.** { *; } 需要位置许可 如果您...

    Android帮助文档及一些资料打包放送

    [Android1_6]继承BaseAdapter为GridView设置数据时设置setLayoutParams时注意 - 农民伯伯 - 博客园.mht349.26 KB [Android]ListView性能优化之视图缓存 - 农民伯伯 - 博客园.mht513.31 KB [Android]ListView性能优化...

    xUtils jar包3个版本

    使用xUtils快速开发框架需要有以下权限: &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; 混淆时注意事项: 添加...

    Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发

    在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。 新建一个项目的时候,会自动生成project.properties和proguard-project.txt文件,无需自己新建,如果你的...

    BestForAndroid:本项目意在使用Android最好用的代码和设计模式

    注意:所有第三方库需要加入混淆配置到proguard-rules.pro文件 #资源文件命名 模块号+ 描述 + [ 类型(状态)] ##例如 home_bg_img home_message_btn_img #资源id命名 类型 + 模块 + 功能 ##例如 iv_home_bg tv_home...

    Android 混淆代码详解及实例

    1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心删掉了,没关系,从其他地方拷贝一个过来 2. 最重要的就是在proguard-project.txt添加混淆...

    适用于Android / Java的简单DI API-Android开发

    注意:Motif的早期版本在引擎盖下生成了Dagger代码。 这已不再是这种情况。 其他资源Dagger Interoperab Motif Motif是一个DI库,提供针对嵌套范围进行了优化的简单API。 注意:Motif的早期版本在引擎盖下生成了...

    4DRB-RoadRunner:这是正确的

    注意: Road Runner处于alpha状态,其许多API正在酝酿中。安装有关在您自己的项目中设置Road Runner的更多详细说明,请参阅。 使用git clone https://github.com/acmerobotics/road-runner-quickstart下载或克隆此...

    Team5881_Example:Team5881的示例代码(仅是带有4个麦克纳姆轮和里程表的机器人的简单代码集)(希望)将在Wiki中提供文档。

    注意: Road Runner处于alpha状态,其许多API正在酝酿中。安装有关在您自己的项目中设置Road Runner的更多详细说明,请参阅。 使用git clone https://github.com/acmerobotics/road-runner-quickstart下载或克隆此...

    AICitizens-19066

    注意: Road Runner处于alpha状态,其许多API正在酝酿中。安装有关在您自己的项目中设置Road Runner的更多详细说明,请参阅。 使用git clone https://github.com/acmerobotics/road-runner-quickstart下载或克隆此...

Global site tag (gtag.js) - Google Analytics