Android アプリのビルドプロセスには 2段階あります。
必要なすべてのライブラリとシリアライズされたアセットを含むアプリケーションパッケージ(.apk ファイル)を生成します。
アプリケーションパッケージを実際のデバイスにデプロイします。
File > Build Settings… または File > Build & Run を選択し、 Build Settings ダイアログボックスを開きます。
Build Settings ダイアログボックスで Build And Run ボタンを押すと、両方のステップが実行されます。キーボードで Cmd+B を入力すると、最後に使用したファイルをビルドターゲットと仮定して自動ビルドを発動しプロセスを実行します。
If you select Build in the Build Settings ダイアログボックスで Build を選択すると、Unity は 1番目のプロセスのみを行います。
Android プロジェクトの初回ビルド時には、Android SDK の場所を聞かれます。これは Android アプリをビルドしてデバイスへインストールするために必須です。SDK の場所は後から Unity Preferences ダイアログボックス (menu: Unity > Preferences) で変更可能です。
Android にアプリをビルドする場合は、開発者オプション の USB デバッグ と 疑似ロケーションを許可 チェックボックスをオンにしてください。
Android SDK/platform-tools
フォルダーにある adb devices
コマンドを実行してください。そうすると、オペレーティングシステムからデバイスが見えるようになります。Mac と Windows、どちらにでも有効に作動します。
Unity によってアプリケーション アーカイブ(.apk ファイル)が作成され、接続されたデバイスにインストールされます。
場合によってはアプリケーションが (例えば iPhone のように) 自動的に起動しないことがあります。その場合には画面ロックを解除してください。また、メニュー内で新規インストールされたアプリケーションを探す必要があることも稀にあります。
Build Settings ダイアログボックスの中に Texture Compression オプションがあります。デフォルトで、個別にテクスチャ形式をオーバーライドしないテクスチャに関しては、ETC1/RGBA16 テクスチャ形式が使用されます (2D テクスチャ/プラットフォームごとのオーバーライド を参照)。
If you want to build an application archive (an .apk file) targeting a specific hardware architecture, use the Texture Compression option to override this default behavior. Any texture that is set to not be compressed is left alone; only textures using a compressed texture format use the format selected in the Texture Compression option.
選択されたテクスチャ圧縮をサポートしているデバイスにだけアプリケーションをデプロイするようにするため、Unity は、選択された特定形式に適合したタグを含むように AndroidManifest を編集します。
Unity はマニフェストにあるパーミッションを加えます。ロジックは PlatformDependent/AndroidPlayer/Editor/Managed/PostProcessor/Tasks/GenerateManifest.cs :: SetPermissionAttributes
ファイルで定義されます。例えば、スクリプトコードが Application.internetReachability
を参照する場合は、Unity は自動的に android.permission.ACCESS_NETWORK_STATE
をマニフェストに加えます。GenerateManifest.cs
を編集してそれを削除することも可能です。
以下は /GenerateManifest.cs :: SetPermissionAttributes
のコンテンツです。
private void SetPermissionAttributes(PostProcessorContext context,
AndroidManifest manifestXML,
AssemblyReferenceChecker checker)
{
// Add internet permission if it's necessary
if (_developmentPlayer || PlayerSettings.Android.forceInternetPermission || doesReferenceNetworkClasses(checker))
manifestXML.AddUsesPermission("android.permission.INTERNET");
if (checker.HasReferenceToMethod("UnityEngine.Handheld::Vibrate"))
manifestXML.AddUsesPermission("android.permission.VIBRATE");
if (checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::get_internetReachability")
|| checker.HasReferenceToMethod("UnityEngine.Application::get_internetReachability"))
manifestXML.AddUsesPermission("android.permission.ACCESS_NETWORK_STATE");
if (checker.HasReferenceToMethod("UnityEngine.Input::get_location")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneInput::get_lastLocation")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::get_locationServiceStatus")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::get_locationServiceEnabledByUser")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::StartLocationServiceUpdates")
|| checker.HasReferenceToMethod("UnityEngine.iPhoneSettings::StopLocationServiceUpdates"))
{
manifestXML.AddUsesPermission("android.permission.ACCESS_FINE_LOCATION");
manifestXML.AddUsesFeature("android.hardware.location.gps", false /*encourage gps, but don't require it*/);
// This is an implied feature, make it not required to support Android TV
manifestXML.AddUsesFeature("android.hardware.location", false);
}
if (checker.HasReferenceToType("UnityEngine.WebCamTexture"))
{
manifestXML.AddUsesPermission("android.permission.CAMERA");
// By default we don't require any camera since a WebCamTexture may not be a crucial part of the app.
// We need to explicitly say so, since CAMERA otherwise implicitly marks camera and autofocus as required.
manifestXML.AddUsesFeature("android.hardware.camera", false);
manifestXML.AddUsesFeature("android.hardware.camera.autofocus", false);
manifestXML.AddUsesFeature("android.hardware.camera.front", false);
}
Android Studio で開くことのできるプロジェクトを生成します。下記の手順にしたがってください。
C:\MyProjects
, pick C:\MyProjects\<Product Name\>
path).注意 アプリケーションをデバッグしたい場合は、AndroidManifest.xml で必ず android:debuggable="true"
と設定し、終了後は忘れずに false
に設定し直してください。