Версия Xamarin Forms Android не строится при включенном соединении - PullRequest
1 голос
/ 11 февраля 2020

У меня есть решение Xamarin Forms, которое успешно строится для всех проектов, нацелено на режим отладки.

Когда я переключаюсь на целевой релиз, я могу успешно построить проект iOS, но не могу создать проект Android.

Мне удалось сузить это до того, включено или нет "связывание". Когда ссылка не установлена, я могу встроить релиз. Как только я пытаюсь выпустить сборку релиза со ссылками, чтобы установить "только сборки sdk", сборка зависает, то есть не возникает просто ошибка, требующая, чтобы я убил MSBUILD в диспетчере задач.

Это было опробовано на ряде версий Visual Studio на разных машинах. Версия Xamarin Forms: 4.4 Target Android версия: 9.0

Как получить это, чтобы встроить релиз с включенной связью?

Спасибо

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Похоже, что проблема похожа на:

Xamarin Android сборка просто зависает при включенном компоновщике

Решением было удалить явную поддержку Пустые ссылочные типы (включить) в файле проекта.

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

Проблема заключается в несовместимости с компоновщиком android и вышеупомянутой поддержкой ссылок в некоторых случаях в новейшая визуальная студия. Это будет исправлено в следующем выпуске Visual Studio и уже доступно в предварительном просмотре. Если вы можете использовать предварительную версию VS 2019, тогда это также будет работать.

2 голосов
/ 11 февраля 2020

Обычно вы должны увидеть ошибки компоновки, но у меня была похожая проблема при сборке в режиме релиза для Android с firebase. Вы должны проверить в своих Android свойствах проекта, если ссылки предназначены только для сборок Sdk. Если это нормально, попробуйте установить связывающие сборки в режиме отладки и запустите приложение. Если вы получили ошибки компоновки в окне вывода, запишите их. Следующим вашим шагом будет настройка дополнительного файла конфигурации для Proguard. Добавьте файл proguard.cfg в ваш проект Android и убедитесь, что для параметра Build Action установлено значение ProguardConfiguration. Сконфигурируйте proguard для сохранения классов, выдающих ошибки компоновки.

Пример конфигурации proguard, которая исправляет типичные ошибки компоновки:

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class org.apache.http.** { *; }
-keep class org.apache.** { *; }
-dontwarn org.apache.**
-dontwarn org.apache.http.**
-dontwarn org.apache.commons.**
-keep class android.support.v7.widget.** { *; }
-dontwarn android.support.v7.widget.**
-keep class android.support.v4.widget.Space { *; }
-dontwarn android.support.v4.widget.Space
-dontwarn com.google.android.gms.**
-keep class com.google.android.gms.** { *; }
...