2017-02-27 11 views
0

私はXamarin Androidでアプリケーションを作成しています。それはカスタムURIスキームとユニバーサルリンクサポートを持ち、使用される特定のURIスキームとユニバーサルリンクドメインは、私がプロダクションアプリをビルドしているのか、QA目的のためにテスト版のアプリをビルドしているのかによって異なります。これらの設定は最終的にインテントフィルタとしてAndroidManifest.xmlファイルに格納されます。AndroidManifest.xmlに属性を使用せずにXamarin Androidを使用する

Xamarin's documentationは、Xamarin Androidアプリを開発するときに、カスタム属性を使用してActivityクラスのインテントフィルタを指定できることを示します。 Xamarinのビルドプロセスは、ビルド時にこれらを関連するXMLセクションに変換し、AndroidManifest.xmlファイルに挿入します。

これは役に立ちますが、自動ビルドプロセスを使用してビルド時にこれらのインテントフィルタのプロパティの一部を取り替えると、少し制限があります。理想的には、AndroidManifest.xmlファイルのこれらのセクションを手動で制御したいので、ビルドスクリプトで関連セクションを更新し、インテントフィルタセクションを直接追加/削除/変更することができます。

私の質問は、これが可能かサポートされているかどうかです。 ActivityクラスのIntentFilterAttribute宣言を省略し、XMLファイルに安全に設定することはできますか?または、Xamarinはフィルタ属性を使用する必要がありますが、何らかの理由でこれが問題になるのを避けるでしょうか?

答えて

1

皮肉なことに、私は、高度なマニフェスト合併に関する今朝強化を提出:https://bugzilla.xamarin.com/show_bug.cgi?id=52857[Attribute]対XMLファイルでそれをやってと

一つの問題は、これらの項目のいくつかは(ビルド時までに生成されないことですEX:あなたの<activity>要素)。したがって、それを属性として行う方が、その要素を生成するときに、内部に入れるインテントフィルタも知っているほうがはるかに好ましい方法です。

正しい<activity>ノードを見つけて、下に子を挿入するビルドプロセスがある場合、Xamarin.Androidビルドシステムでは非常に「エラーが発生しやすい」ことがあります。

属性は必須ではありませんが、安全上の理由から推奨されています。これらの属性により、マニュアルでAndroidManifest.xmlの修正を加えて自分の足を撃つことができなくなります。

+0

応答のおかげで、それは良いタイミングです:)私はこれが事実だろうと思っていました。将来のリリースでAndroidManifest.xmlを操作するために、.NET構成ファイルのconfigトランスフォームのようなものを使用できることは確かに素晴らしいことです。その間、私は、コンパイルステップの直前にビルド時にActivity.csファイルの属性をつぶやくことに頼っていました。これは理想的ではなく、簡単ではありませんが、機能します!私はその強化について注意を払うつもりです。ありがとう。 – John

関連する問題