在Eclipse中导出Android应用程序时,Proguard似乎没有影响/不运行

时间:2014-08-28 15:43:35

标签: java android eclipse proguard

我即将发布Android应用,并希望使用Proguard来混淆代码。我做了Googles Proguard Guide中描述的所有事情,但Proguard似乎没有运行:

这就是我所做的:

  1. 指南说," proguard.cfg文件是在项目的根目录中自动生成的#34; 我的项目根目录中没有这样的文件但是{ {1}}文件。我认为这是指南所讨论的混淆文件。
  2. 我没有对proguard-project.txt文件进行任何更改。因此,Proguard应该适用于所有类名等。
  3. 我修改了proguard-project.txt并取消注释project.properties行:

    proguard.config=...

  4. 根据指南,这应该是配置Proguard所需的全部内容。运行Proguard所不需要的只是在proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt中构建应用程序。

    我不知道如何在Release mode中公开运行该应用,但正如指南所说,当使用'文件/导出/导出Android应用程序构建应用时,这会自动完成菜单。

    所以,我导出了应用程序以创建APK。 guid说,Proguard每次运行时都会在项目目录中创建多个文件和文件夹,例如: Release modedump.txt等。但这些文件都没有创建。此外,在consosole或日志中没有输出。因此,我认为Proguard没有跑。

    是否有(简单)方法来测试文件是否被混淆/如果Proguard运行了?还有什么我需要做的,让Proguard工作?

2 个答案:

答案 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