AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

【Unity】Android SDK絡みでエラーが出てビルドできない場合の対処法に関するメモ

UnityでAndroid版をビルドした際に遭遇したAndroid SDK絡みのエラーに関するメモ。

 

Unity Android SDK絡みのエラー

状況としては以下です。

  • Unity バージョン2019.1.0f2を2019.3.12f1にアップデート
  • target SDK Android 9.0
  • min SDK Android 6.0
  • Unityバージョンアップデートによる影響なのか、しばらくビルドしていなかったからなのか、Android版ビルド時にエラーが出てapkを生成できない(iOS版はビルド成功する)
  • 以前は普通にビルドできていた

 

ビルド時に出力されるエラーは以下。

Required API level 26.

 

試してみたこと

エラーメッセージから、ネットで調ベてでてきた以下のような対処法を試してみました。

 

  • SDK・NDK・Javaのパスを確認(Android Studioで使用しているものを指定)
  • 指定されたAPI LevelのSDKがインストールされているか確認
  • こちらを参考に古いバージョンの Android SDK Tool(25.2.5)に入れ替えて再ビルド
  • Unityの再起動・PCの再起動
  • Java環境変数設定の見直し
  • Android StudioSDKを別の場所に移動させて、参照先を変更
  • SDK・NDK・JavaをUnity Hubでインストールしたものに変更

 

上記の対応を行っていく過程で、以下のようなエラーも出ました。

(やっぱりSDKのパスがうまく反映されていない)

 

CommandInvokationFailure: Unable to install additional SDK platform. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. "platforms;android-26"

 

いろいろ試しましたが、「SDK・NDK・JavaをUnity Hubでインストールしたものに変更」を行った結果、SDKのチェックの段階ではエラーが出て終了することは無くなりました。

【Unity】Android SDK絡みでエラーが出てビルドできない場合の対処法に関するメモ

 

ただ、apkが出力される直前の段階で以下のようなエラーが出てやっぱりビルドに失敗しました。

ArgumentNullException: Value cannot be null. Parameter name: path1 

 こちらのエラーメッセージを検索すると、以下の記事がヒットしました。

forum.unity.com

こちらの記事によると、Unityを再起動すればOK的な感じでしたが、私の環境ではUnityの再起動やPCの再起動を行ってもエラーが出続けました。

 

 

で、その後試したのは、Gradleにもチェックをいれる方法。

【Unity】Android SDK絡みでエラーが出てビルドできない場合の対処法に関するメモ

ネットを調べると、SDKやNDK、Javaのパス設定については確認すべき的な内容が多いのですが、Gradleに関しては特に述べられてなかったのでノーマークでした。

Gradleにチェックを入れてビルドしてみたら、前述したエラーが出なくなりました。

 

 

ですが、今度は以下のエラーが出ました。

The attribute application@appComponentFactory=androidx.core.app.CoreComponentFactory in com.android.support:support-compat:28.0.0 collides with another value

(See the Console for details)

こちらのメッセージを調べて見ると、AndroidXのライブラリとサポートライブラリの競合エラーっぽいです。

 

Unity PlayerSettingsの「Other Settings」「Build」の項目から、

「Custom Main Gradle Template」と「Custom Gradle Properties Template」にチェックを入れて、

【Unity】Android SDK絡みでエラーが出てビルドできない場合の対処法に関するメモ

生成された「gradleTemplate.properties」に以下を追記します。

android.useAndroidX=true
android.enableJetifier=true

これでAndroidXライブラリ関連のエラーが消えてビルドできるようになりました。

Android SDK絡みのエラーって3ヶ月とか半年に一回くらいは発生する気がします。

今回の経験で、Android StudioSDKとUnityで使うSDKは分けた方がトラブル少ないかもなと思いました。

SDKは結構ストレージ容量くうので、1個をAndroid StudioとUnityで参照すればいいやと思ってましたが、Unityがたまにうまく読み込んでくれなくなるリスクを考えると、Unity用にSDKを入れておくのもありだなと思いました。

今回のビルドできない問題でまる1日くらい悩んでしまったので、この経験が今後何かの役に立つことを願いたいと思います。