"java.exe"退出代码2 Xamarin.Android项目

Dan*_*_97 27 java android xamarin.android xamarin android-multidex

所以我有我的Xamarin.Android项目,其中包含几个库.当我尝试构建时,我收到一个错误,其中"java.exe"退出代码2.

经过几个小时的谷歌研究后,我发现我可以启用Multidex.根据Jon Doublas的博客文章,我做了上面提到的步骤. http://www.jon-douglas.com/2016/09/05/xamarin-android-multidex/

根据博客文章Android API Level> 21处理Multidex本身.我的经验是,它没有.我在API级别25上构建并使用相同的信息一次又一次地获得相同的错误.文章中的步骤没有帮助.看起来像Xamarin.Android不支持Multidex.

看来你必须自己处理Multidex,但我还没有找到任何有效的解决方案.有没有人找到一个有效的解决方案?

我正在使用Xamarin 4.6和Visual Studio 2017.

Dan*_*_97 37

在我的项目中搜索大约20个小时后找到答案..所以这里是解决问题"java.exe"退出代码2的步骤

1)更改链接中描述的MainDexClasses.bat:

http://www.jon-douglas.com/2016/09/05/xamarin-android-multidex/

2)确保您已在Android应用程序中启用Multi-Dex选项 - !!! 如果MultiDex设置为true,请查看.csprj文件(在我的情况下,即使我启用Multi-Dex也不行)

3)在AndroidManifest文件中添加以下部分

<application android:name="android.support.multidex.MultiDexApplication"></application>
Run Code Online (Sandbox Code Playgroud)

这将告诉你的android-project实际使用给定的MultiDex-Option.

在干净和构建之后,我能够按原样运行我的应用程序.

  • 第2点。在我的情况下,_.csproj_文件只有这一行`&lt;AndroidEnableMultipleDex&gt; true &lt;/ AndroidEnableMultipleDex&gt;`,我必须手动添加`&lt;AndroidEnableMultiDex&gt; true &lt;/ AndroidEnableMultiDex&gt;`使其起作用!注意** MultiDex **而不是** MultipleDex **。感谢转到[此讨论](https://bugzilla.xamarin.com/show_bug.cgi?id=56192)。 (2认同)

Mic*_*cer 29

找到这个问题后,@ Daniel_97s回答我只能通过在项目中添加multidex而不更改MainDexClasses.bat来解决此错误:

  1. 检查项目选项中的选项:

检查项目选项中的选项:

  1. 添加MultiDexApplication到Android Manifest:

    <application android:name="android.support.multidex.MultiDexApplication"></application>
    
    Run Code Online (Sandbox Code Playgroud)

注意我在Visual Studio for Mac和Windows上获得此错误代码2,同一个应用程序正在成功构建.(为什么?)

  • 也许在Windows机器上你只安装了Android API级别> 21,这将决定我的问题中的语句? (2认同)

Hei*_*tad 16

我的解决方案是禁用"使用以下密钥库详细信息签署.APK文件".由于密钥库位置和/或密码不正确,因此退出java.exe并使用代码2.

在此输入图像描述

  • 我添加了multidex但不起作用,我禁用了唱歌并起作用,非常感谢! (2认同)
  • 假设您要分发未签名的APK,而Google Play无法做到这一点... (2认同)
  • @ Le-royStaines,对于发行版本,您显然不能这样做。如我的回答所述,我的密钥库位置不正确(实际上是在不可用的网络路径上)。这只是一般的Java错误消息的另一个原因,其他答案中没有涉及。 (2认同)
  • 更改到正确位置的路径为我修复了它。似乎构建失败可归因于无法在指定位置找到密钥库,即使您只是运行调试构建并且甚至不需要签署 APK。 (2认同)

Ver*_*ynh 10

我只选择> Build> Android Build并选中Enable Multi-Dex它将解决


Le-*_*nes 8

My .csproj file had an entry for the KeyStore that was no longer valid, even thought right-clicking the project and inspecting the properties indicated that I had pointed it to the new location.

Within .csproj look for all instances of <AndroidSigningKeyStore> and update accordingly.


Kle*_*aze 6

我在这个问题上挣扎了很长时间。我在签名时发现了错误的来源 - 当我从公司 TFS 克隆项目 repo 时,Android csproj 文件有 KeyStore 设置和位置的条目。我没有密钥库,驱动器上的位置无效。然后,Visual Studio 在部署时无法对应用程序进行签名,而不是某种 FileNotFoundException,它给了我只用代码 2 退出的 java。所以......

tl; dr:转到android项目属性,选择包签名取消选中“签署apk文件...”(将csproj更改<AndroidKeyStore>true</AndroidKeyStore>为false),瞧,您现在可以运行您的解决方案。

在此处输入图片说明