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

时间:2017-05-16 14:22:48

标签: java android xamarin 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。

15 个答案:

答案 0 :(得分:28)

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

1)按照链接中所述更改MainDexClasses.bat:

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

2)确保您在Android应用中启用了Multidex选项!如果.csprj设置为Multidex,请查看true文件(就我而言,即使我启用了Multidex也不是

}

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

<application android:name="android.support.multidex.MultiDexApplication"></application>

这将告诉您的Android项目实际使用给定的Multidex-Option。

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

答案 1 :(得分:23)

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

  1. 检查项目选项中的选项:
  2. Check the option in Project Options:

    1. MultiDexApplication添加到Android Manifest:

      <application android:name="android.support.multidex.MultiDexApplication"></application>
      
    2. 注意我在Visual Studio for Mac和Windows上获得了此错误代码2,同一个应用程序正在成功构建。 (为什么?)

答案 2 :(得分:10)

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

enter image description here

答案 3 :(得分:8)

我只选择&gt;构建&gt; Android Build并选中Enable Multi-Dex它将解决

答案 4 :(得分:4)

我的.csproj文件中的 KeyStore 条目不再有效,甚至想到右键单击该项目并检查属性表明我已将其指向新位置

在.csproj中查找<AndroidSigningKeyStore>的所有实例并进行相应的更新。

答案 5 :(得分:1)

重新分配对我有用的密钥库的路径

==编辑01 ==

双击Android项目> Android程序包签名

在Keystore路径上,不知道为什么,但是显然路径错误,我从同一路径再次选择了.keystore文件,错误“以代码2退出”消失了,我能够存档发布

答案 6 :(得分:1)

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

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

enter image description here

答案 7 :(得分:1)

就我而言,这是指向Hein AndreGrønnestad提到的“使用以下密钥库详细信息签名.APK文件”选项的链接。 位置不正确。

我想提供一条对每个人都适用的路径,所以我使用$ HOME / Library / ...而不是/ Users / Me / Library /...

问题在于$ HOME并不意味着Java有什么特别之处,因此找不到密钥库文件。

解决方案:使用相对路径或绝对路径而不使用$ HOME变量或〜

答案 8 :(得分:0)

如果您仍在使用旧版本,请将Visual Studio更新为最新版本。

如果您认为没有解决方案,请启用Multidex

答案 9 :(得分:0)

在我的情况下,密钥库详细信息之一是错误的,在保存->清理->构建过程后,它可以正常工作。

答案 10 :(得分:0)

尝试重置密钥库或将密钥true更改为false。 只检查。但是请记住,需要将其设置为true。

答案 11 :(得分:0)

从VS Mac切换到VS Windows时出现此错误。

Here the topic Switching From VS Mac To VS Windows got “java.exe” exited with code 2

问题来自Android.csproj和密钥库路径。
 即使我在

上进行了更改,它仍被设置为Mac Path。

VSWindows AndroidProject =>属性=>登录

所以我在Android.csproj(使用第三个文本编辑器编辑)上删除了以下行:

<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyStore>YourMacPath/Alias.keystore</AndroidSigningKeyStore>
<AndroidSigningStorePass>Password</AndroidSigningStorePass>
<AndroidSigningKeyAlias>Alias</AndroidSigningKeyAlias>
<AndroidSigningKeyPass>AliasPassword</AndroidSigningKeyPass>

在调试和发布部分。

然后您可以在VS Windows上对其进行编辑。

希望我帮助了某人。 再见

答案 12 :(得分:0)

使用以下密钥库详细信息作为@Klemikaze禁用.APK文件的签名

答案 13 :(得分:0)

对我来说,这是我的密钥库的问题。按照此 link 启用诊断。这将在输出窗口中为您提供更详细的错误消息。如果它说您的密钥库未能验证,您将不得不修复您的密钥库。这为我解决了问题。

答案 14 :(得分:-1)

我的经历是...

我更新了以下元素:

  • Xamarin.Android.Support.Design
  • Xamarin.Android.Support.v4
  • Xamarin.Android.Support.v7.AppCompat
  • Xamarin.Android.Support.v7.CardView
  • Xamarin.Android.Support.v7.MediaRouter

26.1.0.128.0.0.3

然后,在问题开始于:

“ java.exe”退出,代码为2 Xamarin.Android项目。

我刚刚在Android项目属性中勾选了Enable Multi-Dex。我在Windows系统中使用VS 2017。