Со слезами на глазах вспоминаю волшебное время, когда программисту надо было программировать, а не скачивать триста тысяч сторонних библиотек и пытаться их “подружить”. Целый день сижу над проектом - ни одной строчки кода не довелось написать
В общем, беда. Есть у меня прога. Как водится, написана не мной. При попытке сбилдить ее как .aab - билдится нормальнл. При попытке сделать из нее .apk - выдает вот такое вот:
Execution failed for task ‘:AN_Res:verifyReleaseResources’.
1 exception was raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
D:\Work\OtherProjects\lost-phone-unity-wip-master\lost-phone-unity-wip-master\Temp\gradleOut\AN_Res\build\intermediates\aapt_friendly_merged_manifests\release\aapt\AndroidManifest.xml:21: error: resource drawable/app_icon (aka com.chartboost.sdk.unity:drawable/app_icon) not found.
D:\Work\OtherProjects\lost-phone-unity-wip-master\lost-phone-unity-wip-master\Temp\gradleOut\AN_Res\build\intermediates\aapt_friendly_merged_manifests\release\aapt\AndroidManifest.xml:21: error: resource string/app_name (aka com.chartboost.sdk.unity:string/app_name) not found.
error: failed processing manifest.
Че с этой гадостью делать - ума не приложу. И в гугле нагуглить не могу.
I had this problem when I updated my project to latest version of unity. It took me much time to find the problem. Simply replace @drawable with @Mipmap (with lowercase m) in AndrdoidManifest.xml in plugin folder.
I had to update the firebase plugin, which was the source of the problems (because the AndroidManifests of it couldn’t be merged).
An AndroidManifest.xml file, either the main one or in a library, references a non-existing resource. Often it is the application icon or label string that is set by a library. This can happen if you have copied your main manifest to a library project without removing those references.
Remove the attribute from one of the Android Manifests – normally the one from the library.
Еще в гугле советуют обновить библиотеки и/или юнити.
Не помогло. Может, там надо было это сделать во всех манифестах, которые существуют в проекте, но я только в Plugins/Android делала.
А вот это помогло, но вызвало вопрос: “А что, так можно было?”
Еще про манифесты хочу спросить. Я так поняла, что при билде они мерджатся в один манифест. И главным (чьи строки при конфликте запишутся в объединенный) является тот, что лежит в Plugins/Android? Или как-то это тоже можно настраивать?
Execution failed for task ‘:transformClassesWithMultidexlistForRelease’.
com.android.build.api.transform.TransformException: Error while generating the main dex list:
Error while merging dex archives:
Program type already present: com.stansassets.androidnative.BuildConfig
По подсказкам великого стекОверФлоу, multiDexEnabled true в gradle.build (точнее, в mainTemplate.gradle) добавляла. И туда же писала и
dependencies {
compile ‘com.android.support:multidex:1.0.1’ (тут от 1.0.1 до 1.0.3)
}
и
dependencies {
implementation ‘com.android.support:multidex:1.0.3’ (тут тоже от 1.0.1 до 1.0.3)
}
Кажись, я нашла. Есть у меня в папке Плагин/Андроид манифест, в котором написан кое-какой пакедж, а также есть сторонняя библиотека, в которой тоже есть папка с андроидом, но чуть другая. И в ней есть тоже манифест с этим пакеджем. Как исправлять, пока не придумала. Я в этих манифестах дуб - дерево хвойное
First off, for general knowledge, DEX is the process that takes code files (whether it’s your code, or code that is provided in libraries) and converts it into the DEX format (Dalvik Executable).
Libraries are only used for convenience during development: when you build your game, there’s no notion of libraries anymore - it’s all just compiled code.
For this reason, when 2 or more plugins reference the same library (contain 2 copies of a referenced JAR) or define a class with the same name, a conflict occurs, causing this error.
For example: if you are using 2 plugins in your Unity project and both contain a copy of GooglePlayServices.jar, DEX will fail to build your game, since it will try to process multiple copies of the same class.
In your case, it is not clear whether this is the case (multiple copies of the same jar) or whether it’s multiple copies of the same class.
The first one is easier to spot (look for multiple copies of the same JAR). the 2nd one is trickier but it will help if you provided some more information (e.g: is there any extra information in the Unity console? the DEX tool should provide the name of the class that causes the failure for example).
Чот сложно всё в этом Андроиде, по ссылке выше человек даже предлагают услугу по сборке апк за 29 евро и там 189 отзывов
Так по твоей первой ссылке на форум Unity или по моей ссылка по ссылке, точно не помню. Но там говорят о проблемах переноса проектов из одной студии в другую в Android Studio и исправление проблемы связано с корректировкой манифестов.
Сам не спец по Android Studio. Разок установил для ознакомления, загрузилось терабайты не понятно чего, своял калькулятор по примерам из сети, снес студию и перекрестился.
You could export to the project as a Gradle project and then manually edit the AndroidManifest.xml then build in Android Studio.
Думаю тут дело больше в Юнити или библиотеках для нее.
В чистой Джаве же тоже нельзя, чтоб были одинаковые классы, для того и есть пакеты (которые неймспейсы).
Хотя иметь два одинаковых JAR в classpath вроде можно, просто выберется один (но обычно это не происходит при использовании системы управления зависимостями типа Maven)
Так что видимо Андроид тоже виноват раз всё как-то по-другому собирает
Это форум. Соответственно каждый что-нить советует.
Читал на том-же форуме: пере-собрать проект в своей студии при использовании наработок полученных из иных ПК. Но утверждать не стану, в Android я НУБ.
Подозреваю трабла кроется в открытости Unity и закрытости Android. И вот чтоб подружить их между собой и подружить проекты созданные на различных ПК нужны танцы с манифестами. ИМХО.