2014-08-28 52 views
0

我即將發佈Android應用程序並希望使用Proguard來混淆代碼。我做的一切都是爲Googles Proguard Guide描述,但Proguard的似乎不運行:在Eclipse中導出Android應用程序時,Proguard似乎沒有效果/不運行

這是我做過什麼:

  1. 資料說,一個「proguard.cfg文件在根目錄下自動生成該項目「我的項目根目錄中沒有這樣的文件,但是有一個proguard-project.txt文件。我認爲這是指南所討論的confic文件。
  2. 我沒有更改proguard-project.txt文件。因此Proguard的應適用於所有類別名稱等
  3. 我編輯的project.properties和註釋掉的proguard.config=...行:

    proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

據導遊介紹,這應該是所有的必要配置Proguard的。所有沒有必要運行Proguard的是在Release mode中構建應用程序。

我不知道如何通過Release mode來運行應用程序,但是如指南所述,這是在使用「文件/導出/導出Android應用程序」菜單構建應用程序時自動完成的。

所以,我導出的應用程序來創建APK。 Guid表示Proguard每次運行時都會在項目目錄中創建多個文件和文件夾,例如, dump.txtmapping.txt等等,但是沒有創建這些文件。另外,consosole或日誌中沒有輸出。因此我認爲Proguard沒有運行。

有沒有(簡單)的方法來測試文件是否被模糊/如果Proguard運行?我還需要做什麼才能讓Proguard工作?

+0

這聽起來像你正在做所有正確的事情。當您輸出時,您是否使用自己的密鑰? Eclipse錯誤日誌顯示什麼? .apk文件實際導出了嗎? – 2014-08-28 17:46:21

回答

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你的類和方法被重命名

我希望這可以幫助您!

+0

非常感謝!我認爲通過指定'proguard-project.txt'的路徑來「激活」Proguard足以啓用基本的混淆,但這不是事實。沒有在'proguard-project.txt'中指定更多細節,Proguard什麼也不做。感謝提示:-) – 2014-08-29 07:46:16

1
也很簡單,首先你在項目中創建的根文件夾中的文件名proguard.cfg和定義規則

,這是一般規律:http://pastebin.com/N8GxdvAW 此行添加到project.properties

proguard.config=proguard.cfg 

然後選擇Android工具>導出簽名應用程序包,創建密鑰存儲並查看結果。如果你使用任何特殊的庫,你需要定義自己的規則,如果Eclipse未能創建符號apk,請參閱proguard手冊可能會有所幫助。

如果它可以創建一個已簽名的apk,你可以看到映射。txt在proguard文件夾中的任何混淆類/常量

相關問題