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

android关于annotation的混淆错误

 
阅读更多
在之前的sdk版本中,不会有这个问题, 从level8开始引入了注释。如果代码中有用到,而没有处理,就会出现错误的。主要是注释引起 的。

proguard.cfg还是这个配置文件。
-optimizationpasses 5
-dontusemixedcaseclassnames
#-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-libraryjars D:\\libs\\commons-codec-1.4.jar
-libraryjars E:\\android-sdk-windows\\platforms\\android-15\\android.jar
-libraryjars E:\\android-sdk-windows\\tools\\support\\annotations.jar
//这一句加不加似乎都不影响的。

-libraryjars ./libs/apache-mime4j-core-0.7.jar
-libraryjars ./libs/httpmime-4.1.2.jar
-libraryjars ./libs/signpost-commonshttp4-1.2.1.2.jar
-libraryjars ./libs/signpost-core-1.2.1.2.jar

-keep public class org.apache.james.mime4j.** { public protected *; }
-keep public class org.apache.james.mime4j.codec.** { public protected *; }
-keep public class org.apache.james.mime4j.io.** { public protected *; }
-keep public class org.apache.james.mime4j.parser.** { public protected *; }
-keep public class org.apache.james.mime4j.stream.** { public protected *; }
-keep public class org.apache.james.mime4j.util.** { public protected *; }

-keep public class org.apache.http.entity.mime.** { public protected *; }
-keep public class org.apache.http.entity.mime.content.** { public protected *; }

-keep public class oauth.signpost.commonshttp.** { public protected *; }
-keep public class oauth.signpost.** { public protected *; }
-keep public class oauth.signpost.basic.** { public protected *; }
-keep public class oauth.signpost.exception.** { public protected *; }
-keep public class oauth.signpost.http.** { public protected *; }
-keep public class oauth.signpost.signature.** { public protected *; }

-keep public class com.google.gdata.util.common.base.** { public protected *; }

-keep public class oauth.signpost.commonshttp.** { public protected *; }

这是前面的部分,就要是一些引入的jar不混淆,目前我也没有发现好办法,只有一个包一个包的写了。

然后是:
-keep public class android.** { public protected private *; }


-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>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-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 *Annotation*就可以处理注释属性了。
分享到:
评论

