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

问题描述 投票:19回答:11

所以我有我的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。

java android xamarin xamarin.android multidex
11个回答
31
投票

在我的项目中搜索大约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。

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


0
投票

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


0
投票

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

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

问题来自Android.csproj和Keystore Path。 即使我更改了它,它也被设置为我的Mac Path

VS Windows Android Project =>属性=>登录

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

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

在调试和发布部分。

然后,您可以在VS Windows上编辑它们。

希望我能帮助别人。拜拜


0
投票

禁用使用以下密钥库详细信息签署.APK文件@Klemikaze


25
投票

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

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

Check the option in Project Options:

  1. MultiDexApplication添加到Android Manifest: <application android:name="android.support.multidex.MultiDexApplication"></application>

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


11
投票

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

enter image description here


9
投票

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


6
投票

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

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


2
投票

重新分配为我工作的密钥库的路径

==编辑01 ==

双击Android Project> Android Package Signing

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


2
投票

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

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

enter image description here


0
投票

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

如果您认为没有解决方案,那么去启用Multidex


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.