"java.exe" вышел с кодом 2 Проект Xamarin.Android

поэтому у меня есть проект Xamarin.Android, который содержит несколько библиотек. Когда я пытаюсь построить, я получаю сообщение об ошибке "java.exe" с кодом 2.

После нескольких часов исследований Google выяснилось, что я могу включить Multidex. Согласно записи в блоге Джона Дублоса, я сделал упомянутые шаги. http://www.jon-douglas.com/2016/09/05/xamarin-android-multidex/

Согласно записи в блоге, уровень API Android > 21 обрабатывает сам Multidex. Ну, мой опыт в том, что это не так. Я строю на уровне API 25 и получаю ту же ошибку снова и снова с той же информацией. Шаги в статье не помогают. Кажется, что Xamarin.Android не поддерживает Multidex.

Кажется, что вам приходится обрабатывать Multidex самостоятельно, но я не нашел никакого решения, которое работает. Кто-нибудь нашел решение, которое работает?

Я использую Xamarin 4.6 и Visual studio 2017.

Ответ 1

Нашел ответ примерно после 20 часов поиска в моем проекте.. Итак, вот шаги по решению проблемы "java.exe", завершенной с кодом 2

1) Измените файл MainDexClasses.bat, как описано в ссылке:

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

2) Убедитесь, что вы включили опцию Multidex в вашем приложении Android! Посмотрите на файл .csprj, если для Multidex установлено значение true (в моем случае это было не так, даже если я включил Multidex)

3) Добавьте следующую часть в ваш файл AndroidManifest

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

Это скажет вашему Android-проекту на самом деле использовать данный Multidex-Option.

После очистки и сборки я смог запустить свое приложение как есть.

Ответ 2

После нахождения этого вопроса и ответа @Daniel_97s я смог решить эту ошибку, только добавив multidex в проект без изменения MainDexClasses.bat:

  1. Проверьте опцию в опциях проекта:

Check the option in Project Options:

  1. Добавить приложение MultiDexApplication в Android Manifest:

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

Обратите внимание, что я получал этот код ошибки 2 в Visual Studio для Mac и в Windows, то же приложение успешно создавалось. (Зачем?)

Ответ 3

Решение в моем случае состояло в том, чтобы отключить "Подпишите файл .APK, используя следующие данные хранилища ключей". Поскольку местоположение хранилища ключей и/или пароль были неправильными, файл java.exe завершился с кодом 2.

enter image description here

Ответ 4

Я только перехожу к опции > Build > Android Build и установите флажок Enable Multi-Dex, который он разрешит.

Ответ 5

В моем файле .csproj была запись для хранилища ключей, которая больше не действительна, даже если щелкнуть правой кнопкой мыши проект и проверить свойства, то я указал, что я указал его в новом месте.

В .csproj найдите все экземпляры <AndroidSigningKeyStore> и обновите соответствующим образом.

Ответ 6

Я боролся с этой проблемой довольно долго. Я обнаружил источник ошибки в подписи - когда я клонировал репозиторий проекта от компании TFS, файл Android csproj содержал записи для настроек и местоположения хранилища ключей. У меня не было хранилища ключей, и местоположение на моем диске было недействительным. Затем Visual Studio не может подписать приложение во время развертывания, и вместо какого-то исключения FileNotFoundException оно дало мне только выход java с кодом 2. Итак...

tl; dr: Перейдите в свойства проекта Android, выберите подписывание пакета, снимите флажок "Подписать файл apk..." (который меняет csproj <AndroidKeyStore>true</AndroidKeyStore> на false) и вуаля, теперь вы можете запустить свое решение.

enter image description here

Ответ 7

Переназначить путь хранилища ключей у меня работал

== РЕДАКТИРОВАТЬ 01 ==

Дважды нажмите на Android Project> Подписание пакета Android

На пути к хранилищу ключей не знаю почему, но, видимо, путь был неправильным, я снова выбираю файл .keystore по тому же пути, и ошибка "завершена с кодом 2" исчезла, и я смог заархивировать для выпуска

Ответ 8

Отключите подпись .APK файла, используя следующие данные хранилища ключей как @Klemikaze

Ответ 9

Обновите Visual Studio до последней версии, если вы все еще используете старую версию.

Если вы считаете, что решения не существует, то включите Multidex

Ответ 10

В моем случае одна из деталей хранилища ключей была неверной, после saving-> очистки → процесса сборки это сработало.

Ответ 11

Попробуйте сбросить хранилище ключей или измените на false ключ true. Только чтобы проверить. Но помня, что это должно быть установлено в истину.

Ответ 12

У меня была эта ошибка при переходе с VS Mac на VS Windows.

Здесь тема Переключение с VS Mac на VS Windows получил "java.exe", выход с кодом 2

Проблема исходила от Android.csproj и пути хранилища ключей.
Он был установлен на мой путь Mac, даже если я изменил его

VSWindows AndroidProject => Properties => Войти

Поэтому я удалил эти строки в Android.csproj (отредактировано в третьем текстовом редакторе):

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

На отладке и выпуске Part.

Затем вы можете редактировать их на VS Windows.

Надеюсь, я кому-то помог. До встречи

Ответ 13

В моем случае это была ссылка на "Подпишите файл .APK, используя следующую информацию о хранилище ключей", как упомянул Хейн Андре Гроннестад. Это место было неверным.

Я хотел указать путь, который мог бы работать для всех на работе, поэтому я использовал $ HOME/Library/... вместо /Users/Me/Library/...

Проблема в том, что $ HOME не означает ничего особенного для java, поэтому файл хранилища ключей не найден.

Решение: используйте относительный или абсолютный путь без переменной $ HOME или ~