`
hautxsh
  • 浏览: 60389 次
  • 性别: 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>;
}
分享到:
评论

相关推荐

    Android proguard.cfg

    在Android开发过程中,为了保护应用的安全性和优化代码大小,开发者通常会使用ProGuard工具进行代码混淆、优化和压缩。ProGuard是Android Studio内置的一个强大的工具,它可以将Java字节码转换为更难理解的形式,...

    android-proguard-snippets, 通用Android库的混淆器配置.zip

    android-proguard-snippets, 通用Android库的混淆器配置 android-proguard-snippets通用Android库的混淆器配置。这个项目假设你的混淆器配置是基于最新的官方 proguard-android.txt 配置,如下所示。 每个库配置应该...

    Android混淆 各个版本proguard文件

    4. **使用Proguard的注意事项:** - 混淆可能会导致依赖库的问题,需要添加相应的`-keep`规则来保留关键类和方法。 - 测试混淆后的代码是非常重要的,因为混淆可能导致一些未预见的错误,如反射调用失败、序列化...

    android-sdk目录下tools文件夹下的proguard文件夹

    **五、使用ProGuard注意事项** 1. 混淆可能会导致依赖库的问题,确保库已适配混淆或者添加相应的保持规则。 2. 对于依赖的第三方库,部分库可能已经处理了混淆问题,避免重复混淆。 3. 检查混淆规则,防止关键代码...

    android proguard

    在Android开发中,ProGuard是一个强大的代码混淆、优化和压缩工具。它被广泛应用于发布APK时,以保护代码安全、减小程序体积并提高运行效率。当我们遇到与jPush(极光推送)相关的混淆报错时,理解ProGuard的工作...

    Android Java代码混淆工具:ProGuard简介及使用.docx

    在Android开发中,ProGuard是最广泛使用的Java代码混淆工具之一,它不仅能够混淆代码,还能够对代码进行优化,减少APK的大小,提高运行效率。 #### ProGuard的工作原理 ProGuard通过对类、方法和字段的名称进行...

    android proguard5.3.3混淆包

    android proguard5.3.3混淆包 替换Jar包以后使 混淆的类名方法名变成空白 使用方法 直接 替换 5.3.3版本的 混淆jar包 Mac 路径为 Contents/gradle/m2repository/net/sf/proguard/proguard-base Win gradle/m2...

    ProGuard4.8使用proguard来保护我们的代码

    使用ProGuard时,我们需要编写一个名为 `proguard.cfg` 或 `proguard-project.txt` 的配置文件,其中包含一系列的规则来指定哪些代码需要混淆、优化和压缩。配置文件中的常见选项包括: - `-keep`:保留指定的类或...

    android_proguard-base-6.0.3.zip

    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } 混淆文件里面添加 (自行选择) # 修改包名 -repackageclass "" # 忽略访问修饰符,配合上一句使用 -...

    Android添加Proguard混淆支持完整实例

    在Android开发过程中,为了保护应用的安全性和优化代码大小,开发者通常会使用Proguard工具进行代码混淆。Proguard是一个强大的Java类文件 shrinker、optimizer、 obfuscator 和 preverifier,它能够删除未使用的...

    android-proguard-configs:android proguard 配置

    对于 App,建议使用 proguard-android-app-optimize.txt。 对于库,建议使用 proguard-android-lib.txt。 ##参考 ##执照 Copyright (C) 2015 Snowdream Mobile &lt;yanghui1986527&gt;Licensed under the Apache ...

    proguard4.4混淆器

    在实际使用ProGuard 4.4时,需要注意以下几点: - **保留关键类和方法**:必须明确标记那些不能混淆或需要保留的类和方法,比如接口、公共API、错误处理类等。 - **处理依赖库**:如果项目依赖了第三方库,需要检查...

    Eclipse+ProGuard配置

    需要注意的是,在使用 ProGuard 时,需要注意以下几点: * 需要关闭或暂停杀毒软件,以免与 ProGuard 冲突。 * 需要选择 JDK 路径而不是 JRE 路径,以免出现问题。 * 需要注意红色下划线部分,以免出现错误。 ...

    Android 4.0及以上版本 ProGuard 代码混淆

    ProGuard 是一款广泛应用于 Android 开发中的代码混淆工具,它能够通过删除未使用的类、字段、方法等,从而缩小 APK 的体积,并提高应用运行速度。此外,ProGuard 还能为类、字段、方法等命名,使得反编译后的代码...

    MavenWEB项目使用ProGuard进行混淆,最佳解决方案.docx

    Maven WEB 项目使用 ProGuard 进行混淆,最佳解决方案 本文主要介绍了如何使用 ProGuard 对 Maven WEB 项目进行混淆,解决了 WEB 项目中混淆的难题。文章首先介绍了混淆的必要性,然后详细介绍了 WEB 项目的结构和 ...

    proguard7.3.0

    在使用ProGuard 7.3.0时,用户需要了解如何编写混淆规则文件(`proguard-rules.pro`),这些规则用于指定哪些类、方法和成员需要保留,以及如何混淆。例如,保留库函数、接口或者特定的异常类。 在Android开发中,...

    混淆加密 proguard 5.3.3

    **注意事项**: - 混淆可能会影响第三方库的正常工作,因此需要谨慎处理依赖项。 - 在发布前,应始终对混淆后的代码进行测试,确保所有功能的正常运行。 - 配置文件的编写需要一定的学习和实践,不正确的设置可能...

    Android proguard4.5.1.rar

    **五、注意事项** 1. **混淆冲突**:避免库之间或库与应用的混淆规则冲突,可能导致运行时异常。 2. **混淆日志**:开启`-verbose`选项输出详细的混淆日志,便于分析和调试。 3. **混淆性能**:混淆虽然提高了...

    proguard 、使用说明

    **ProGuard 使用详解** ProGuard 是一款强大的 Java 字节码混淆工具,由 Eric Lafortune 开发,主要用于优化、压缩、混淆和预校验 Java 类文件。在 Android 开发中,ProGuard 被广泛应用于保护应用源代码,避免逆向...

Global site tag (gtag.js) - Google Analytics