0

私はAndroidライブラリプロジェクトにOneSignal SDKを追加しようとしています。そのため、私は自分のライブラリーのbuild.gradleに必要な依存関係を追加してもmanifestPlaceholdersアプリケーションでライブラリのマニフェストプレースホルダを使用するにはどうすればよいですか?

 // One Signal: 
     manifestPlaceholders = [onesignal_app_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", 
           // Project number pulled from dashboard, local value is ignored. 
           onesignal_google_project_number: "XXXXXXXXXXXX"] 

問題は、私は私が追加された私のライブラリを使用してデモアプリケーションを構築しようとするとOneSignal私はこれらのエラーを取得するということです

/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error: 
    Attribute meta-data#[email protected] at AndroidManifest.xml requires a placeholder substitution but no value for <onesignal_app_id> is provided. 
/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error: 
    Attribute meta-data#[email protected] at AndroidManifest.xml requires a placeholder substitution but no value for <onesignal_google_project_number> is provided. 

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger. 

:demoapp:processDebugManifest FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':demoapp:processDebugManifest'. 
> Manifest merger failed with multiple errors, see logs 

AndroidManifest.xmlには何も手作業で追加しませんでした(アプリケーションとライブラリのどちらも)。

私のライブラリにOneSignal SDKを使用し、私のライブラリをどのアプリケーションにも追加できるように、onesignal_app_idonesignal_google_project_numberは私のライブラリを使用するすべてのアプリケーションで同じです。どうすればこれを達成できますか?

+1

私の推測では、ライブラリレベルではなく、アプリケーションレベルでプレースホルダを定義する必要があります。 'gradle.properties'や他の共通の場所をプレースホルダの値に使うことができるので、それらを複製しません。 – CommonsWare

+0

@CommonsWareしかし、これらの "キー"は私のライブラリにのみあり、それを使っているアプリではないようにする方法はありますか? 'onesignal_app_id'と' onesignal_google_project_number'を私のライブラリの他のユーザと共有しないでください。あるいは、これらの値を自分のアプリケーションの 'build.gradle'に手動で入れてもらってはいけません。 – fragon

+1

"しかし、これらの"キー "は私のライブラリにのみあり、それを使っているアプリではないようにする方法はありますか?"私が気づいているのではない。 「onesignal_app_idとonesignal_google_project_numberを他のユーザーと共有しないようにしたい」 - サービスの利用規約に従えば、読んでいないが、私はかなり驚くだろう。それにもかかわらず、私は、アプリ開発者があなたのものを使うのではなく、自分の価値観を持つ必要があると考えています。私は、「すべてのアプリ」とは、第三者ではなく、あなたのスイート内のアプリを意味すると想定していました。 – CommonsWare

答えて

-3
manifestPlaceholders = [onesignal_app_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", 
          // Project number pulled from dashboard, local value is ignored. 
          onesignal_google_project_number: "XXXXXXXXXXXX"] 

ライブラリbuild.gradleにコードを追加できます。

buildTypes { 放出{ minifyEnabled偽デバッグ真 proguardFiles getDefaultProguardFile( 'ProGuardの-android.txt')、 'proguard-rules.pro' signingConfig signingConfigs.awter manifestPlaceholders =このような

[onesignal_app_id: "xxxxxxx"、 //プロジェクト番号をダッシュ​​ボードから取得した場合、ローカル値は無視されます。 onesignal_google_project_number: "REMOTE"] } debug { マニフェストプレースホルダ= [onesignal_app_id: "xxxxx"、 //プロジェクト番号をダッシュ​​ボードから取得した場合、ローカル値は無視されます。 onesignal_google_project_number: "REMOTE"] }}

それは私のために動作します。

関連する問題