React-native-onesignal: 组装Android测试应用程序时清单合并失败

创建于 2019-06-12  ·  15评论  ·  资料来源: OneSignal/react-native-onesignal

描述

使用./gradlew assembleAndroidTest组装 Android 测试应用程序时,清单合并失败并出现以下错误:

> Task :react-native-onesignal:processDebugAndroidTestManifest FAILED
/…/react-native-onesignal/examples/RNOneSignal/node_modules/react-native-onesignal/android/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger8422387923641009676.xml Error:
        Attribute meta-data#onesignal_app_id<strong i="9">@value</strong> at manifestMerger8422387923641009676.xml requires a placeholder substitution but no value for <onesignal_app_id> is provided.
/…/react-native-onesignal/examples/RNOneSignal/node_modules/react-native-onesignal/android/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger8422387923641009676.xml Error:
        Attribute meta-data#onesignal_google_project_number<strong i="10">@value</strong> at manifestMerger8422387923641009676.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.

2018 年 7 月,#579 报告了类似的问题,随后于 2019 年 1 月关闭,没有任何明显的解决方案。

环境

examples/RNOneSignal@31b5242的示例项目使用 react-native-onesignal v3.2.14。

重现步骤

  1. git clone https://github.com/geektimecoil/react-native-onesignal.git
  2. cd react-native-onesignal
  3. git checkout 31b52420c807c22405e70b44800e20f3a8e3456e
  4. cd examples/RNOneSignal
  5. yarn
  6. cd android
  7. ./gradlew assembleAndroidTest
Android Help Wanted

最有用的评论

感谢您在我们调查问题期间的耐心等待。

所有15条评论

也遇到了这个。

@sonicdoe你在使用productFlavors吗? 如果是这样,您需要更改命令,例如:

buildType = "调试"
productFlavor = "开发"

./gradlew assembleDevDebugAndroidTest

不, examples/RNOneSignal@31b5242的示例项目(我曾用它来重现这个)不使用产品风味。

我也遇到了这个问题 - 一个随机的谷歌搜索显示了这个问题https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207这建议使用 buildToolsVersion: 28.0.0。

我们已经这样做了,但是我在构建过程中注意到了一个警告

<br i="8"/> OneSignalPlugin: WARNING: OneSignalPlugin: Downgraded 'com.android.support:28.0.0' -> 27.+ to prevent compile errors! Recommend updating your project's compileSdkVersion!<br i="9"/>

这个项目迫使它降级;(

当我在gradlew命令(如上所述)之后使用正确的task-name构建时,我的个人问题得到了解决。

FWIW,这是我的android/build.gradle文件的一部分:

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 28
                buildToolsVersion '28.0.3'
            }
        }
    }
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "28.0.0"
            }
        }
    }
}

感谢您在我们调查问题期间的耐心等待。

大家好,
我们目前不确定如何永久解决此问题。 同时,您可以运行:
./gradlew app:assembleAndroidTest

我们也意识到我们遇到了./gradlew build问题,所以我们正在创建一个 PR 来解决这个问题。

谢谢让我们注意到这个。

通过将清单占位符注入 react-native-onesignal 本身(类似于 https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment-),我能够让assembleAndroidTest工作442504553),并删除ApplicationTestandroid/src/androidTest (这似乎有反正也没效果)。 请参阅我的gradle-android-test分支以了解所有更改。

不幸的是,我无法弄清楚为什么会出现此问题以及为什么需要进行这些更改。 据我所知, androidTest解析为不同的依赖树,这就是清单合并在这种情况下表现不同的原因。

@rgomezp让我知道您是否有更多见解以及上述更改是否

@sonicdoe
感谢您修复@sonicdoe! 请创建 PR

@rgomezp在这里添加我的问题,因为您关闭了另一张票

这个目录是否必须包含在 npm 包中,还是只能存在于 GitHub 存储库中?

因为如果答案是否定的,那么这个问题就为我解决了。

我问是因为我不知道什么是好的做法,但我没有看到其他带有此目录 androidTest 的 RN 包,所以我猜要么没有人在测试,要么他们没有在 npm 包中包含测试?

@mtt87
没有必要。 原作者一定是不小心把它包含了。 我们将在即将发布的 RN OneSignal SDK 版本中删除它。 谢谢!

太棒了😄 谢谢

大家好,
我们将很快发布带有修复程序的最新版本的 react-native SDK。 如果您现在想测试更改,只需将 package.json 中的 react-native-onesignal 更改为指向此存储库。

"react-native-onesignal":"geektimecoil/react-native-onesignal"

希望在发布之前听到您的反馈。 干杯!

编辑:忽略这些说明,因为插件已被推送到 NPM

我看到你已经发布了最新版本v3.3.0 。 此版本是否应该更改有关此问题的任何内容? 如果我重复原始帖子中的复制步骤,我会遇到完全相同的错误。

@sonicdoe
你确定你重新安装正确吗?

编辑:刚刚测试。 你是对的。 我在这里道歉。 我以为#791 解决了这个问题。 我将与@jkasten2讨论 #789

此页面是否有帮助?
0 / 5 - 0 等级