Hi ! I use the Unity Editor 2019.4.25f1 with Android SDK 29 API by default. However I need to use the Android SDK 28 API. I downloaded the platform with the SDK Manager but the compiler gives me the error message "Android resource linking failed". What can I do to properly have the SDK ? Thanks a lot for your answers ! Lilian
After downloading SDK 28, did you select API 28 in Unity or switched to API 28 in gradle project itself? I think depending on the API Level Unity generates different gradle resource xml files, most likely there's an entry which was for API 29 and it doesn't exist in API 28, that's why you're getting an error, the error shouldn't contain the name of that resource
I switched to API 28 in Player Settings in Unity. What is the name of the gradle file ? How can I modify gradle file ?
Since you didn't post the full error, I am not sure which file is this. Here's what you could do: Choose export project in Unity, open gradle proejct from Android Studio, try to build it, it should point you to the faulty file.
I generated with Player Settings a mainTemplate.gradle file and modified it. But the error is still here. The content of my gradle file : Code (JavaScript): // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN apply plugin: 'com.android.library' **APPLY_PLUGINS** dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) **DEPS**} android { compileSdkVersion 28 buildToolsVersion '28.0.3' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { minSdkVersion 20 targetSdkVersion 28 ndk { abiFilters "armeabi-v7a" } versionCode 30 versionName "2.92" consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** } lintOptions { abortOnError false } aaptOptions { ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" }**PACKAGING_OPTIONS** }**REPOSITORIES****SOURCE_BUILD_SETUP** **EXTERNAL_SOURCES**
This is the summary of 'Configure project launcher" : Code (CSharp): > Configure project :launcher NDK is missing a "platforms" directory. If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to C:\Users\lilia\AppData\Local\Android\sdk\ndk-bundle. If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning. > Configure project :unityLibrary NDK is missing a "platforms" directory. If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to C:\Users\lilia\AppData\Local\Android\sdk\ndk-bundle. If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning. > Task :unityLibrary:preBuild UP-TO-DATE > Task :launcher:preBuild UP-TO-DATE > Task :unityLibrary:preReleaseBuild UP-TO-DATE > Task :unityLibrary:checkReleaseManifest UP-TO-DATE > Task :launcher:prepareLintJar UP-TO-DATE > Task :unityLibrary:processReleaseManifest C:\Users\lilia\OneDrive\Documents\Projets\Unity\Nouveau dossier\FitImmersion-Unity\Temp\gradleOut\unityLibrary\src\main\AndroidManifest.xml:4:3-19:17 Warning: application@android:allowBackup was tagged at AndroidManifest.xml:4 to replace other declarations but no other declaration present > Task :unityLibrary:compileReleaseAidl NO-SOURCE > Task :unityLibrary:packageReleaseRenderscript NO-SOURCE > Task :unityLibrary:compileReleaseRenderscript NO-SOURCE > Task :unityLibrary:generateReleaseBuildConfig UP-TO-DATE > Task :unityLibrary:generateReleaseResValues UP-TO-DATE > Task :unityLibrary:generateReleaseResources UP-TO-DATE > Task :unityLibrary:packageReleaseResources UP-TO-DATE > Task :unityLibrary:generateReleaseRFile UP-TO-DATE > Task :launcher:preReleaseBuild > Task :unityLibrary:prepareLintJar UP-TO-DATE > Task :launcher:compileReleaseAidl NO-SOURCE > Task :unityLibrary:generateReleaseSources UP-TO-DATE > Task :launcher:compileReleaseRenderscript NO-SOURCE > Task :launcher:checkReleaseManifest UP-TO-DATE > Task :unityLibrary:javaPreCompileRelease UP-TO-DATE > Task :launcher:generateReleaseBuildConfig UP-TO-DATE > Task :launcher:generateReleaseSources UP-TO-DATE > Task :launcher:mainApkListPersistenceRelease UP-TO-DATE > Task :launcher:generateReleaseResValues UP-TO-DATE > Task :launcher:generateReleaseResources UP-TO-DATE > Task :unityLibrary:compileReleaseJavaWithJavac UP-TO-DATE > Task :unityLibrary:bundleLibCompileRelease UP-TO-DATE > Task :unityLibrary:prepareLintJarForPublish UP-TO-DATE > Task :unityLibrary:mergeReleaseShaders UP-TO-DATE > Task :unityLibrary:compileReleaseShaders UP-TO-DATE > Task :unityLibrary:generateReleaseAssets UP-TO-DATE > Task :launcher:mergeReleaseResources UP-TO-DATE > Task :launcher:javaPreCompileRelease > Task :launcher:createReleaseCompatibleScreenManifests UP-TO-DATE > Task :launcher:processReleaseManifest C:\Users\lilia\OneDrive\Documents\Projets\Unity\Nouveau dossier\FitImmersion-Unity\Temp\gradleOut\launcher\src\main\AndroidManifest.xml:5:3-121 Warning: application@android:allowBackup was tagged at AndroidManifest.xml:5 to replace other declarations but no other declaration present > Task :unityLibrary:packageReleaseAssets > Task :unityLibrary:bundleLibRuntimeRelease > Task :unityLibrary:processReleaseJavaRes NO-SOURCE > Task :unityLibrary:bundleLibResRelease > Task :launcher:processReleaseResources FAILED > Task :unityLibrary:mergeReleaseJniLibFolders Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings 28 actionable tasks: 9 executed, 19 up-to-date UnityEngine.GUIUtility:ProcessEvent (int,intptr)
There you go, it says: Code (CSharp): NDK is missing a "platforms" directory. Your NDK is invalid I assume
Hi ! I added a "platforms" folder in my NDK directory. However, the program still doesn't compile and I don't understand why... This is my error message : Code (CSharp): ask :unityLibrary:preBuild UP-TO-DATE > Task :launcher:preBuild UP-TO-DATE > Task :unityLibrary:preReleaseBuild UP-TO-DATE > Task :unityLibrary:checkReleaseManifest UP-TO-DATE > Task :launcher:prepareLintJar UP-TO-DATE > Task :unityLibrary:processReleaseManifest C:\Users\lilia\OneDrive\Documents\Projets\Unity\Nouveau dossier\FitImmersion-Unity\Temp\gradleOut\unityLibrary\src\main\AndroidManifest.xml:4:3-19:17 Warning: application@android:allowBackup was tagged at AndroidManifest.xml:4 to replace other declarations but no other declaration present > Task :unityLibrary:compileReleaseAidl NO-SOURCE > Task :unityLibrary:packageReleaseRenderscript NO-SOURCE > Task :unityLibrary:compileReleaseRenderscript NO-SOURCE > Task :unityLibrary:generateReleaseBuildConfig UP-TO-DATE > Task :unityLibrary:generateReleaseResValues UP-TO-DATE > Task :unityLibrary:generateReleaseResources UP-TO-DATE > Task :unityLibrary:packageReleaseResources UP-TO-DATE > Task :launcher:preReleaseBuild > Task :launcher:compileReleaseAidl NO-SOURCE > Task :unityLibrary:generateReleaseRFile UP-TO-DATE > Task :launcher:compileReleaseRenderscript NO-SOURCE > Task :unityLibrary:prepareLintJar UP-TO-DATE > Task :launcher:checkReleaseManifest UP-TO-DATE > Task :unityLibrary:generateReleaseSources UP-TO-DATE > Task :launcher:generateReleaseBuildConfig UP-TO-DATE > Task :launcher:generateReleaseSources UP-TO-DATE > Task :launcher:mainApkListPersistenceRelease UP-TO-DATE > Task :launcher:generateReleaseResValues UP-TO-DATE > Task :launcher:generateReleaseResources UP-TO-DATE > Task :unityLibrary:javaPreCompileRelease UP-TO-DATE > Task :unityLibrary:compileReleaseJavaWithJavac UP-TO-DATE > Task :unityLibrary:bundleLibCompileRelease UP-TO-DATE > Task :unityLibrary:prepareLintJarForPublish UP-TO-DATE > Task :unityLibrary:mergeReleaseShaders UP-TO-DATE > Task :unityLibrary:compileReleaseShaders UP-TO-DATE > Task :unityLibrary:generateReleaseAssets UP-TO-DATE > Task :launcher:mergeReleaseResources UP-TO-DATE > Task :launcher:javaPreCompileRelease UP-TO-DATE > Task :launcher:createReleaseCompatibleScreenManifests UP-TO-DATE > Task :launcher:processReleaseManifest C:\Users\lilia\OneDrive\Documents\Projets\Unity\Nouveau dossier\FitImmersion-Unity\Temp\gradleOut\launcher\src\main\AndroidManifest.xml:5:3-121 Warning: application@android:allowBackup was tagged at AndroidManifest.xml:5 to replace other declarations but no other declaration present > Task :unityLibrary:packageReleaseAssets > Task :unityLibrary:bundleLibRuntimeRelease > Task :unityLibrary:processReleaseJavaRes NO-SOURCE > Task :unityLibrary:bundleLibResRelease > Task :launcher:processReleaseResources FAILED > Task :unityLibrary:mergeReleaseJniLibFolders Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings 28 actionable tasks: 8 executed, 20 up-to-date UnityEngine.GUIUtility:ProcessEvent (int,intptr)
I don't see the error, there is that warning regarding AndroidManifest, but I am not sure if that would cause a failure. Try exporting a project, and build from Android Studio
I found it. I built my project on Android Studio and the compiler give me an error in a generated manifest.xml... Code (CSharp): Android resource linking failed C:\Users\lilia\OneDrive\Documents\Projets\Exported\launcher\build\intermediates\merged_manifests\debug\AndroidManifest.xml:56: error: attribute android:requestLegacyExternalStorage not found. error: failed processing manifest. I found the same error in the console of Unity : Code (CSharp): FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':launcher:processReleaseResources'. > Android resource linking failed C:\Users\lilia\OneDrive\Documents\Projets\Unity\Nouveau dossier\FitImmersion-Unity\Temp\gradleOut\launcher\build\intermediates\merged_manifests\release\AndroidManifest.xml:56: AAPT: error: attribute android:requestLegacyExternalStorage not found. error: failed processing manifest. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org
requestLegacyExternalStorage is only available in API 29, that's why when you choose API 28, it's not found. If you can please report a bug report, since I think Unity shouldn't add requestLegacyExternalStorage to manifest if API 28 or lower is chosen. You can also workaround this issue locally, by going to AndroidManifest and removing requestLegacyExternalStorage entry, but only if you do Export Project.
After reading this I resolved my issue by upgrading to API 29 in Player > Settings for Android > Other Settings > Android 10.0 (API level 29). When prompted to update the required Android SDK level, I let it update.