相关推荐

    android jar包混淆

    Android JAR 包混淆详解 Android JAR 包混淆是一种保护 Java 代码的方式,它可以将 JAR 包中的代码混淆,使得攻击者无法轻易地反编译和盗用代码。混淆过程中,需要使用 ProGuard 工具,该工具可以将 JAR 包中的代码...

    Android 实现代码混淆的实例

    例如,反射中使用的类和方法如果被混淆可能会导致运行时错误;网络请求的实体类通常包含敏感信息,不应混淆;使用注解的元素需要保留注解信息以保持功能正常;枚举类型在混淆后可能会影响其在代码中的使用。 混淆...

    Android代码混淆配置

    在Android开发中,代码混淆是一项重要的安全措施,用于保护应用源码不被轻易逆向工程解析。本篇文章将深入探讨Android代码混淆配置的细节,帮助开发者理解如何有效地使用这一技术。 混淆是通过重命名类、方法和变量...

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

    如果遇到混淆后的问题,如找不到类或方法,可以检查日志中的警告和错误信息,或者通过`-keep`规则排除问题。 混淆完成后,我们还需要在`AndroidManifest.xml`中添加混淆后的映射文件路径,以便于调试和异常跟踪: ...

    android 混淆出错 Can't process class 解决办法

    在Android应用开发中,混淆(ProGuard)是一个重要的步骤,用于优化代码、移除未使用的类和方法,以及为发布版本提供安全保护。然而,在混淆过程中可能会遇到各种问题,其中"Can't process class"错误是常见的一种。...

    proguard混淆步骤操作流程

    ProGuard是一款强大的Java字节码处理工具,常用于Android应用的代码混淆、优化、压缩和预校验。在开发过程中,为了保护代码安全,避免反编译,开发者通常会使用ProGuard进行混淆,使得源代码变得难以理解。下面将...

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

    如果遇到运行时错误,可以根据此文件进行反混淆,定位问题所在。 **五、使用ProGuard注意事项** 1. 混淆可能会导致依赖库的问题,确保库已适配混淆或者添加相应的保持规则。 2. 对于依赖的第三方库,部分库可能...

    android显示网络gif图片

    在Android开发中,显示网络GIF图片是一项常见的需求,特别是在社交应用、游戏或者任何需要动态图展示的场景中。这篇文章将深入探讨如何在Android应用程序中加载并显示从网络获取的GIF图片。 首先,我们需要一个能够...

    代码混淆说明

    这一步非常关键,因为不当的混淆可能导致应用出现运行时错误。 3. **修改项目属性**: - 打开`project.properties`文件,在其中添加一行`proguard.config=proguard-project.txt`。这样设置后,当你构建项目时,...

    自定义proguard.jar

    ProGuard是一款强大的Java字节码处理工具,它能够对Java类库或Android应用进行优化、混淆和预校验,从而提高代码的安全性和性能。在Android开发中,ProGuard通常用于保护代码不被逆向工程破解,同时减小APK的大小。 ...

    AndroidProguardPlugin-master.zip_android开发_Java_

    在Android开发过程中,Proguard是一个非常重要的工具,它主要用于代码混淆、优化和压缩,从而提高应用的安全性和性能。本文将详细讲解Proguard在Android开发中的使用及其相关插件的运用。 **1. Proguard的基本概念*...

    AndroidProguardTutorial:设置 proguard 和去混淆堆栈跟踪的教程

    **Android Proguard 教程:设置与去混淆堆栈跟踪** 在Android开发中,Proguard是一个强大的工具,用于优化、压缩、混淆以及移除代码,从而保护应用的安全性,减小APK体积,并提高性能。本教程将详细介绍如何在...

    DataBindingProguard:使用Proguard进行数据绑定的潜在错误示例

    @android.databinding.annotation.* ; @android.databinding.annotation.* ; } ``` 错误示例3:混淆数据模型类 如果你的数据模型类中的字段被混淆,数据绑定可能无法正确解析。你应该明确排除这些类或字段: ```...

    ProGuard rules for RxJava(我用自己的信誉担保,非常完美).zip

    ProGuard是Android开发中的一个静态代码分析工具,用于减小APK大小,优化代码,移除未使用的类、方法和字段,并对类和方法进行混淆,以增加代码的保密性。 在使用RxJava时,ProGuard配置是至关重要的,因为如果不...

    框架xutils

    - 不要混淆xUtils中的注解类型,添加混淆配置:`-keepclass* extends java.lang.annotation.Annotation{*;}`。 - 对使用DbUtils模块持久化的实体类不要混淆,或者注解所有表和列名称。 #### 七、总结 xUtils是一个...

    AndroidLife::notebook_with_decorative_cover:CaMnter的Android学习生活和足迹

    接下来是"Apt",它是Android Annotation Processing Tool的简称,用于处理注解。Apt允许开发者通过在源代码中添加特定注解,自动生成相关的类、方法或者XML配置。例如,Dagger 2就是利用Apt进行依赖注入,使得代码...

    weather-guard:在您的Android项目中实现ProGuard的示例

    ProGuard 是一款强大的代码优化、混淆、shrinking 和预检查工具,常用于 Java 和 Android 开发。它能够帮助开发者减小应用的体积,提高运行效率,并保护代码免受逆向工程的攻击。本文将深入探讨如何在 Android 项目...

    xutils简介.docx

    1. **图片加载优化**:无论是在加载网络图片还是本地图片时都能确保不会发生OOM错误,并且解决了图片错位的问题。 2. **内存管理**:采用LRU(Least Recently Used)算法管理Bitmap对象的内存空间,有助于减少内存...

    TinkerDemo

    Tinker是微信团队开源的一款Android热补丁解决方案,它提供了动态下发和加载补丁的能力,使得开发者能够在用户无感知的情况下修复线上错误。Tinker支持多种类型的应用修改,包括Java代码、资源文件以及So库的更新。 ...

    Butterknife的使用

    Butterknife是一款由Jake Wharton开发的Android绑定库,它极大地简化了在Android应用中将UI元素绑定到Java代码的过程。这款库通过注解的方式,让开发者无需手动编写findViewById()这样的繁琐代码,从而提高开发效率...

Global site tag (gtag.js) - Google Analytics