"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:
- Проверьте опцию в опциях проекта:
![Check the option in Project Options:]()
-
Добавить приложение 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 или ~