وصف
عند تجميع تطبيق اختبار Android باستخدام ./gradlew assembleAndroidTest
، يفشل دمج البيان مع ظهور الأخطاء التالية:
> 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.
تم الإبلاغ عن مشكلة مماثلة مع الرقم 579 في يوليو 2018 وتم إغلاقها لاحقًا في يناير 2019 دون أي حل واضح.
بيئة
مشروع المثال في examples/RNOneSignal@31b5242
والذي يستخدم رد فعل أصلي واحد إشارة v3.2.14.
خطوات التكاثر
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
الوقوع في هذا ، أيضا.
sonicdoe هل تستخدم productFlavors
؟ إذا كان الأمر كذلك ، فستحتاج إلى تغيير الأمر مثل:
buildType = "تصحيح"
productFlavor = "dev"
./gradlew assembleDevDebugAndroidTest
لا ، نموذج المشروع في examples/RNOneSignal@31b5242
(الذي استخدمته لإعادة إنتاج هذا) لا يستخدم نكهات المنتج.
أنا أواجه هذا أيضًا - أظهر بحث Google العشوائي هذه المشكلة 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"/>
حيث يجبره هذا المشروع على خفض التصنيف ؛ (
تم حل مشكلتي الشخصية عندما أنشأت باستخدام الأمر المناسب task-name
بعد الأمر gradlew
(الموصوف أعلاه).
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"
}
}
}
}
نشكرك على سعة صدرك أثناء التحقيق في المشكلة.
هودي y'all،
لسنا متأكدين حاليًا من كيفية إصلاح هذا بشكل دائم. في غضون ذلك ، يمكنك تشغيل:
./gradlew app:assembleAndroidTest
لقد أدركنا أيضًا أننا نواجه مشكلات مع ./gradlew build
لذلك نحن ننشئ علاقات عامة من شأنها إصلاح هذا أيضًا.
شكرا للتنبيه.
لقد تمكنت من الحصول على assembleAndroidTest
للعمل عن طريق حقن العناصر النائبة للبيان في رد فعل - أصلية - إشارة واحدة (على غرار https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment- 442504553) وإزالة فئة ApplicationTest
في android/src/androidTest
(والذي يبدو أنه ليس له أي تأثير على أي حال). راجع فرعي gradle-android-test
لجميع التغييرات.
لسوء الحظ ، لم أتمكن من معرفة سبب حدوث هذه المشكلة وسبب ضرورة هذه التغييرات. بقدر ما يمكن أن أكتشف ، androidTest
يتحول إلى شجرة تبعية مختلفة وهذا هو السبب في أن الاندماج الظاهر يتصرف بشكل مختلف في هذه الحالة.
rgomezp اسمحوا لي أن أعرف إذا كان لديك المزيد من البصيرة وما إذا كانت التغييرات المذكورة أعلاه ستكون على ما يرام. إذا كان الأمر كذلك ، فسأفتح طلب سحب.
sonicdoe ،
شكرا لإصلاحsonicdoe! الرجاء إنشاء العلاقات العامة
rgomezp إضافة سؤالي هنا منذ أن أغلقت التذكرة الأخرى
هل هذا الدليل ضروري ليتم تضمينه في حزمة npm أم أنه يمكن أن يعيش فقط في GitHub repo؟
لأنه إذا كانت الإجابة لا ، فقد تم حل هذه المشكلة بالنسبة لي.
أنا أسأل لأنني لا أعرف ما هي الممارسات الجيدة ولكني لا أرى حزم RN أخرى مع هذا الدليل androidTest لذلك أعتقد إما أن لا أحد يقوم باختبار أو أنها لا تتضمن اختبارات في حزمة npm؟
@ mtt87 ،
ليس من الضروري. يجب أن يكون المبدعون الأصليون قد قاموا بتضمينه عن طريق الخطأ. نحن بصدد إزالته في إصدار RN OneSignal SDK القادم. شكرا!
رائع 😄 شكرا لك
هودي y'all،
سنصدر أحدث إصدار من SDK للتفاعل الأصلي مع الإصلاحات قريبًا جدًا. إذا كنت ترغب في اختبار التغييرات الآن ، فما عليك سوى تغيير إشارة رد فعلك الأصلية في package.json للإشارة إلى هذا المستودع.
"react-native-onesignal":"geektimecoil/react-native-onesignal"
أحب سماع ملاحظاتك قبل الإصدار. هتافات!
تحرير: تجاهل هذه التعليمات حيث تم دفع PLUGIN إلى NPM
أرى أنك قمت بالفعل بإصدار أحدث إصدار ، v3.3.0 . هل يجب أن يغير هذا الإصدار أي شيء بخصوص هذه المشكلة؟ إذا كررت خطوات الاستنساخ من المنشور الأصلي ، فسأواجه نفس الخطأ بالضبط.
sonicdoe ،
هل أنت متأكد من إعادة تثبيته بشكل صحيح؟
تحرير: اختبار للتو. انت على حق. اعتذاري هنا. اعتقدت أن # 791 أصلح هذا. سأناقش مع @ jkasten2 بخصوص # 789
التعليق الأكثر فائدة
نشكرك على سعة صدرك أثناء التحقيق في المشكلة.