Jim*_*tel 7 eclipse android proguard
我想第一次使用Proguard 4.9导出我的应用程序.但是在导出时我在控制台中遇到了奇怪的错误.这里是 -
[2013-06-11 14:59:42 - Project1] Proguard returned with error code 1. See console
[2013-06-11 14:59:42 - Project1] proguard.ParseException: Expecting type and name instead of just '***' before '(' in line 193 of file 'D:\Project Works\Android\Project1\bin\proguard.txt',
[2013-06-11 14:59:42 - Project1] included from argument number 4
[2013-06-11 14:59:42 - Project1] at proguard.ConfigurationParser.parseMemberSpecificationArguments(ConfigurationParser.java:889)
[2013-06-11 14:59:42 - Project1] at proguard.ConfigurationParser.parseClassSpecificationArguments(ConfigurationParser.java:729)
[2013-06-11 14:59:42 - Project1] at proguard.ConfigurationParser.parseKeepClassSpecificationArguments(ConfigurationParser.java:516)
[2013-06-11 14:59:42 - Project1] at proguard.ConfigurationParser.parse(ConfigurationParser.java:165)
[2013-06-11 14:59:42 - Project1] at proguard.ProGuard.main(ProGuard.java:476)
Run Code Online (Sandbox Code Playgroud)
这是第192和193行的bin\proguard.txt文件,其中出现错误
# onClick res/layout/tmenu.xml #generated:77
-keepclassmembers class * { *** (...); }
Run Code Online (Sandbox Code Playgroud)
在我正在使用的project.properties中
target=android-7
proguard.config=proguard.cfg
Run Code Online (Sandbox Code Playgroud)
我是Android SDK,eclipse的插件更新到最新.知道怎么解决它???
编辑 这是我项目中的proguard.cfg
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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 <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
Run Code Online (Sandbox Code Playgroud)
Alv*_*lvi 10
在我的情况下,错误是由于布局文件中的按钮上的空onClick属性.所以我删除了onClick="",错误消失了.
要找到导致此错误的正确布局文件,请转到相应的文件,并找到导致此问题的布局文件.该文件正好位于错误消息中指示的行上方或一行上,如
In line 193 of file 'D:\Project Works\Android\Project1\bin\proguard.txt' or in line 114 of file 'C:..app\build\intermediates\proguard-rules\debug\aapt_rules.txt' .
Run Code Online (Sandbox Code Playgroud)
浏览布局文件并onClick=""在任何视图中查找.去掉它.
希望这会奏效.
错误在
-keepclassmembers class * { *** (...); }
Run Code Online (Sandbox Code Playgroud)
用。。。来代替
-keepclassmembers class mypackage.** { *; }
Run Code Online (Sandbox Code Playgroud)
如果您为 setter/getter 设置此配置,则需要修改为
-keep class mybeans.** {
void set*(***);
void set*(int, ***);
boolean is*();
boolean is*(int);
*** get*();
*** get*(int);
}
Run Code Online (Sandbox Code Playgroud)
其中:“ ***”通配符匹配任何类型(原始或非原始、数组或非数组)。带有 'int' 参数的方法匹配列表属性。
| 归档时间: |
|
| 查看次数: |
10081 次 |
| 最近记录: |