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月に明確な解決策なしにクローズされました。

環境

react-native-onesignalv3.2.14を使用するexamples/RNOneSignal@31b5242のサンプルプロジェクト。

再現する手順

  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 = "debug"
productFlavor = "dev"

./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"
            }
        }
    }
}

問題を調査する間、今しばらくお待ちいただきますようお願いいたします。

Howdy y'all、
現在、これを恒久的に修正する方法はわかりません。 それまでの間、次のコマンドを実行できます。
./gradlew app:assembleAndroidTest

また、 ./gradlew build問題が発生していることに気付いたので、これも修正するPRを作成しています。

これを私たちの注意を引いてくれてありがとう。

マニフェストプレースホルダーをreact-native-onesignal自体に挿入することでassembleAndroidTestを機能させることができました(https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment-と同様) 442504553)そしてandroid/src/androidTestApplicationTestクラスを削除します(とにかく効果がないようです)。 すべての変更については、私のgradle-android-testブランチを参照してください。

残念ながら、なぜこの問題が発生するのか、なぜこれらの変更が必要なのかを理解することができませんでした。 私が知る限り、 androidTestは別の依存関係ツリーに解決されるため、その場合、マニフェストのマージの動作は異なります。

@rgomezp他に洞察があり、上記の変更で問題がないかどうかを

@sonicdoe
@sonicdoeを修正してくれてありがとう! PRを作成してください

@rgomezpは、他のチケットを閉じたので、ここに私の質問を追加します

このディレクトリはnpmパッケージに含める必要がありますか、それともGitHubリポジトリにのみ存在できますか?

答えがノーの場合、この問題は私のために解決されるからです。

グッドプラクティスがわからないので質問していますが、このディレクトリandroidTestを持つ他のRNパッケージが表示されないので、誰もテストしていないか、npmパッケージにテストが含まれていないと思いますか?

@ mtt87
必要ありません。 元の作成者が誤ってそれを含めたに違いありません。 今後のRNOneSignalSDKリリースで削除されます。 ありがとう!

素晴らしい😄ありがとう

Howdy y'all、
間もなく修正されたreact-nativeSDKの最新バージョンをリリースする予定です。 今すぐ変更をテストしたい場合は、package.jsonのreact-native-onesignalを変更して、このリポジトリを指すようにしてください。

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

リリース前にフィードバックをお聞かせください。 乾杯!

編集:プラグインがNPMにプッシュされたため、これらの指示は無視してください

すでに最新バージョンのv3.3.0をリリースしている元の投稿から複製手順を繰り返すと、まったく同じエラーが発生します。

@sonicdoe
正しく再インストールしましたか?

編集:テスト済みです。 あなたは正しいです。 ここでお詫び申し上げます。 #791で修正されたと思いました。 #789について@ jkasten2と話し合います

このページは役に立ちましたか?
0 / 5 - 0 評価