👋

「UnityPlayerActivity.javaは非推奨のAPIを使用またはオーバーライドしています」が出てビルドできないとき

2022/10/22に公開

概要

  • UnityでAndroidアプリをビルドするときに下記のようなエラーが出てしまいビルドできないことがあります
    • 私はLightship ARDKを使おうとしたときに遭遇しました
  • このエラーの解決方法を紹介します
Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\java\com\unity3d\player\UnityPlayerActivity.javaは非推奨のAPIを使用またはオーバーライドしています。
注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':launcher:processReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
     C:\Users\xxx\.gradle\caches\transforms-2\files-2.1\3d1b13a857e40c43266a99844bd8d18d\nar-dependencies\AndroidManifest.xml:28:9-30:40: AAPT: error: unexpected element <uses-native-library> found in <manifest><application>.
         
     C:\Users\xxx\.gradle\caches\transforms-2\files-2.1\3d1b13a857e40c43266a99844bd8d18d\nar-dependencies\AndroidManifest.xml:28:9-30:40: AAPT: error: unexpected element <uses-native-library> found in <manifest><application>.

解決方法

Project Settings->Player Settings->Publish SettingsのCustom Main Manifestにチェックを入れます

するとAssets/Plugins/AndroidAndroidManifest.xmlが生成されるのでこれを編集します

 <?xml version="1.0" encoding="utf-8"?>
 <manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
+    <queries>
+        <package android:name="com.google.ar.core" />
+    </queries>
 </manifest>

上記のように<application>タグの外側に <queries><package android:name="com.google.ar.core" /></queries>を追加します

これでビルドしてみてそれでもエラーが出る場合、下記の手順に進みます

gradleのページから最新版をダウンロードします
completeのリンクからzipがダウンロードできます
https://gradle.org/releases/

zipを任意の場所に展開し、Unityで使用するgradleをダウンロードしたものに切り替えます
UnityでPreferences->External Tools->Gradle Installed with Unity
のチェックを外し、先ほど展開したgradleのディレクトリを指定します

さらにProject Settings->Player Settings->Publish Settingsを開き Custom Base Gradle Template にチェックを入れます

生成されたbaseProjectTemplate.gradleを編集しgradle:4.2.0に書き換えます

allprojects {
    buildscript {
        repositories {**ARTIFACTORYREPOSITORY**
            google()
            jcenter()
        }

        dependencies {
            // If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
            // See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
            // See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
            // To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
-	    classpath 'com.android.tools.build:gradle:4.0.2'
+            classpath 'com.android.tools.build:gradle:4.2.0'
            **BUILD_SCRIPT_DEPS**
        }
    }

    repositories {**ARTIFACTORYREPOSITORY**
        google()
        jcenter()
        flatDir {
            dirs "${project(':unityLibrary').projectDir}/libs"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

これで無事ビルドが通るようになりました。

Discussion