我即将发布Android应用,并希望使用Proguard来混淆代码。我做了Googles Proguard Guide中描述的所有事情,但Proguard似乎没有运行:
这就是我所做的:
proguard-project.txt
文件进行任何更改。因此,Proguard应该适用于所有类名等。我修改了proguard-project.txt
并取消注释project.properties
行:
proguard.config=...
根据指南,这应该是配置Proguard所需的全部内容。运行Proguard所不需要的只是在proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
中构建应用程序。
我不知道如何在Release mode
中公开运行该应用,但正如指南所说,当使用'文件/导出/导出Android应用程序构建应用时,这会自动完成菜单。
所以,我导出了应用程序以创建APK。 guid说,Proguard每次运行时都会在项目目录中创建多个文件和文件夹,例如: Release mode
,dump.txt
等。但这些文件都没有创建。此外,在consosole或日志中没有输出。因此,我认为Proguard没有跑。
是否有(简单)方法来测试文件是否被混淆/如果Proguard运行了?还有什么我需要做的,让Proguard工作?
答案 0 :(得分:1)
我认为proguard-project.txt的默认版本什么都不做。它可能类似于:
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
#
# Add any project specific keep options here:
#
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
首先尝试向此文件添加内容以检查项目编译时间是否更改。例如:
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify
-renamesourcefileattribute SourceFile
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable,Signature
# Obfuscation
-repackageclasses ''
-flattenpackagehierarchy ''
您还可以检查运行apktool decode YOUR_APK
您的类和方法是否已重命名
我希望这能帮到你!
答案 1 :(得分:1)
非常简单,首先在项目的根文件夹中创建文件名proguard.cfg并定义规则,这是常见的规则:http://pastebin.com/N8GxdvAW 将此行添加到project.properties
proguard.config=proguard.cfg
选择Android工具>导出签名应用程序包,创建密钥库并查看结果。如果您使用任何特殊的库,如果Eclipse无法创建符号apk,您需要定义自己的规则,请参阅proguard手册可能有所帮助。
如果它可以创建一个已签名的apk,你可以在proguard文件夹中看到任何混淆类/常量的mapping.txt