未捕获的翻译错误构建proguard
Posted
技术标签:
【中文标题】未捕获的翻译错误构建proguard【英文标题】:Uncaught translation error Build proguard 【发布时间】:2016-02-22 16:24:46 【问题描述】:当我尝试使用 android Studio
和 minifyEnabled true
构建我的项目时遇到此错误。
错误详情
:app:transformClassesWithDexForDevDebug
Uncaught translation error: com.android.dx.cf.code.SimException: expected type int but found com.apptimize.hz
Uncaught translation error: com.android.dx.cf.code.SimException: expected type int but found com.apptimize.oa
2 errors; aborting
我该如何解决?
更新*
Proguard 文件的内容。
-优化通过 5 -dontusemixedcase类名 -dontskipnonpubliclibraryclasses -dontpreverify -详细 -优化 !code/simplification/arithmetic,!field/,!class/merging/
-不要警告 android.support.** -不要警告 com.atinternet。** -dontwarn org.apache.**
-保持公共类 * 扩展 android.app.Activity -保持公共类 * 扩展 android.app.Application -keep public class * 扩展 android.app.Service -保持公共类 * 扩展 android.content.BroadcastReceiver -保持公共类 * 扩展 android.content.ContentProvider -保持公共类 * 扩展 android.app.backup.BackupAgentHelper -keep public class * 扩展 android.preference.Preference -保持公共类com.android.vending.licensing.ILicensingService
-keepattributes InnerClasses -keepattributes 注释 -keepattributes 签名
-keepclasseswithmembernames class * 本国的 ;
-keepclasseswithmembers class * 公共(android.content.Context,android.util.AttributeSet);
-keepclasseswithmembers class * 公共(android.content.Context,android.util.AttributeSet,int);
-keepclassmembers class * extends android.app.Activity public void *(android.view.View);
-keepclassmembers 枚举 * 公共静态 **[] 值(); 公共静态 ** valueOf(java.lang.String);
-keep class * 实现 android.os.Parcelable public static final android.os.Parcelable$Creator *;
-不要警告 java.awt.** -dontwarn CompatHoneycomb -keep class android.support.v4. *;
-keep class com.squareup.okhttp.** *; -dontwarn uk.co.senab.photoview.** -keep class uk.co.senab.photoview.** *;
我用'com.android.tools.build:gradle:1.5.0'
我的 proguard 文件有问题吗?
【问题讨论】:
您是否配置了 ProGuard 以与 aaptimize 一起正常工作?见apptimize.com/docs/installation/android-install 我以前从没用过 aaptimize。 你应该在这里发布你的 proguard 配置 @KingfisherPhuoc 我更新了我的帖子。 【参考方案1】:在Compile with Proguard gives SimException: "local variable type mismatch"查看农夫的回答
添加此项以禁用触发 proguard 错误的特定优化。
-优化!代码/分配/变量
为我工作。
【讨论】:
好吧没有帮助我。得到这个AGPBI: "kind":"error","text":"Uncaught translation error: com.android.dx.cf.code.SimException: type mismatch: expected array type but encountered java.lang.Object","sources":[]
。上帝只知道现在该做什么。【参考方案2】:
经过 3 到 4 天的详细探索后,我也遇到了同样的问题。问题出现在 gradle 版本以及处理 dex 和类的方式中。
解决这个问题
有两种情况
案例 1: 由于 android 测试用例与 Mock 和 Instrumentation 测试用例有很多复杂性。为了通过测试用例,我们必须禁用 minifyEnabled false 这会禁用 progaurd 进程 testCoverageEnabled false 。如果启用 testCoverageEnabled true 这会导致此问题。对于应通过测试用例,您必须在调试模式下禁用 progaurd 和 testCoverageEnable false 。
debug
minifyEnabled false
debuggable true
testCoverageEnabled false
proguardFile 'proguard-rules.pro'
案例 2:定义 testProgurdFile 并在调试模式下将 minifyEnabled 设置为 true。
Compile with Proguard gives SimException: "local variable type mismatch" 如下定义 testProgurdFile 将用于测试,您可以在其中指定 testFramework 使用的测试程序规则。
debug
minifyEnabled true
debuggable true
testCoverageEnabled true
proguardFile 'proguard-rules.pro'
testProguardFiles 'test-proguard-rules.pro'
参考链接:
proguard gradle debug build but not the tests
https://code.google.com/p/android/issues/detail?id=159831
Android - gradle testProguardFile - what is its purpose relating to unit tests
What are list of tasks thats ConnectedAndroidTest executes?
【讨论】:
以上是关于未捕获的翻译错误构建proguard的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio - build.gradle 未捕获翻译错误 ExecutionException OutOfMemory 中的问题
未捕获的翻译错误:com.android.dx.cf.code.SimException:在没有 --min-sdk-version >= 24 的情况下使用默认或静态接口方法
未捕获的类型错误:运行 create-react-app 构建版本时无法读取未定义错误的属性“mountComponent”