我已经尝试了很多关于如何解决这个问题的解决方案。我的调试工作正常。但就像现在一样,我正在尝试在发布模式下构建我的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);
}
答案 0 :(得分:4)
启用MultiDex
RightClick on Xamarin.Android ---&gt;转到属性 - &gt; AndroidOptions - &gt;现在启用MultiDex
现在清理并重建您的解决方案
我们遇到了类似的问题,并将其钉在了我们的应用程序超过65k方法限制(这可能是您参考Google Play服务时发生的情况)。
https://developer.android.com/studio/build/multidex.html
以下链接对您有用
答案 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。