facebook twitter hatena line email

Unity/実機/Android

提供: 初心者エンジニアの簡易メモ
2019年1月8日 (火) 17:31時点におけるAdmin (トーク | 投稿記録)による版 (AndroidBuildエラー(2018.3.0f2で発生))

移動: 案内検索

Android実機で動かす

  • File/BuildSettingsを選択
  • Androidを選択
  • OpenDownloadPageからプレイヤーをDL
  • Unityを一度再起動
  • Unity/Preference/ExternalTools/Android/SDK・JDK・NDKのpathを入れる
SDK=/Users/[user]/Library/Android/sdk
JDK=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/bin/java # 確認 $ locate jdk | grep bin/java$
NDK=/Users/[user]/Library/Android/sdk/ndk-bundle
  • PlayerSettingsを選択
  • Inspector/端末マーク/OtherSetting
  • Bundle Identifierの"com.company.ProjectName"を適宜変更する(デフォから変えないとbuild時にエラーとなる)
  • buildボタンを押しapkを作成する
  • build&runボタンを押しandroidで動作させる。
  • 縦向き・横向きで確認する

向きを固定

  • File/BuildSettings
  • OriantationをAutoRotationからportrait(縦)へ

ビルドエラー

Bundle Identifier has not been set up correctly

  • 上記のBundle Identifierがデフォルトの"com.company.ProjectName"だと起こるエラー。適宜変更する

NDK 13.1.3345770 is incompatible with IL2CPP. IL2CPP requires r10e (64-bit).エラーとなる場合

  1. NDK欄隣のDownloadボタンを押し、
  2. android-ndk-r10e-darwin-x86_64.binをDownload
  3. 適当な場所に移動し、NDKのpathへ入力する

Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for details.エラーの場合

最新の Android Studio に付属している SDK Tools がまずいようなので、25バージョンを使うように

https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip

Library/Android/sdk/toolsを差し替える

gradleで動かす方法

  1. file/build setting/build systemを"internal"から"gradle"にする

gradleでプロガード設定のないlibsを動かす方法

  1. file/build setting/build systemを"internal"から"gradle"にする
  2. file/build setting/PlayerSetting/PublisingSetting/minifyのreleaseを"progurad"から"none"に変更する

gradleのカスタムファイルを作る

  1. file/build setting/PlayerSetting/PublisingSetting/Build/CustomGradleTemplateにチェックを入れる
  2. Assets/Plugins/AndroidにmainTemplate.gradleができる

AndroidStudio用ファイルを出力する

  1. file/build setting/ExportProjectにチェックを入れる
  2. exportボタンを押す

Cannot read packageName AndroidManifest.xmlエラーの場合

manifestにpackage名を登録する

<manifest package="jp.co.example.hogehoge"
以下略

buildsystemがinternalだとpackage名を省略できたがGradleだと省略できなかった。

gradleのPackageNameについて

  • 2018.1.1f1だとOtherSettings側のPackageNameでなくAndroidManifest.xml側のPackageNameに書いたほうで上書掛かれた。
  • 2018.3.0f2だとOtherSettings側のPackageNameに記述したものが、AndroidManifest.xml側のPackageNameよりも優先された。

AndroidManifest.xmlを作成する

  1. 一度ビルドするとTemp/StagingArea/AndroidManifest.xmlができる。
  2. それをAssets/Plugins/Androidの下にコピー

参考:https://qiita.com/peroon/items/ba55d583a68c58f0faa5

Unity2018.1.1f1で作成されたAndroidManifest.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" android:installLocation="preferExternal">
 <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
 <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:isGame="true" android:banner="@drawable/app_banner">
   <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false">
     <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
       <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
     </intent-filter>
     <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
   </activity>
   <meta-data android:name="unity.build-id" android:value="05a8f86c-bb43-431c-9b29-a73d7c23160d" />
   <meta-data android:name="unity.splash-mode" android:value="0" />
   <meta-data android:name="unity.splash-enable" android:value="True" />
 </application>
 <uses-feature android:glEsVersion="0x00020000" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
 <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
 <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

multidex必須と出たとき

Execution failed for task ':transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: 
java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files

multidexを追加するかライブラリ数orライブラリメソッド数を減らす

multidexのバージョンが存在しないと出たとき

A problem occurred configuring root project 'gradleOut'.
> Could not resolve all dependencies for configuration ':_debugApkCopy'.
   > Could not find com.android.support:multidex:1.0.3.

multidexが適切にインストールされているか確認する

ls ~/Library/Android/sdk/extras/android/m2repository/com/android/support/multidex/1.0.3/multidex-1.0.3.jar

なければsdktoolのandroidSupportRegistryをアンインストールしてインストールする。