はじめに
Unity2019から追加モジュールとしてAndroid SDK/NDKをインストールできるようになりました。このAndroid SDKはplatforms;android-28
しか入っていないので他のAPIレベルを使いたい時はAndroid SDKにパッケージを追加インストールが必要になります。
ですが、Windowsの場合は以下の理由によりとても分かりにくくなっています。
- インストールパスが深い
- Unity2019.1.4f1の場合:
C:\Program Files\Unity\Hub\Editor\2019.1.4f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK
- Unity2019.1.4f1の場合:
- デフォルトの
C:\Program Files
にインストールすると管理者権限が必要
そこでsdkmanager.bat
があるフォルダを管理者権限のコマンドプロンプトを開くエディタ拡張を作りました。
Android SDKのフォルダを管理者権限で開くエディタ拡張
※追記
Unity2018から追加されたPackage Manager対応版も用意しました。
以下のスクリプトをAssets/Editor
フォルダに保存してください。
メニューに追加されたTools/Open android sdk folder as administrator
を実行するとsdkmanager.bat
があるフォルダを管理者権限のコマンドプロンプトで開きます。
その後はsdkmanager "platforms;android-25"
のように必要なパッケージをインストールしてください。
#if UNITY_2019_1_OR_NEWER && UNITY_ANDROID && (UNITY_EDITOR_WIN || UNITY_EDITOR_OSX)
using System;
using System.Diagnostics;
using System.IO;
using UnityEditor;
public static class AndroidSDKHelper
{
#if UNITY_EDITOR_WIN
[MenuItem("Tools/Open android sdk folder as administrator", false, 100)]
private static void OpenAndroidSdkFolderOnWindows()
{
var androidPlaybackEngineDirectory =
BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None);
var androidSdkTools = Path.Combine(androidPlaybackEngineDirectory, "SDK", "tools", "bin");
var jdkPath = Path.Combine(androidPlaybackEngineDirectory, "Tools", "OpenJDK", "Windows");
var cmd = Environment.GetEnvironmentVariable("ComSpec");
if (!Directory.Exists(androidSdkTools) || !Directory.Exists(jdkPath) || !File.Exists(cmd))
{
return;
}
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = cmd,
Verb = "runas",
UseShellExecute = true,
Arguments = $"/K cd {androidSdkTools} & set \"JAVA_HOME={jdkPath}\""
}
};
process.Start();
}
#endif
#if UNITY_EDITOR_OSX
[MenuItem("Tools/Open android sdk folder", false, 100)]
private static void OpenAndroidSdkFolderOnMac()
{
var androidPlaybackEngineDirectory =
BuildPipeline.GetPlaybackEngineDirectory(BuildTarget.Android, BuildOptions.None);
var androidSdkTools = Path.Combine(androidPlaybackEngineDirectory, "SDK", "tools", "bin");
if (!Directory.Exists(androidSdkTools))
{
return;
}
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "open",
Arguments = $"-a Terminal {androidSdkTools}"
}
};
process.Start();
}
#endif
}
#endif
所感
Unityをバージョンアップする度にAndroid SDKのパッケージも追加インストールが必要になるのでUnity2018以前のように個別にAndroid SDKをインストールする方が楽なのでは?
Unity2018以前のAndroid SDKのセットアップについて -> Unity - Manual: Android environment setup
Top comments (0)