Java退出代码1(MSB6006) - Xamarin.Droid

时间:2017-07-17 05:35:49

标签: java c# android xamarin xamarin.android

我已经尝试了很多关于如何解决这个问题的解决方案。我的调试工作正常。但就像现在一样,我正在尝试在发布模式下构建我的apk。当我在发布模式下重新构建时,我收到错误Java exited with code 1 (MSB6006)

在我的Droid项目中启用了Proguard和multi-dex。我的堆大小也已设置为1G。我还在我的Droid项目中创建了一个proguard.cfg文件,但我仍然得到同样的错误。当我检查错误参考时,它会在我的浏览器MSBuild.ToolTask.ToolCommandFailed中找到我。

还有其他我可以解决这个问题吗?

附件是https://gist.github.com/anonymous/9e7fba8cc745ce9ae06fa2c8ae075697 - 完整诊断构建输出。

proguard.cfg

# This is Xamarin-specific (and enhanced) configuration.

-dontobfuscate

-keep class mono.MonoRuntimeProvider { *; <init>(...); }
-keep class mono.MonoPackageManager { *; <init>(...); }
-keep class mono.MonoPackageManager_Resources { *; <init>(...); }
-keep class mono.android.** { *; <init>(...); }
-keep class mono.java.** { *; <init>(...); }
-keep class mono.javax.** { *; <init>(...); }
-keep class opentk.platform.android.AndroidGameView { *; <init>(...); }
-keep class opentk.GameViewBase { *; <init>(...); }
-keep class opentk_1_0.platform.android.AndroidGameView { *; <init>(...); }
-keep class opentk_1_0.GameViewBase { *; <init>(...); }

-keep class android.runtime.** { <init>(***); }
-keep class assembly_mono_android.android.runtime.** { <init>(***); }
# hash for android.runtime and assembly_mono_android.android.runtime.
-keep class md52ce486a14f4bcd95899665e9d932190b.** { *; <init>(...); }
-keepclassmembers class md52ce486a14f4bcd95899665e9d932190b.** { *; <init>(...); }

# Android's template misses fluent setters...
-keepclassmembers class * extends android.view.View {
   *** set*(***);
}

# also misses those inflated custom layout stuff from xml...
-keepclassmembers class * extends android.view.View {
   <init>(android.content.Context,android.util.AttributeSet);
   <init>(android.content.Context,android.util.AttributeSet,int);
} 

2 个答案:

答案 0 :(得分:4)

启用MultiDex

RightClick on Xamarin.Android ---&gt;转到属性 - &gt; AndroidOptions - &gt;现在启用MultiDex

enter image description here

现在清理并重建您的解决方案

我们遇到了类似的问题,并将其钉在了我们的应用程序超过65k方法限制(这可能是您参考Google Play服务时发生的情况)。

https://developer.android.com/studio/build/multidex.html

以下链接对您有用

https://forums.xamarin.com/discussion/44381/project-wont-build-keeps-failing-with-error-message-java-exe-has-exited-with-code-2

答案 1 :(得分:1)

Xamarin.Android上的ProGuard和MultiDex需要一些额外的工作。

与ProGuard相关,它可能会从您的APK中删除一些Java类并导致错误。您需要创建一个proguard.cfg文件并将其Build Action设置为ProguardConfiguration。顺便说一下,没有必要将堆大小设置为1G。

与MultiDex相关,您还需要创建一个扩展Application的MultiDexApplication类。

如果您使用的是适用于Windows的Android SDK,则需要将proguard.jar更新为其最新版本,并更改​​mainClassesDex.bat。