Deskripsi
Saat merakit aplikasi pengujian Android menggunakan ./gradlew assembleAndroidTest
, penggabungan manifes gagal dengan kesalahan berikut:
> 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.
Masalah serupa dilaporkan dengan #579 pada Juli 2018 dan kemudian ditutup pada Januari 2019 tanpa resolusi yang jelas.
Lingkungan Hidup
Contoh proyek di examples/RNOneSignal@31b5242
yang menggunakan react-native-onesignal v3.2.14.
Langkah-langkah untuk mereproduksi
git clone https://github.com/geektimecoil/react-native-onesignal.git
cd react-native-onesignal
git checkout 31b52420c807c22405e70b44800e20f3a8e3456e
cd examples/RNOneSignal
yarn
cd android
./gradlew assembleAndroidTest
Berlari ke ini, juga.
@sonicdoe Apakah Anda menggunakan productFlavors
? Jika demikian, Anda harus mengubah perintah seperti:
buildType = "debug"
produkFlavor = "pengembangan"
./gradlew assembleDevDebugAndroidTest
Tidak, proyek contoh di examples/RNOneSignal@31b5242
(yang saya gunakan untuk mereproduksi ini) tidak menggunakan rasa produk.
Saya juga mengalami ini - pencarian google acak menunjukkan masalah ini https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207 yang menyarankan menggunakan buildToolsVersion: 28.0.0.
Kami sudah melakukan ini, tapi kemudian saya melihat peringatan saat membangun
<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"/>
di mana proyek ini memaksanya untuk menurunkan versi ;(
Masalah pribadi saya teratasi ketika saya membangun menggunakan task-name
setelah perintah gradlew
(dijelaskan di atas).
FWIW, ini adalah bagian dari file 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"
}
}
}
}
Terima kasih atas kesabaran Anda selama kami menyelidiki masalah ini.
Apa kabar,
Saat ini kami tidak yakin bagaimana cara memperbaikinya secara permanen. Sementara itu, Anda dapat menjalankan:
./gradlew app:assembleAndroidTest
Kami juga menyadari bahwa kami mengalami masalah dengan ./gradlew build
sehingga kami membuat PR yang akan memperbaikinya juga.
Terima kasih telah membawa ini menjadi perhatian kami.
Saya bisa membuat assembleAndroidTest
bekerja dengan menyuntikkan placeholder manifes ke react-native-onesignal itu sendiri (mirip dengan https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment- 442504553) dan menghapus kelas ApplicationTest
di android/src/androidTest
(yang tampaknya tidak berpengaruh). Lihat cabang gradle-android-test
untuk semua perubahan.
Sayangnya, saya tidak dapat memahami mengapa masalah ini terjadi dan mengapa perubahan ini diperlukan. Sejauh yang saya tahu, androidTest
menyelesaikan ke pohon ketergantungan yang berbeda itulah sebabnya penggabungan manifes berperilaku berbeda dalam kasus itu.
@rgomezp Beri tahu saya jika Anda memiliki wawasan lebih lanjut dan apakah perubahan di atas akan baik-baik saja. Jika demikian, saya akan membuka permintaan tarik.
@sonicdoe ,
Terima kasih atas perbaikannya @sonicdoe! Silahkan buat PRnya
@rgomezp menambahkan pertanyaan saya di sini karena Anda menutup tiket lainnya
apakah direktori ini perlu dimasukkan dalam paket npm atau hanya dapat hidup di repo GitHub?
Karena jika jawabannya tidak, maka masalah ini selesai untuk saya.
Saya bertanya karena saya tidak tahu apa praktik yang baik tetapi saya tidak melihat paket RN lain dengan direktori ini androidTest jadi saya kira tidak ada yang menguji atau mereka tidak menyertakan tes dalam paket npm?
@mtt87 ,
Itu tidak perlu. Pembuat aslinya pasti tidak sengaja memasukkannya. Kami menghapusnya dalam rilis RN OneSignal SDK yang akan datang. Terima kasih!
Luar biasa Terima kasih
Apa kabar,
Kami akan segera merilis versi terbaru dari react-native SDK dengan perbaikan. Jika Anda ingin menguji perubahan sekarang, cukup ubah react-native-onesignal Anda di package.json Anda untuk menunjuk ke repositori ini.
"react-native-onesignal":"geektimecoil/react-native-onesignal"
Akan senang mendengar tanggapan Anda sebelum rilis. Bersulang!
EDIT: ABAIKAN INSTRUKSI INI SEBAGAI PLUGIN TELAH DUSUK KE NPM
Saya melihat Anda sudah merilis versi terbaru, v3.3.0 . Haruskah rilis ini mengubah sesuatu tentang masalah ini? Jika saya mengulangi langkah-langkah reproduksi dari posting asli , saya mengalami kesalahan yang sama persis.
@sonicdoe ,
Apakah Anda yakin Anda menginstalnya kembali dengan benar?
Sunting: baru saja diuji. Anda benar. Saya minta maaf di sini. Saya pikir # 791 memperbaiki ini. Saya akan berdiskusi dengan @jkasten2 tentang #789
Komentar yang paling membantu
Terima kasih atas kesabaran Anda selama kami menyelidiki masalah ini.