未捕获的翻译错误构建proguard

Posted

技术标签:

【中文标题】未捕获的翻译错误构建proguard【英文标题】:Uncaught translation error Build proguard 【发布时间】:2016-02-22 16:24:46 【问题描述】:

当我尝试使用 android StudiominifyEnabled 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”

构建 riak:“rebar_core 中未捕获的错误”

尝试构建钢筋时出现“未捕获的 rebar_core 错误”

未捕获的错误:[HMR] 热模块更换已禁用