原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

UnityでAndroidビルドエラー解消までの道のり(Unity2018編)

私以外にはどうでもいいことですが

Twitterでフォローしているアカウントを整理しました。
ゲーム製作者を中心に300近くフォローしていたんですが、TLで追えなくなって来たのでガッツリ減らしました。


個人的にログを溜め込んでいるのって消化しないといけないTODOを溜め込んでいるような気がして落ち着かないので、小まめにTLをチェックして消化しているのですが、いい加減疲れました。フォローされていた方、ごめんなさい。悪意はありません。ただ疲れただけです。


4桁以上フォローしている人ってどうしているんだろう?ちょっと時間を空けるとわんさかログが溜まっているような気がする。

 

そんなことをいいながらも

ログを溜め込むのは嫌い、とは言いながらゲーム制作の方は作業を溜め込んでいて、CutieCircuitのアップデート版もGW明けにリース予定→5月末にリリース予定→6月上旬にリリース予定・・・と延ばし延ばしになっている現状ですが、え、ちょっと待って、これには訳があるんだけど(よくある女子ツイート風に)

 

先週のうちには作業を終えていて、後はビルドするのみとなっていたのですが、このビルドが中々通らない、四苦八苦しながら約5日を費やし、昨日ようやくビルドができるようになったので今回はそのお話

 

Unity2018でビルドエラー

UnityのプロダクトをAndroid端末で動かそうとするとビルド作業が必要です。
このビルドを行うための環境づくりも面倒なのですが、それはそれとして、もっと面倒なのがビルドエラーの対応

 

エラーメッセージは英語なのでGoogle先生に翻訳してもらいながら作業になるし、対処方法を検索してもドンピシャの解決法が見つかるとも限らない。しかも英語のページが多いし。


まぁ、代表的な解決方法は日本語のブログでも幾つか記事に纏められていて、大抵の方はそちらを参照すれば解決するかと思います。

 

  • Andoridビルドエラーについてのまとめ

nn-hokuson.hatenablog.com

 

 

上のリンクでもあるように代表的な対処方法とすれば

 

  • SDKのファイルパスを確認する: UnityのメニューからPreferences→External Toolsを選択してAndroidのSDKに表示されているパスが正しいか確認する。

 

  • toolsフォルダを更新する:/Users/ユーザ名/Library/Android/sdkフォルダの中にあるのtoolsフォルダをr25.2.5-windows.zipをダウンロードして置換する。

 

私の場合はそれを試しても全くダメ。まさにお手上げ状態でした。

 

 ビルドエラー解消までの道のり

表示されるビルドエラーは以下の内容

Failed to re-package resources

 

CommandInvokationFailure: Failed to re-package resources. See the Console for details. C:\Users\***\AppData\Local\Android\sdk\build-tools\27.0.1\aapt.exe package -auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/***/AppData/Local/Android/sdk\platforms\android-27\android.jar” -F bin/resources.ap_

以下、数十行のエラーログ

 

うーん、分からん。。。とりあえず、build-tools云々といっているからbuild-toolsのバージョンを下げてみることに。


Android Studio を立ち上げて、SDK Managerからbuild-toolsに26.0.3を選択し、逆に27.0.1のチェックはずしてOKを押す。


更新が完了するとbuild-tools配下に26.0.3が作られて27.0.1が消えている。よし、これでどうだ!!

Failed to re-package resources

CommandInvokationFailure: Failed to re-package resources.

以下、略

 

うーん。。。だめだったか。。。ならば、もう一つバージョンを下げてみよう。今度は25.0.3をインストール。さあ、これで!!

CommandInvokationFailure: Unable to merge android manifests. See the Console for more details.

stderr[
]
mp\StagingArea\AndroidManifest-main.xml:18, C:\Unity\***\Temp\StagingArea\android-libraries\android.arch.lifecycle.runtime-1.0.0\AndroidManifest.xml:3] Main manifest has <uses-sdk android:targetSdkVersion='25'> but library uses targetSdkVersion='26'

 おお、エラーが変わった!これは前進しているということか!(←大きな勘違い)


AndroidManifest.xmlのバージョン指定を書き換えればいいのか!(←無駄です)


やっとこれで解決する!!(←しません)

Failed to re-package resources

CommandInvokationFailure: Failed to re-package resources.

 

