web-dev-qa-db-ja.com

環境変数の使用/config.xmlのパラメーター化

Facebook認証アクセス用のcordova-plugin-facebook4プラグインを使用してionic/cordovaプロジェクトを構築しています。 config.xmlでは、次のようになります。

<plugin name="cordova-plugin-facebook4" spec="~1.7.1">
  <variable name="APP_ID" value="1234567890123456"/>
  <variable name="APP_NAME" value="My_Appy_App"/>
</plugin>

これは問題なく機能しますが、使用しているAPP_IDは開発アプリ用であり、QAなどの他の環境用に別のFacebookアプリがあります。

config.xmlでこれらの変数をパラメーター化し、ビルドステップの一部として置き換える方法はありますか?何かのようなもの:

<plugin name="foo" spec="~0.0.0">
  <variable name="bar" value="${env.APP_ID}"/>
</plugin>

...次に、APP_ID=baz ionic build Androidなどを実行します。

コルドバのドキュメントには、これを可能にするものは何もありません。

15
Explosion Pills

投稿で述べたように、公式のコルドバのドキュメントにはこれに関するドキュメントはあまりありません。この分析に時間を費やした後、これは私が結論付けたものです:

config.xmlで利用可能なプラグイン変数をパラメーター化するための既製の利用可能な最小限のヘルプがいくつかあります。これは、 公式のcordovaリンク で説明されているように、設定変数を介して実現できます。しかし、このアプローチの問題は、その動作がプラグインのコーディング方法に依存することです。

Facebookプラグインでこのアプローチを試しましたが、機能しませんでした:(以下のように試しました:

<preference name="MY_CUSTOM_STRING" default="12345678901234567" />
    <plugin name="cordova-plugin-facebook4" spec="~1.7.1">
        <variable name="APP_ID">$MY_CUSTOM_STRING</variable>
        <variable name="APP_NAME" value="My_Appy_App"/>
    </plugin>

グーグルマッププラグインのために同じアプローチを試しました、そしてそれは働きました:)私は以下のように試しました:

<preference name="MY_CUSTOM_STRING" default="12345678901234567" />
<plugin name="cordova-plugin-googlemaps" spec="~1.3.9">
    <variable name="API_KEY_FOR_Android">$MY_CUSTOM_STRING</variable>
</plugin>

したがって、私が結論付けることができるのは、パラメーター化のアプローチがコアプラグインコードに依存しているということだけです。

Facebookプラグインの場合、APP_ID変数をパラメーター化したい場合は、フックが先に進む方法だと思います。文字列の一致を置き換える単純なWindowsバッチファイルでも問題ないはずであり、ビルド前のアクションで呼び出して、必要なものを実現できます。それが役に立てば幸い。

更新:

私はブランドンのコメントに同意します。

限られた時間の中で、この問題を解決するコルドバフックを思いつくことができました。それは大雑把な方法かもしれませんし、洗練することもできますが、今のところこのアプローチはうまく機能します。フックをサンプルアプリとして私の github page に投稿し、READMEファイルにそれに関する完全な情報があります。お役に立てば幸いです。投稿を続けてください。

9
Gandhi