2015年1月23日金曜日

【Unity】Unity 4.6.1 と Android SDK と

<追記>
ビルド、端末で動作確認できました。長かった…

Unity 4.6.1f1 にアップデートしたらアンドロイドにビルドできなくなってしまったというのが事の始まりでした。
どれが効いたのかわからないんですがやったことを羅列しておきます。

パッチを当てる(適用直後、Norton等に mono が弾かれている場合復元する)
・Android 5.0.1(API 21) と Android SDK Build-Tools(Rev 21) を SDK Manager を使ってインストール(SDK Manager は管理者として実行することを忘れない
・JDK を最新のものにする(現在の最新は 1.8.0_31 )
(・64bitマシンを使っている場合、C:/Windows/System32 から system64 に java.exe コピー(未実証))
・コンピュータのプロパティから SDK, JDK の環境変数を設定する(JDKについては必要ないかも、パスが通ったかはcmdで確認できる、それぞれ adb, javac と入力して反応があれば良い)
・Unity で Edit > Preferences > External Tools > Android SDK Location を確認
・C:\Program Files\Android\android-sdk (AVD Manager や SDK Manager のあるフォルダ)に zipalign.exe を入れる
・過去にビルドした事がある場合、生成する apk の名前を変えてみる
・Player Settings > Identification > Bundle Identifier も変えてみる

以上です。

既に書いた記録は何らかの形で役に立つかもしれないので一応残しておきます。

<追記おわり>



これは解決策ではありません。
Unityが動かなくなったりシステムを復元したりします。真似するとアンドロイドにビルドできなくなります。
既にビルドできなくなってしまった方向けの情報、何をしてどういうことが起こったかの記録です。
よろしければどうぞ。

ちなみにまだビルドできていません。何か情報があれば宜しくお願いします。

===========================================================


Unityのバージョンを 4.6.0f3 から 4.6.1f1 に引き上げました。
アンドロイドに Build & Run ができなくなりました。マジか…

出てくるポップアップとメッセージは以下。
Android SDK is outdated
SDK Build Tools version 20 < 21

どうもビルドツールが古いってことですね。Update SDK を選択してもどうしてもここで止まってしまいます。
Updaing Android SDK - Tools and Platform Tools...

そしてまた3択を迫られることになります。これを何回か繰り返しました。
管理者権限とかそういうので実行できないんですかねぇ…じゃあ Android SDK Manager に直接頼むからいいよと思い C: > ProgramFiles > android と下っていって直接起動した結果。

起動できませんでした。破損したのかな?いつの間に…
ということで公式ページから Android SDK のインストーラを持ってきて再インストールすることになりました。
Android SDK Manager でインストールするファイルはとりあえずこんなもんでいいんですかね?

インストール長い。耐える。何か失敗してるけどインストーラーは動いているので待ちます。

これで解決するかなーと思ってビルドしてみると…
Android SDK is outdated
SDK Build Tools version 0 < 23

おいおいどうなってんだ。

調べてみると 4.6.1 にして動かなくなったという例はけっこうあるみたい。
その中でパッチを当てたら解決したという話を見つけたのでパッチに頼ることにしました。
Unity を 4.6.1p4 にセットアップ。

プラグインを適用して起動してみるとシーンの実行すらできなくなっていました。

Internal compiler error. See the console log for more information. output was:

Norton が mono を自動削除している可能性があるとのこと。

本当だ。やってくれるじゃないの。
mono を復元してシーンの実行を確認。ビルド。

Unable to find suitable jdk installation.

Error building Player: UnityException: Unable to find suitable jdk installation. Please make sure you have a suitable jdk installation. Android development requires at least JDK 7 (1.7). The latest JDK can be obtained from the Oracle 
http://www.oracle.com/technetwork/java/javase/downloads/index.html

今度は JDK ですか。JDK 1.8.0 だ。文句ないだろ。

同じエラーが出ます。

再起動が必要なのかと思って再起動してもダメ。
環境変数Pathを設定してもダメ。(環境変数の設定についてはここを参考にしました)

システム復元しました(^q^)

復元したらUnityが開けなくなりました。
4.6.0f3 インストーラーをダウンロード、再インストール。
これでとりあえず開けました。
アンドロイドにビルドしてみましょう。
Build failure
Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details.

Preferenceの設定に間違いはない。というか Preference > Android SDK Location も環境変数も 4.6.1 を落とす前と変わってない。これは間違いない。

そうなるともうこのエラーをどうしたらいいのかわからなくなってしまった。

そんなこんなしているうちに新しいパッチが来ていた。
4.6.0f3 → 4.6.1f1 → 4.6.1p5 にアップデートする。
今回も mono は消されてしまっていたので復元。
エディタ上でシーンの再生はOK。アンドロイドにビルド。

Android SDK is outdated
SDK Build Tools version 20 < 21

構わず Update SDK を押す。
Unable to update the SDK. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. See the Console for more details.

SDKのアップデートができないらしい。SDK Manager を使ってやってくれと言われている。
また公式ページに行って落とすことになる。システム復元でインストーラーが消えてしまっていた。

こうなれば SDK Build-tools を全部落としてやる。

終わったので再度アンドロイドにビルド。
21落としたと思ったんですがね…


またか。コンソールでエラー詳細を見る。

Error building Player: CommandInvokationFailure: Unable to update the SDK. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. See the Console for more details.
C:\Program Files\Java\jdk1.8.0_20\bin\java.exe -Xmx1024M -Dcom.android.sdkmanager.toolsdir="C:/Program Files/Android/android-sdk\tools" -Dfile.encoding=UTF8 -jar "C:/Program Files/Unity/Editor/Data/BuildTargetTools/AndroidPlayer\sdktools.jar" -

stderr[
Error:Invalid command y
]
stdout[

]


-Dfile.encoding=UTF8 -jar "C:/Program Files/Unity/Editor/Data/BuildTargetTools/AndroidPlayer\sdktools.jar" -

java.exe のシステム・プロパティ設定。さっきからこいつで止まっているような気がするぞ。
検索かけるとJAVA_HOME設定すれば直るという話が。うーん…堂々巡りな気が…
まぁ損はしないしもう一度JDK 1.8.0_31 に上げておこう。
再度環境変数を設定してトライ。
まぁダメでした。エラー内容は変わらず。
それから C:/Windows/System32 から system64 に java.exe コピーすれば直るという話もありました。自分のは 32bit なので関係ないですね。
zipalign.exe を Android SDK のあるファイルに入れれば直るとかいう話も。直りませんでした。

ちなみに Update SDK を無視して Continue を2回押すと

となります。
アップデートしようとすると Error:Invalid command y
Continueすると Error:Invalid command android

しばらくアンドロイドなしでやっていこう(提案)

Preferences で設定しても path 間違ってると言われちゃうと困る。
Preferences の設定は C:\Program Files\Android\android-sdk
コマンドプロンプトでは javac , adb 共に通るので環境変数関連は問題ない。

SDK Manager を開く。

やられた。落ちてない。管理者権限のせいか。
Android 5.0.1(API 21) と Android SDK Build-Tools をもう一度インストールする。
インストールが終わってから SDK Manager を再起動、必要なファイルが Installed になっていることを確認し、Unity を開く。
シーン実行を確認。アンドロイドにビルド。
かなりいいところまでいくが最後の最後で止まってしまう。

Installation failed with the following output: pkg: /data/local/tmp/Package.apk Failure [INSTALL_FAILED_INTERNAL_ERROR] 3146 KB/s (14977062 bytes in 4.648s) UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()

ためしに Player Settings の Identification > Bundle Identifier を変え、ビルドする apk のファイル名を変えてからビルド。
ここで初めて通る。端末で動作確認。

0 件のコメント:

コメントを投稿