0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity2018でAndroid12ビルド対応

Posted at

問題

Target APIはAPI LEVEL 31(Android12)を選択してビルドするとエラーが出ました。

An exception has occurred in the compiler (1.8.0-adoptopenjdk). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)

JDK8とAnroid12の互換性がないので、エラーが出ているみたいです。

# install jdk11
$ brew install openjdk@11
$ export $JAVA_HOME=/usr/local/opt/openjdk@11/libexec/openjdk.jdk/Contents/Home

Unity2018.4のembedded jdkがjdk8なので、Use embedded JDKを外してみました。
結果が変わらない。外してもビルド時が使ってます。

AndroidJavaTools:
	java     : /Applications/Unity/Hub/Editor/2018.4.22f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacOS/bin/java
	heapsize : 4096

Android PostProcess task "Detecting Android SDK" took 1487.2207 ms

Unity2018.4のJDKをjdk11へ切り替える

# backup
$ sudo cp -r /Applications/Unity/Hub/Editor/2018.4.22f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacOS /Applications/Unity/Hub/Editor/2018.4.22f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacO-bak

# change to jdk11
$ sudo rm -rf /Applications/Unity/Hub/Editor/2018.4.22f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacOS
$ sudo ln -s /usr/local/opt/openjdk@11/libexec/openjdk.jdk/Contents/Home /Applications/Unity/Hub/Editor/2018.4.22f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacOS

# check version
$ java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Homebrew (build 11.0.12+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.12+0, mixed mode)

早速ビルドしてみる、まだエラーが出ました

~/Library/Android/sdk/tools/bin/avdmanager list target -c
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
	at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
	at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
	at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
	at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
	at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 5 more

Android SDK ToolはJDK8でしか動かないです。最新のAndroid SDK Command-line Toolsへ切り替え

Android SDK Toolの切り替え

Android StudioでAndroid SDK Command-line Toolsをインストール
Android Studio -> Preferences -> Android SDK -> SDK Tools -> Android SDK Command-line Tools

$ ls ~/Library/Android/sdk/cmdline-tools/latest 
NOTICE.txt		bin			lib			package.xml		source.properties

# backup
$ cp -r ~/Library/Android/sdk/tools/bin  ~/Library/Android/sdk/tools/bin-bak
$ cp -r ~/Library/Android/sdk/tools/lib  ~/Library/Android/sdk/tools/lib-bak

# copy
$ cp -r ~/Library/Android/sdk/cmdline-tools/latest/lib/* ~/Library/Android/sdk/tools/lib/
$ cp -r ~/Library/Android/sdk/cmdline-tools/latest/bin/* ~/Library/Android/sdk/tools/bin/

# sdk toolのエラーがなくなった
$ ~/Library/Android/sdk/tools/bin/avdmanager list target -c
android-30==============================] 100% Fetch remote repository...       
android-31

再度ビルドします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?