UnityEditor上で、AndroidManifest.xmlを編集する為のパッケージ
UnityEditor.Android.Extensions.dll
に含まれる、非公開Class AndroidManifest
をReflection経由で利用する為のパッケージです。
UnityEditor上で、AndroidManifest.xmlを編集する事ができます。
また、自分で使う為に必要なAPIを多少追加しています。
Unity2019.4以上
git clone https://github.com/katsumasa/AndroidManifestReflection.git
- ステータスバーの
add
ボタンをクリックします。 - パッケージを追加するためのオプションが表示されます。
- 追加メニューから「Add package from git URL」を選択します。テキストボックスと追加ボタンが表示されます。
- テキストボックスに
https://github.com/katsumasa/AndroidManifestReflection.git
を入力し、Addをクリックします。
public AndroidManifestReflection(string path)
パラメーター | 説明 |
---|---|
path | AndroidManifest.xmlファイルへのパス |
新規にAndroidManifestReflectionを作成します。 引数として、変更を加えるAndroidManifest.xmlへのパスを指定します。
using System.IO;
using UnityEditor.Android;
using UnityEditor.Build;
using UTJ.Android.Extensions;
public class AndroidManifestPost : IPostGenerateGradleAndroidProject
{
void IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject(string path)
{
var androidManifest = new AndroidManifestReflection(path);
}
}
public bool SetDebuggableActivity(string activity,bool value)
パラメーター | 説明 |
---|---|
activity | アクティビティ |
value | アトリビュートの値 |
指定されたアクティビティへアトリビュートdebuggable
を設定します。
androidManifest.SetDebuggableActivity("com.unity3d.player.UnityPlayerActivity", true);
public void AddApplicationMetaDataAttribute(string name, string value)
パラメーター | 説明 |
---|---|
name | 任意のデータの項目を表す名前 |
value | データーの値 |
親コンポーネントに追加で提供できる任意のデータの項目と値を設定します。
androidManifest.AddApplicationMetaDataAttribute("com.android.graphics.developerdriver.enable", "true");
public void Save()
変更を加えた内容をAndroidManifest.xmlへ書き戻します。
下記にIPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProjectからAndroidManifest.xmlを編集するサンプルコードを記載します。
using System.IO;
using UnityEditor.Android;
using UTJ.Android.Extensions;
public class AndroidManifestPost : IPostGenerateGradleAndroidProject
{
public int callbackOrder { get { return 0; } }
void IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject(string path)
{
path = Path.Combine(path, "src");
path = Path.Combine(path, "main");
path = Path.Combine(path, "AndroidManifest.xml");
var androidManifest = new AndroidManifestReflection(path);
androidManifest.SetDebuggableActivity("com.unity3d.player.UnityPlayerActivity", true);
androidManifest.AddApplicationMetaDataAttribute("com.android.graphics.developerdriver.enable", "true");
androidManifest.Save();
}
}
フィードバックやコメントをお待ちしております。