问题是使用最新版Proguard5.3.2收费的混淆 . 我的电脑环境是build,eclipse,android 22和java level 1.6 . 使用Proguard收费后,会创建dump.txt,mapping.txt,seeds.txt和usage.txt文件 .
但是,Obfuscation不适用于由导出签名的Android应用程序生成的apk . 请让我知道我错误地应用于源代码 .
关于简单的键事件,我附上了完整的source(https://www.dropbox.com/s/2ir1y8xea28l9uj/KeyEvent.7z?dl=0) . 选项是默认选项(工具> proguard> proguard-android.txt),我没有改变任何东西
感谢您提前与我们进行合作,我期待很快收到您的回复 .
简单的一步
1 project.properties添加proguard路径
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
proguard-android.txt android默认设置不编辑
2更新程序
proguard 5.3.2
3制作了proguard文件夹和文件
dump.txt , mapping.txt ,seeds.txt ,usage.txt
4导出单挑的Android应用程序
no error , made singned apk
5输出apk - > decomplie但不混淆mapping.txt
com.superdroid.test.event.key.MainActivity ->
com.superdroid.test.event.key.MainActivity:
long mExitModeTime -> a
decomple apk源码
MainActivity.class not change (mExitModeTime -> a)
private long mExitModeTime = 0L;
3 回答
ProGuard不会混淆从
Activity
扩展的类,正如Eric LaFortune(ProGuard的原作者)回答here所述 .您可以通过检查
usage.txt
文件找到已经混淆的Java类的完整列表,而未保留的类列在seeds.txt
中 .我担心你实际上要做的是保存密码或一些其他静态字段,如字符串或int,你不想从apk中检索 . 不幸的是,你做不到 . 据我所知,常量将始终存在于apk中的某个位置,即使您没有将其放入活动中 . 如果有一些受保护的内容,如密码,那么你不应该硬编码 . 您必须有另一种模式才能将其纳入代码,例如让用户输入它 .
如果你想混淆所有的Activity类和所有字符串(比如密钥,密码......),你可以尝试另一种解决方案:Bg+ Anti Decompiler/Obfuscator
Obfuscated sample