当我试图在互联网上找到解决方案但没有太多与我的案例相关时
问题是下一步,构建失败并收到错误: 错误:未捕获的转换错误:com.android.dx.cf.code.SimException:局部变量类型不匹配:尝试使用int类型的局部变量设置或访问java.lang.Object类型的值。这是忽略局部变量信息的.class转换工具的症状。
我有2个配置
buildTypes {
debug {
debuggable true
minifyEnabled true
signingConfig signingConfigs.defaultKey
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
debuggable false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
问题是如果我关闭调试proguard(minifyEnabled false)我遇到构建问题
Error:Uncaught translation error: com.android.dx.cf.code.SimException: local variable type mismatch: attempt to set or access a value of type java.lang.Object using a local variable of type int. This is symptomatic of .class transformation tools that ignore local variable information.
Error:Uncaught translation error: com.android.dx.cf.code.SimException: local variable type mismatch: attempt to set or access a value of type int using a local variable of type android.util.SparseIntArray. This is symptomatic of .class transformation tools that ignore local variable information.
在启用proguard时禁用Inta-Run
所以无论我做什么,即使我创建单独的proguard文件(调试一个),我也无法超越这一点。 然后放下一个: -renamesourcefile属性SourceFile -keepattributes SourceFile,LineNumberTable -dontobfuscate -dontoptimize -dontpreverify -ignorewarnings
获得相同,尝试使用:multiDexEnabled true 但仍然没有成功 在这种情况下启用proguard我可以构建,正常进行调试/发布,所有工作除了调试(我需要很多)
这是第二天,我有问题,可以'解决这个问题 有人有类似的问题吗?我怎么能解决它?
P.S。 gradle with stacktrace和debug flags让我没什么用,所以没有帮助
答案 0 :(得分:4)
如果我正确理解您的问题,那么只有在调试版本中禁用 ProGuard 时才会遇到问题。
这表明您的某个从属广告系列尚未正确构建,并且包含无效的 LocalVariableTable 或 LocalVariableTypeTable 属性,从而导致出现错误,如图所示在问题中。
启用ProGuard时没有看到问题的原因是ProGuard默认会删除相关属性(除非您添加 -keepattributes xxx 配置)。
要解决此问题,您需要确定哪个jar负责解决问题并获取其正确版本(通过使用ProGuard自行处理它以删除LocalVariable表或获取正确构建的更新版本)。
有时问题是由于ProGuard优化了jar。已知一种特定的优化技术存在问题,应该对库禁用( -optimizations!code / allocation / variable )。
答案 1 :(得分:0)
这是在我从SDK Manager卸载Google Repository后发生的,即使重新安装后问题仍然存在。
我通过关闭Android Studio修复它,从文件系统中删除了一堆与缓存相关的东西,然后重新打开Android Studio。
我删除的部分文件是:
{USERPROFILE}\.gradle
{project}\build
build
{IDE}\tmp