【问题标题】:"java.exe" exited with code 2 Xamarin.Android project“java.exe”退出代码 2 Xamarin.Android 项目
【发布时间】:2022-04-26 22:35:53
【问题描述】:

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

【问题讨论】:

  • 请告诉我们您在项目中安装了哪些库?
  • 我安装了很多,例如firebase、pubnub、playservices(packed) 和一些用于特殊设备的扫描器库。
  • 我在安装 nugget 包后遇到了同样的错误
  • @AjaySharma 是的,我相信如果你达到了 ~65k 的方法限制,它可以随时发生 :) 试试它可能对你也有帮助的答案

标签: java android xamarin xamarin.android android-multidex


【解决方案1】:

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

1) 按照链接中的说明更改 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。

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

【讨论】:

  • 第3点。见MultiDexApplication
  • 第 2 点。在我的情况下,.csproj 文件只有这一行 &lt;AndroidEnableMultipleDex&gt;true&lt;/AndroidEnableMultipleDex&gt;,我必须手动添加 &lt;AndroidEnableMultiDex&gt;true&lt;/AndroidEnableMultiDex&gt; 才能使其工作!注意 MultiDex 而不是 MultipleDex。谢谢this discussion
  • @Elisa 我的一位同事不得不像你一样面临同样的问题,我真的不知道为什么会发生这样的事情,但只要我们能解决它们,我想可能没问题...
  • @Elisa 在哪个标签中是 AndroidEnableMultipleDex 标签?我没有这些标签。
  • @MichaelAlexanderMontero 这个标签&lt;PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "&gt;
【解决方案2】:

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

  1. 勾选项目选项中的选项:

  1. MultiDexApplication 添加到Android Manifest:

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

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

【讨论】:

  • 也许在 windows 机器上你只安装了 android API level(s) >21 这将决定我的问题中的陈述?
  • @Daniel_97 是的,这很可能是原因。
【解决方案3】:

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

【讨论】:

  • 我添加了 multidex 但不起作用我禁用了唱歌和工作,非常感谢!
  • 假设您要分发未签名的 APK,而 Google Play 无法做到这一点...
  • @Le-royStaines,您显然不能为发布版本执行此操作。如我的回答所述,我的密钥库位置不正确(实际上在不可用的网络路径上)。这只是一般 java 错误消息的另一个原因,其他答案未涵盖。
  • 将路径更改为正确的位置为我修复了它。似乎构建失败可归因于无法在指定位置找到密钥库,即使您只是在运行调试构建并且甚至不需要签署 APK。
  • 在我的情况下,我重命名了包含密钥库的文件夹,因此更改路径解决了问题。
【解决方案4】:

我只去选项 > Build > Android Build 并检查 Enable Multi-Dex it will resolve

【讨论】:

  • 您是否使用与 OP 相同版本的 Xamarin 和 VS?
  • 我使用VS 7.2版(build 636)
  • 谢谢,这节省了我的时间!
  • 我实际上不得不添加&lt;AndroidEnableMultiDex&gt;true&lt;/AndroidEnableMultiDex&gt; 行,看起来我的不知何故被消灭了。在我把它放回去,重新加载项目并重建后,它工作得很好。
【解决方案5】:

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

在 .csproj 中查找 &lt;AndroidSigningKeyStore&gt; 的所有实例并进行相应更新。

【讨论】:

  • 伙计,你是救生员,谢谢。你的解决方案是唯一有效的:)
【解决方案6】:

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

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

【讨论】:

    【解决方案7】:

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

    ==编辑 01==

    双击Android Project > Android Package Signing

    在 Keystore 路径上,不知道为什么,但显然路径错误,我再次从同一路径重新选择 .keystore 文件,错误“exited with code 2”消失了,我能够存档发布

    【讨论】:

    • 我不确定你的意思,你能否详细说明你的答案,说明你是如何做到的以及为什么它是解决方案?
    【解决方案8】:

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

    【讨论】:

      【解决方案9】:

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

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

      问题来自 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 上编辑它们。

      希望我帮助了某人。 再见

      【讨论】:

        【解决方案10】:

        在我的情况下,这是指向 Hein Andre Grønnestad 提到的“使用以下密钥库详细信息签署 .APK 文件”选项的链接。 位置不正确。

        我想为工作中的每个人提供一条可行的路径,因此我使用了 $HOME/Library/... 而不是 /Users/Me/Library/...

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

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

        【讨论】:

          【解决方案11】:

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

          【讨论】:

          • 这也是我的问题。谢谢!
          【解决方案12】:

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

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

          【讨论】:

            【解决方案13】:

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

            【讨论】:

              【解决方案14】:

              尝试重置密钥库&lt;AndroidSigningKeyStore&gt; 或更改为假密钥

              >

              <AndroidKeyStore>true</AndroidKeyStore>
              

              仅用于检查。但请记住,它需要设置为 true。

              清理并重建解决方案之后。

              【讨论】:

                【解决方案15】:

                对我来说,事实证明我安装了 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:"Restore;SignAndroidPackage" 在我的解决方案目录中,然后打开生成的 msbuild.binlog 并单击一些错误,然后 Eclipse 的路径就突出了。您的问题可能有所不同,但以这种方式找到它可能是解决问题的关键。 编辑:关闭并重新打开 VS 2019 后,我的设置没有保留。此时我开始使用 VS 2022 并且没有问题。

                【讨论】:

                  【解决方案16】:

                  注意:Multi-dex 已启用。

                  经过 5 个小时的寻找或回答,这是我找到的结论 -

                  1. 在 Visual Studio 中启用诊断 MSBuild 输出,以便您可以查看有关错误的更多详细信息:
                  • 单击工具 > 选项...
                  • 在左侧树形视图中,选择 Projects and Solutions > Build and Run
                  • 在右侧面板中,将 MSBuild 构建输出详细程度下拉菜单设置为 Diagnostic,单击 OK
                  • 清理并重建您的包。 诊断输出在“输出”面板中可见。
                  1. 如果您的错误显示“java.io.IOException: Invalid keystore format”,则您可能使用的是过时的 Java sdk 文件,请执行以下操作:

                  打开 Visual Studio 并将 Java 开发工具包位置更新为 指向 Tools > Options > Xamarin > Android 下的新 JDK 设置 > Java 开发工具包位置:

                  请务必重新启动 Visual Studio。

                  【讨论】:

                    【解决方案17】:

                    我的经验是……

                    我更新了以下元素:

                    • 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。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-08-27
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-11-04
                      相关资源
                      最近更新 更多