AutoyaにURLSchemeハンドリング機構を追加した。


概要

AndroidでもURLSchemeからの起動とかでなんかパラメータ扱いたいよねみたいな話を叶えた。



iOSと違って特に面倒臭いところ

iOSの場合、コードやプロジェクト側に特定のスキーマを入れる必要はなく、Xcodeの設定をいじるコードが一節あればいいのだが、

Androidの場合はAndroidManifest.xmlに対してスキーマを書く必要がある。


その際、まあ、よくあると思うんだけど、AndroidManifestのマージ問題に遭遇することになる。


メインのAndroidManifestはAssets/Plugins/Androidに置くとして、サブのいろんな機能のAndroidManifest.xmlは別のところに置き、Unityにマージしてもらう。

で、[AndroidManifestがマージされる]ための条件は以下の通り。



AndroidManifest.xmlがマージされるための条件


1.Assets/Plugins/Android/FOLDER_NAME/以下にAndroidManifest.xmlを置く

これより深くても浅くてもダメ。


2.project.propertiesというファイルをAndroidManifest.xmlと同じフォルダに置く。

中身は、

target=android-16

android.library=true


とか。


3.manifestの内容は以下のような感じでOK

<manifest

    xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.unity3d.player"

    xmlns:tools="http://schemas.android.com/tools"

    android:versionCode="1"

    android:versionName="1.0">

    <application>

        <activity ....

        </activity>

    </application>

</manifest>


本体となるAndroidManifest.xmlに必要な、<?xml version="1.0" encoding="utf-8"?> とかのxmlの定義は不要。

manifestの中のアトリビュートは必須。


ということで、XMLのマージ問題はこれで解決できる。


project.propertiesがないとマージされなかったんだけど、これってなんなんだろう。


ドキュメントには特に書いてなかったが、github上のいろいろを眺めていて、project.propertiesファイルを適当に作ったら合成された。