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

"java.exe" exited with code 2 Xamarin.Android project

所以我的 Xamarin.Android 项目包含多个库。当我尝试构建时,我收到一条错误消息,显示 "java.exe" 已退出,代码为 2。

经过几个小时的 google 研究,我发现我可以启用 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。

在我的项目中搜索了大约 20 小时后找到了答案.. 下面是解决问题 "java.exe" exited with code 2

的步骤

1) 按照 link:

中的描述更改 MainDexClasses.bat

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

2) 确保您在 Android 应用程序中启用了 Multidex 选项!如果 Multidex 设置为 true,请查看 .csprj 文件(在我的例子中,即使我启用了 Multidex

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

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

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

清理和构建后,我能够运行我的应用程序。

在找到这个问题和@Daniel_97s 回答后,我只能通过在不更改 MainDexClasses.bat:

的情况下向项目添加 multidex 来解决这个错误
  1. 勾选项目选项中的选项:

  1. MultiDexApplication 添加到 Android 清单:

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

请注意,我在 Visual Studio 上为 Mac 收到此错误代码 2,在 Windows 上成功构建了同一应用程序。 (为什么?)

我只转到选项 > 构建 > Android 构建并选中启用 Multi-Dex 它将解决

我的解决方案是禁用 "Sign the .APK file using the following keystore details"。由于密钥库位置 and/or 密码不正确,java.exe 以代码 2 退出。

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

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

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

==编辑 01==

双击 Android 项目 > Android 包签名

在 Keystore 路径上,不知道为什么,但显然路径是错误的,我从同一路径重新select .keystore 文件,错误 "exited with code 2" 消失了而且我能够存档以供发布

在我的例子中,密钥库详细信息之一是错误的,在保存 -> 清理 -> 构建过程后它起作用了。

尝试重置密钥库 <AndroidSigningKeyStore> 或将密钥更改为 false

>

<AndroidKeyStore>true</AndroidKeyStore>

只是为了检查。但是记住需要设置为true。

清理并重建解决方案后。

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

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

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

tl;dr:转到 android 项目属性,select 包签名取消选中 "Sign the apk file..."(将 csproj <AndroidKeyStore>true</AndroidKeyStore> 更改为 false)瞧,你可以现在 运行 你的解决方案。

我在从 VS Mac 切换到 VS Windows 时遇到了这个错误。

问题来自 Android.csproj 和密钥库路径。
它被设置为我的 Mac 路径,即使我在

上更改了它

VSWindows AndroidProject => 属性 => 登录

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

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

关于调试和发布部分。

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

希望我帮助了别人。 再见

禁用以@Klemikaze 身份使用以下密钥库详细信息对 .APK 文件进行签名

在我的例子中,这是 link 到 "Sign the .APK file using the following keystore details" 选项,正如 Hein Andre Grønnestad 提到的。 位置不正确。

我想设置一条适合所有工作人员的路径,所以我使用了 $HOME/Library/... 而不是 /Users/Me/Library/...

问题是 $HOME 对 java 没有任何特殊意义,因此找不到密钥库文件。

解决方法:使用相对路径或绝对路径,不用$HOME变量或~

我的经验是...

我更新了以下元素:

  • 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" exited with code 2 Xamarin.Android project.

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

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

对我来说,事实证明我安装了 Eclipse Temurin JDK 并且正在使用它。在 VS Tools>Options>Xamarin 中,我将 Java Development Kit Location 的路径从 Eclipse 路径更改为 C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot。 也许更重要的是,我发现 运行 正在使用 Eclipse Temurin JDK: msbuild /bl /t:"恢复;SignAndroidPackage" 在我的解决方案目录中,然后打开生成的 msbuild.binlog 并单击一些错误,Eclipse 的路径脱颖而出。您的问题可能有所不同,但以这种方式找到它可能是解决问题的关键。 编辑:关闭并重新打开 VS 2019 后,我的设置没有保留。此时我开始使用 VS 2022 并且没有问题。

注意:Multi-dex 已启用。

经过 5 小时的查找或回答,这是我得出的结论 -

  1. 在 Visual Studio 中启用诊断 MSBuild 输出,以便您可以查看有关错误的更多详细信息:
  • Click Tools > Options...
  • In the left-hand tree view, select Projects and Solutions > Build and Run
  • In the right-hand panel, set the MSBuild build output verbosity dropdown to Diagnostic, Click OK
  • Clean and rebuild your package. Diagnostic output is visible within the Output panel.
  1. 如果您的错误显示“java.io.IOException:无效的密钥库格式”,您可能使用了过时的 Java sdk 文件,所以下一步:

Open Visual Studio and update the Java Development Kit Location to point to the new JDK under Tools > Options > Xamarin > Android Settings > Java Development Kit Location:

一定要重启Visual Studio。