最近、Unity2021バージョンでSDKにアクセスする必要があり、SDKに直接アクセスする場合と若干の違いがあることが分かりましたので、アクセス手順を記録しておきます。
Unity の最新バージョンでは、Class.jar から UnityPlayActivity.java が削除されました。このファイルを使用するには、Unity プロジェクトでこのファイルを見つけて Android Stadio に追加する必要があります。
新しい Android Stdio プロジェクトを作成します。パッケージ名は任意の名前にすることができます。
プロジェクト内の新しいモジュール
①Androidライブラリを選択
②パッケージ名はUnityプロジェクトのパッケージ名と同じである必要があります。
③SDKの最小バージョンを設定します。UnityプロジェクトのSDKバージョンと同じである必要があります。
開始時に新しい Java スクリプト MainActivity.java エントリを作成します。
Unity に class.jar パッケージをインポートする
パス: Unity\Editor\Data\PlaybackEngines\AndroidPlayer\variations\mono\Release\Classes libs ファイルにインポートします。libs フォルダー内の .jar ファイルを右クリックし、ライブラリとして追加…
MainActivity は UnityPlayActivity を継承する必要があります
新しいバージョンの Unity では、Class.jar にこのクラスがないため、自分で見つけて追加する必要があります。
パス: Unity カスタム インストール パス\Editor\Data\PlaybackEngines\AndroidPlayer\Source\com\unity3d\player
UnityPlayerActivity.java スクリプトを保存する新しいフォルダーを作成します。
変更された AndroidManifest.xml
Android Stdio プロジェクトのAndroidManifest.xml をUnity プロジェクトに直接ドラッグすることもできます。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qqlogin.androidtest">
<application
android:allowBackup="true"
android:supportsRtl="true"
>
<activity android:name="com.qqlogin.androidtest.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity>
</application>
</manifest>
build.gradle の依存関係、build.gradle が変更されていない場合、aar は生成されず、apk が生成されます。
依存関係を変更しないと、AndroidStudio がパッケージ化時にエラーを報告します。
不要なファイルを削除してarrをパッケージ化する
これは主に現在のプロジェクトでは使用されていない Android インターフェース設定の一部であり、削除しないと aar パッケージにも同時に組み込まれてしまい、インストールパッケージが増加してしまいます。
arr パッケージを生成する
Unity への aar パッケージのインポートの処理
1. libsファイル配下のclasses.jarを削除します libsファイル配下のclasses.jarはAndroidStudioで生成されたものではありません。
2. AndroidStudio によって生成された圧縮パッケージ内のclasses.jarを開き、UnityplayerActivity.classを削除します。
削除しないと Unity のパッケージ化が失敗します。
予防:
1. 削除する場合は、aar パッケージを zip に変更して解凍し、中のファイルを削除することができます(class.jar パッケージ内の UnityplayerActivity.class も同様の方法です)。
2. 削除後、zip パッケージを作成します。パッケージ化する際、余分なファイル層が含まれる場合があります。これにより、パッケージ化が失敗し、対応するリソースが見つからなくなります。
間違った zip パッケージ
正しい zip パッケージ
すべてを選択して、zip パッケージを作成し、サフィックス .aar を変更して、それを Unity プロジェクトに配置できます。