我刚开始使用proguard,并使用此站点上的文件作为我的proguard.cfg文件:
-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations!code / simplification / arithmetic,!field / ,! class / merge / -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; -keepclasseswithmembers class * {public(android.content.Context,android.util.AttributeSet); -keepclasseswithmembers class * {public(android.content.Context,android.util.AttributeSet,int); -keepclassmembers class * extends android.app.Activity {public void (android.view.View); } -keepclassmembers枚举 {public static * [] values(); public static * valueOf(java.lang.String); -keep class *实现android.os.Parcelable {public static final android.os.Parcelable $ Creator *; }
当我使用eclipse进入已签名的apk导出的最后一步时,我收到错误:
Proguard返回错误代码1.请参阅控制台
控制台说明了这一点:
Proguard返回错误代码1.请参阅控制台[2012-12-27 14:23:16 - FlashActivity] java.io.FileNotFoundException:C:\ Users \ Liam \ workspace \ FlashActivity \ bin \ proguard.txt(系统不能在java.io.的java.io.FileInputStream.open(Native Method)[2012-12-27 14:23:16 - FlashActivity]中找到指定的文件)[2012-12-27 14:23:16 - FlashActivity] FileInputStream . (未知来源)[2012-12-27 14:23:16 - FlashActivity]在java.io.FileReader . (未知来源)[2012-12-27 14:23:16 - FlashActivity]在proguard.FileWordReader . (FileWordReader.java:39)[2012-12-27 14:23:16 - FlashActivity]在proguard的proguard.ConfigurationParser.parseIncludeArgument(ConfigurationParser.java:217)[2012-12-27 14:23:16 - FlashActivity] .ConfigurationParser.parse(ConfigurationParser.java:124)[2012-12-27 14:23:16 - FlashActivity]在proguard.ProGuard.main(ProGuard.java:484)
根据输出判断,我会说我的应用程序 bin
文件夹中应该有一个 proguard.txt
文件,而且没有一个 .
如果我这样做,该文件应该包含什么?
4 回答
您应该使用交互式
android
工具更新Android SDK,然后使用更新项目这应创建
proguard-project.txt
并更新project.properties
以指向此文件 .从adt 17开始,proguard配置文件不是proguard.cfg而是proguard-project.txt
见http://tools.android.com/recent/proguardimprovements
当eclipse无法从sdk目录中读取progaurd文件时,也会出现此问题 .
对我来说,dump.txt文件出现了错误,即使它存在于我的项目中 .
我通过更改project.properties文件中的sdk路径来修复此问题
从
至
我的sdk所在的位置 .
确保minifyEnabled为false