如何在应用程序中使用库的manifestPlaceholders?

fra*_*gon 5 android android-manifest android-library android-gradle-plugin onesignal

我正在尝试将OneSignal SDK添加到我的 Android 库项目中。因此,我在我的库中添加了必要的依赖项,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"]
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试构建一个使用我添加了 OneSignal 的库的演示应用程序时,我收到以下错误:

/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error:
    Attribute meta-data#onesignal_app_id@value 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#onesignal_google_project_number@value 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
Run Code Online (Sandbox Code Playgroud)

我没有手动添加任何内容AndroidManifest.xml(无论是应用程序还是库)。

我想在我的库中使用 OneSignal SDK,并且能够将我的库添加到任何应用程序,这样onesignal_app_idonesignal_google_project_number对于使用我的库的所有应用程序都是相同的。我怎样才能实现这个目标?

小智 -6

manifestPlaceholders = [onesignal_app_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
                            // Project number pulled from dashboard, local value is ignored.
                            onesignal_google_project_number: "XXXXXXXXXXXX"]
Run Code Online (Sandbox Code Playgroud)

您可以将代码添加到库 build.gradle 中。

像这样:

buildTypes {
        release {
            minifyEnabled false
            debuggable true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.awter
            manifestPlaceholders = [onesignal_app_id: "xxxxxxx",
                                    // Project number pulled from dashboard, local value is ignored.
                                    onesignal_google_project_number: "REMOTE"]
        }
        debug {
            manifestPlaceholders = [onesignal_app_id: "xxxxx",
                                    // Project number pulled from dashboard, local value is ignored.
                                    onesignal_google_project_number: "REMOTE"]
        }
    }
Run Code Online (Sandbox Code Playgroud)

这个对我有用。