以下、略

 

ヽ(  ̄д ̄;)ノ オテアゲー

 

ここから迷走が始まり。

  •  ビルドシステムをGradleに変更する(←状況変わらず)
  •  SDKのbuild-toolsを最新(28.0.1)に更新する(←状況変わらず)
  •  ならばとUnity2017をUnity2018へバージョンアップさせる。(←丸一日掛かった)
  •  UnityIAPを入れなおす。(←なんとなく)
  •  VisualStudioを2017へバージョンアップさせる(←そうしないとUnity2018では怒られる)
  •  FIFA18のワールドカップモードで日本を準優勝させる(←現実逃避)

 

 何をやっても状況は変わらず袋小路から抜け出せない。このままではアプリはリリースできない→せっかくロゴを依頼して作ってもらったのに水の泡になる→ロゴ製作者の方に顔向けできない→ゲーム開発者として終了、とまで追い詰められたのですが、ふと思い立って、別の作りかけのアプリをビルドしてみることに。

これまではずっとCutieCircuitだけをビルドしていたので、他のアプリではどうなるか試してみようと思ったんです。そうしたら。。。

 

ビルドが通った!APKが作成された!

 

ということは、ビルドが通らない原因はAndroidの環境ではなくCutieCircuitプロダクト固有の原因、ということになります。

なので、もう一度エラーメッセージを見直してみると、先ほどから「以下、略」で省略していた箇所にヒントがありました。

stderr[
D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.support-compat-26.1.0\res\layout\notification_action.xml:17: note: removing attribute http://schemas.android.com/apk/res/android:paddingStart from <LinearLayout>
D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.support-compat-26.1.0\res\layout\notification_action.xml:32: note: removing attribute http://schemas.android.com/apk/res/android:paddingStart from <TextView>

D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.support-compat-26.1.0\res\layout-v16\notification_template_custom_big.xml:32: note: removing attribute http://schemas.android.com/apk/res/android:layout_marginStart from <LinearLayout>
D:\work\unity\Cutie Circuit\Cutie Circuit\Temp\StagingArea\android-libraries\com.android.support.suppor<message truncated

 

Tempに展開されたcom.android.support.supportについてのエラーとなっていますが、このフォルダ自体はAssets/Pulgins/Andorid配下にあるcom.android.support.support-***.aar

ファイルが解凍されて展開されているみたい。

なので、Assets/Pulgins/Andorid配下の中を確認すると

f:id:Karvan:20180613004044j:plain

 不自然に日付が古いaarファイルが幾つかあります。

さらにそれらの中を確認するとcom.android.support.support-***.aarのファイルとダブっているように見える。ならばと、この古いaarファイルを削除してみると。。。

 

ビルドが通った!APKが作成された!

 ___                             ム  i
 「 ヒ_i〉                            ゝ 〈
 ト ノ                           iニ(()
 i  {              ____           |  ヽ
 i  i           /__,  , ‐-\           i   }
 |   i         /(●)   ( ● )\       {、  λ
 ト-┤.      /    (__人__)    \    ,ノ  ̄ ,!
 i   ゝ、_     |     ´ ̄`       | ,. ‘´ハ   ,!
. ヽ、    `` 、,__\              /” \  ヽ/
   \ノ ノ   ハ ̄r/:::r―–―/::7   ノ    /
       ヽ.      ヽ::〈; . ‘::. :’ |::/   /   ,. ”
        `ー 、    \ヽ::. ;:::|/     r’”
     / ̄二二二二二二二二二二二二二二二二ヽ
     | 答 |     コ ロ ン ビ ア  │|
     \_二二二二二二二二二二二二二二二二ノ

 この対応で正しいのか?

 Pulgins配下のaarファイルは私が意図的にインストールしたものではないため、おそらく何かのアセットをインストールした際に入ったものだと思います。なので、このファイル削除が正しい対応なのかはわかりません。


ただ、現状ではアプリの動作に支障はないみたいなので、これでAndroid端末での動作確認を進めようと思います。

 

まぁ、とりあえずビルドが通ったので後はリリースするだけだと思うでしょ?ただ、現状ではAPKのサイズが190Mbyteあるんです。

うわっ・・・私のアプリサイズ、大きすぎ(よく見かける広告風に)

 

100Mbyteの壁再びかぁ・・・・

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。