Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;java.exe“;已退出代码为2的Xamarin.Android项目_Java_Android_Xamarin_Xamarin.android_Android Multidex - Fatal编程技术网

&引用;java.exe“;已退出代码为2的Xamarin.Android项目

&引用;java.exe“;已退出代码为2的Xamarin.Android项目,java,android,xamarin,xamarin.android,android-multidex,Java,Android,Xamarin,Xamarin.android,Android Multidex,所以我有我的Xamarin.Android项目,它包含几个库。当我尝试构建时,我收到一个错误,上面写着“java.exe”已退出,代码为2 经过几个小时的谷歌研究,我发现我可以启用Multidex。 根据Jon Doublas的博客,我完成了上面提到的步骤。 根据博客条目,Android API Level>21本身处理多索引。 我的经验是,事实并非如此。我是在API级别25的基础上构建的,用相同的信息一次又一次地得到相同的错误。 本文中的步骤没有帮助。看起来像是Xamarin。Android

所以我有我的Xamarin.Android项目,它包含几个库。当我尝试构建时,我收到一个错误,上面写着“java.exe”已退出,代码为2

经过几个小时的谷歌研究,我发现我可以启用Multidex。 根据Jon Doublas的博客,我完成了上面提到的步骤。

根据博客条目,Android API Level>21本身处理多索引。 我的经验是,事实并非如此。我是在API级别25的基础上构建的,用相同的信息一次又一次地得到相同的错误。 本文中的步骤没有帮助。看起来像是Xamarin。Android不支持多索引

看起来你必须自己处理多重索引,但我还没有找到任何有效的解决方案。有人找到了有效的解决方案吗


我正在使用Xamarin 4.6和Visual studio 2017。

在我的项目中搜索了大约20个小时后找到了答案。。 下面是解决“java.exe”与代码2一起退出的问题的步骤

1) 按照链接中的说明更改MainDexClasses.bat:

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

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

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

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


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

在找到此问题和@Daniel a s答案后,我只能通过向项目中添加multidex而不更改MaindexClass来解决此错误。bat:

  • 选中项目选项中的选项:
  • MultiDexApplication
    添加到Android清单:

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

  • 注意:我在Visual Studio for Mac和Windows上收到此错误代码2,该应用程序正在成功构建。(为什么?)。由于密钥库位置和/或密码不正确,java.exe退出,代码为2


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


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

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

    ==编辑01==

    双击Android项目>Android软件包签名


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

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

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

    >

    true
    
    只是检查一下。但请记住,它需要设置为真


    清理并重建解决方案后。

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


    在.csproj中查找
    的所有实例,并相应地进行更新。

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


    tl;dr:转到android项目属性,选择软件包签名,取消选中“签名apk文件…”(这会更改csproj
    我在从VS Mac切换到VS Windows时出现此错误

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

    VSWindows AndroidProject=>Properties=>Signin

    因此,我在Android.csproj(使用第三个文本编辑器编辑)上删除了这一行:
    True
    YourMacPath/Alias.keystore
    密码
    别名
    别名密码
    
    关于调试和发布部分

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

    希望我帮助了别人。
    请参见ya

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

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

    我想建立一条适用于所有工作人员的路径,所以我使用$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.1
    28.0.0.3

    然后,在问题开始后:

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


    我刚刚在Android项目属性中勾选了
    启用多索引
    。我正在windows系统中使用VS 2017。

    对我来说,这是我的密钥库的问题。按照此操作启用诊断。这将在输出窗口中为您提供更详细的错误消息。如果它说您的密钥库fai
    <AndroidKeyStore>true</AndroidKeyStore>
    
    <AndroidKeyStore>True</AndroidKeyStore>
    <AndroidSigningKeyStore>YourMacPath/Alias.keystore</AndroidSigningKeyStore>
    <AndroidSigningStorePass>Password</AndroidSigningStorePass>
    <AndroidSigningKeyAlias>Alias</AndroidSigningKeyAlias>
    <AndroidSigningKeyPass>AliasPassword</AndroidSigningKeyPass>