[Unity] Eclipseライブラリ形式でAndroidネイティブプラグインを作る
UnityでAndroidのネイティブプラグインを作る際、大きく分けて以下の3つの構成があるかと思います。
1. aar形式で作成
aarで作成すると、リソースファイル(resディレクトリ)やマニフェストを含めてライブラリを作成できますが、
aar内のマニフェストを確認したり、変更したりすることが簡単にできません。
2. jarのみ作成して、Assets/Plugins/Android
直下にリソース、マニフェストを置く
こんな感じの構成です。
マニフェストファイルはAssets/Plugins/Android
直下に置いているので、
ライブラリが複数ある場合は、手動でのマージが必要になることが多いです。
間違って上書きしたりすると最悪です。
3. jarのみ作成して、Eclipseライブラリ形式にする
aarと同様、ライブラリ毎にresディレクトリやマニフェストファイルを配置することができます。
その上、ただのディレクトリなので、直接マニフェストを書き換えたり、ファイルを編集したりすることが簡単にできます。
Unityではこの形式が一番便利かと思います。
こんな感じの構成になります。
project.propertiesの内容はこんな感じ。
target=android-16
android.library=true
この形式で作成する場合のポイントは以下の3点です。
-
Assets/Plugins/Android
直下にライブラリ用のディレクトリを作成する - ディレクトリ内に、
project.properties
を配置する(libsやresは必要に応じて配置) - 他の階層に、同名のディレクトリが存在しないようにする
3つ目はどういうことかというと、例えばAssets
直下にXXXPlugin
というディレクトリが存在する状態で、
Assets/Plugins/Android
配下に同名のXXXPlugin
というライブラリディレクトリを作成した場合、
うまく認識されない場合があります。
このEclipseライブラリ形式で作成したサンプルを以下に置いておきます。
(Crittercismというクラッシュレポートのプラグインです)
Crittercism-UnityPlugin
C#のスクリプトやiOS用のファイルを含めて、最終的に以下の構成となっています。
(補足1)AndroidManifest.xmlの確認
UnityでAndroidのビルドをすると、以下のようにマニフェストが作成されるようです。
-
Assets/Plugins/Android/AndroidManifest.xml
があればベースにする - 無ければUnityが自動で作成する
- aarがあれば、aar内の
AndroidManifest.xml
をマージする - Eclipseライブラリがあれば、Eclipseライブラリ内の
AndroidManifest.xml
をマージする
マージした結果のファイルは、ビルド時にUnityプロジェクト配下のTemp/StagingArea/AndroidManifest.xml
に出力されます。
(補足2)AndroidStudioでjarファイルの出力
Androidのネイティブライブラリを作る場合、私は以下のような手順でjarを出力しています。
AndroidStudioで新規プロジェクトを作る
File -> New -> New Module -> Android Library
でモジュールを追加追加したモジュールの
build.gradle
に、以下のタスクを追加
task makeJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('../libs/')
include('classes.jar')
rename('classes.jar', project.name + '.jar')
}
あとはビルド後に上記のmakeJar
タスクを実行して、jarファイルを取り出します。
Author And Source
この問題について([Unity] Eclipseライブラリ形式でAndroidネイティブプラグインを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/tkyaji/items/183f3ecb91889f353545著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .