Flutter: دعم حزم التطبيقات مع ثنائيات 32 بت و 64 بت بداخلها

تم إنشاؤها على ١ مايو ٢٠١٩  ·  194تعليقات  ·  مصدر: flutter/flutter

تحذير

هذا الإصدار غير متوافق مع متطلبات تشغيل 64 بت.

تتوفر حزم APK أو حِزم التطبيقات التالية لأجهزة 64 بت ، لكنها تحتوي على رمز أصلي 32 بت فقط: {version code}.

اعتبارًا من 1 أغسطس 2019 ، يجب أن تتوافق جميع الإصدارات مع متطلبات Play 64 بت.

قم بتضمين كود أصلي 64 بت بالإضافة إلى كود أصلي 32 بت في تطبيقك. استخدم تنسيق نشر "حزمة تطبيقات Android" للتأكد تلقائيًا من أن بنية كل جهاز تتلقى فقط الرمز الأصلي الذي تحتاجه. يتعلم أكثر

يظهر هذا التحذير عند محاولة نشر aab تم إنشاؤه بواسطة flutter build appbundle إلى متجر Play منذ اليوم .

هل هذا شيء يجب أن أقلق بشأنه أو سوف يقوم Flutter بحله تلقائيًا ، أي هل تم التخطيط بالفعل لحل هذه المشكلة في الوقت المناسب؟

crowd engine waiting for PR to land (fixed)

التعليق الأكثر فائدة

مرحبًا بفريق Flutter ،
أود أن أؤكد على حالة هذا الموضوع. من وجهة نظري ، هناك مشكلتان خطيرتان:

  • إصدار الرفرفة المستقر الحالي 1.7.8+hotfix.3 لا يُنشئ تطبيقات ثابتة - على الأقل split-per-abi لا يعمل كما ينبغي - يواجه arm32 مشكلة انحدار ولا يمكن تشغيله على بعض أجهزة arm32 . لم يتضح بعد متى سيتم إصلاح ذلك ؛
  • الموعد النهائي في الأول من آب (أغسطس) - في غضون أسبوع تقريبًا ، لن نتمكن كمطورين من تحديث تطبيقات flutter الجديدة أو إصدارها إلى متجر Google Play Store - بهذه البساطة. بالنظر إلى مشكلة إصدار الرفرفة الحالية (كما هو مذكور أعلاه) والوقت المتبقي ، لا أعتقد أنه من الممكن توقع الحصول على الإصلاح في قناة مستقرة قبل نهاية الشهر (ما لم يكن لدى شخص منكم عصا سحرية: - ))

بالنظر إلى المسألتين السابقتين ، أود أن أقترح خطة الطوارئ التالية ، والتي من شأنها أن تخدمنا IMO على أفضل وجه كمطورين:

  • التراجع عن القناة المستقرة إلى نسختها السابقة لـ hotfix.2
  • تأجيل الموعد النهائي في الأول من آب (أغسطس) لشهرين - أتفهم أن هذا سيتطلب بعض التصعيد بشأن المشكلة ، لكنني آمل أن تفهموا يا رفاق مدى خطورة التأثير المحتمل إذا لم يتمكن المطورون من إصدار تطبيق رفرفة موثوق به بعد الأول من آب (أغسطس) بسبب مشكلات إطار الرفرفة.

يمكنني التحدث نيابة عني فقط ، ولكن لدي عملاء لديهم عقود وقررت الانتقال من React Native إلى Flutter ، حيث كنت أعتقد أن Google ستوفر دعمًا أفضل لمنتجاتهم الخاصة. لدي مشاريع قيد التنفيذ وتطبيقات لدعمها.
الآن أجد نفسي في حالة عبثية ، عندما أجبرتني Google على إصدار إصدار 64 بت apk وفي نفس الوقت لا تزودني Google بالأداة للقيام بذلك (ونعم ، أعرف أن فريق Flutter ليس مثل Google Play فريق ولكن من حيث أقف - أنت نفس الكيان التجاري).
إذا فشلت Google في التسليم في الوقت المحدد ، فسيؤدي ذلك إلى رد قوي من Flutter ، نظرًا لأن كل يوم بعد الأول من أغسطس سيؤدي إلى تقليص مصداقية إطار العمل.
أعتذر إذا كانت كلماتي أقوى قليلاً ، أتمنى فقط أن تضع نفسك في مكاني في الوقت الحالي.

أي شخص - يرجى التصويت على هذا ، ونأمل أن يكون صوتنا مسموعًا!

ال 194 كومينتر

لا

تلقيت نفس التحذير. هل يمكن لشخص من فريق Flutter أن يهتم بالتعليق أو شرح الأمر نفسه ، وما الذي يمكننا فعله للتأكد من أن حزمة التطبيقات التي تم إنشاؤها باستخدام flutter build appbundle --release تحتوي أيضًا على كود 64 بت. zoechi هل يمكن أن تخبرنا شيئًا عنها؟

أنا أيضا أرى هذا. هذه لقطة شاشة:
Screen Shot 2019-05-02 at 12 25 57 PM

ووثائق "اعرف المزيد" هنا: https://developer.android.com/distribute/best-practices/develop/64-bit

أنا أتطلع إلى تلقي رد من فريق Flutter.

لقد تلقيت رسالة التحذير هذه اليوم أيضًا.

نفس المشكلة هنا.

أنا أيضا

أنا أيضا

هل يوجد حل لهذا بعد؟

انظر إلى هذا: https://github.com/flutter/flutter/issues/18494#issuecomment -477502287

عملت معي.

تم تعطيل زر [بدء التشغيل للاختبار الداخلي] في صفحة إصدارات التطبيق في Google Play Console (الشاشة التي تظهر فيها رسالة التحذير 64 بت أعلاه)

متطلبات حزمة 64 بت هي الآن أداة إيقاف عرض لمشاريع الرفرفة.

تضمين التغريدة

يبدو أن متجر Play قد بدأ في إصدار تحذير يتم تشغيله في حالة استخدام إرشادات الإصدار الافتراضية من Flutter.
https://flutter.dev/docs/deployment/android

من الممكن إرسال ملفات APK لكل من ARM 32 بت و 64 بت باستخدام Flutter ، الأمر يتطلب حاليًا بضع خطوات إضافية. تتم مناقشة الطرق المختلفة لحل هذه المشكلات في:
https://github.com/flutter/flutter/issues/18494#issuecomment -477502287

نحن نبحث الآن أيضًا لمعرفة أفضل السبل التي يجب أن نقوم بها بتحديث النموذج / الأدوات / خطوات الإصدار الافتراضية لتجنب هذا التحذير.

شكرا لصبرك.

eseidelGoogle صححني إذا كنت مخطئًا ، ومع ذلك ، اعتقدت أن الهدف الكامل لحزمة التطبيق هو ملف apk الضروري فقط لكل مستخدم.

كما أشرت في سؤالي الأصلي ، أنا أستخدم flutter build appbundle . في هذه الحالة ، لن يتم تطبيق الحل الذي اقترحته ، أليس كذلك؟

لقد جربنا أداة flutter build appbundle بالأمس وتلقينا رسائل خطأ من متجر play تفيد بأنه كان إنشاء تصحيح ...

بالطبع يحتاج أيضًا إلى العمل في سيناريوهات add2app حيث لا يتم استخدام الإرشادات من flutter.dev ولكن بدلاً من ذلك ، يتم استخدام android studio build-> إنشاء APK الموقّع

شكرا لك على وصفها بأنها حرجة

لقد ناقشنا هذا للتو شخصيًا. tvolkert سيجد شخصًا ما للمساعدة في دفع هذا إلى الإغلاق.

أتلقى أيضًا هذا التحذير ، هل هناك طريقة للتخلف عن 64 بت؟

يمكن أن يؤدي التعديل الصغير على build.gradle تضمين 64 بت من libs الأصلي في الإصدار apk و aab - ألق نظرة هنا للحصول على حل بديل

من أجل googles ، يرجى إطلاعنا على عدد الهواتف التي لا تزال تستخدم 32 بت.
إذا قمت بإضافة 64 بت و 32 بت libs ، فستزيد حجم apk النهائي.

لدي مشروع لا يحتوي على رفرفة ، حيث قمت بتقسيم APK بواسطة ABI ، لذلك لديّ تطبيقات منفصلة لـ 32 بت و 64 بت لتقليل الحجم. الآن يبدو أن هذه الخطوة تجبرني على زيادة حجم apk للمضي قدمًا.
لكن لماذا ؟

ليس لدي إحصائيات حول عدد الهواتف 32 بت فقط الموجودة في الهند / إفريقيا ... أنا متأكد من أنه لا يوجد شيء في أوروبا والولايات المتحدة وأجزاء من آسيا.
ماذا عن x86 / x86_64 مقابل armeabi / arm64-v8a؟ هل نحتاج إلى إضافة libflutter.so لجميع وحدات ABI الأربعة في ملف apk للإنتاج النهائي؟
.. أيضًا mips .. هل هناك أي هواتف ما زالت تستخدم mips؟ فقط جوجل يعرف.

VarolOkan استخدم AAB ودع google تنشئ ملفات APK لجميع مجموعات ABI و screen dpi التي تحتاجها.

تم تعطيل زر [بدء التشغيل للاختبار الداخلي] في صفحة إصدارات التطبيق في Google Play Console (الشاشة التي تظهر فيها رسالة التحذير 64 بت أعلاه)

متطلبات حزمة 64 بت هي الآن أداة إيقاف عرض لمشاريع الرفرفة.

eseidelGoogle أو أي شخص - هل يمكن لأي شخص تأكيد ما إذا كان الأمر كذلك
أ) سدادة عرض
أو ب) تحذير حتى أغسطس
راجع: https://forums.expo.io/t/warning-with-the-google-play-64-bit-requirement/22305
يشير إلى وجود بعض المربعات على اليسار للتحقق من تشغيلها ، وإذا كان التحذير يشير إلى أن شهر أغسطس يبدو أنه مشكلة كبيرة إذا كان في الواقع أوائل شهر مايو.

أيضًا - من المفيد جدًا معرفة ما إذا كانت في الواقع لا توجد أجهزة 32 بت تقريبًا واستخدام خط واحد abiFilter لذراع 64 بت هو خيار قابل للتطبيق لدعم 99.5٪ من المستخدمين أو شيء من هذا القبيل ؛ رأيت شخصًا ما ينظف منذ عام كامل "جميع الهواتف في السوق" كانت 64 بت ... ربما هذا يعني أن هناك الكثير من الهواتف القديمة؟

ما أفهمه هو أن هذا ليس سدادة عرض ، بل هو تحذير شائع. لقد طلبنا من blasten إلقاء نظرة على ما يمكننا القيام به هنا لجعل إعداد Flutter الافتراضي يتجنب هذا التحذير. أتوقع أن يكون لدينا بعض التحديثات في الأيام القليلة المقبلة.

كما قال eseidelGoogle ، https://github.com/flutter/flutter/issues/18494#issuecomment -489807239؟

أليست هذه مشكلة بعد الآن؟ https://github.com/flutter/flutter/issues/18494#issuecomment -482795450

إنه ليس عرضًا. تلقيت التحذير لكنني تمكنت من تحرير تطبيقي في
في playstore.

كر مورتن

يوم الثلاثاء ، 7 مايو 2019 ، الساعة 17.46 ، Audrius Karosevicius [email protected]
كتب:

أليست هذه مشكلة بعد الآن؟ # 18494 (تعليق)
https://github.com/flutter/flutter/issues/18494#issuecomment-482795450

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/flutter/flutter/issues/31922#issuecomment-490135779 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AA4B4J5BY3BJVIELNEPC4N3PUGP7BANCNFSM4HJU7TZA
.

>

؛-)
/ مورتن

الويب: http://buildsucceeded.dk
موبيل: 51 21 90 79

كي تختصر:

1) في وقت سابق من هذا العام ، أبلغت شركة Play المطورين أنها ستطلب من التطبيقات التي تم تحميلها إلى المتجر توفير إصدارات 64 بت اعتبارًا من أغسطس (https://android-developers.googleblog.com/2019/01/get-your-apps-ready -64 بت. html). هذا الأسبوع ، بدأ متجر Play في عرض رسالة إعلامية للتطبيقات التي تم تحميلها لتقديم تحذير بالمتطلبات القادمة. ومع ذلك ، لم تتغير متطلبات متجر Play في الوقت الحالي.

2) متطلبات APK 64 بت التي يمكن لمراجع التحذير الامتثال لها الآن مع القليل من الجهد اليدوي لتعديل ملفات التدرج في مشروع Flutter: https://github.com/flutter/flutter/issues/18494#issuecomment - 489807239 لمثال واحد عن كيفية القيام بذلك.

3) نحن نعمل على جعل السلوك الافتراضي لـ Flutter يتوافق مع التحديثات القادمة لإرشادات Play حول دعم 64 بت دون أي جهد إضافي من المستخدمين. أتوقع أن يتم الانتهاء من العمل في الأيام / الأسابيع القليلة القادمة ، قبل وقت طويل من المواعيد النهائية لشهر أغسطس.

إذا فاتني شيء ما أعلاه ، من فضلك لا تتردد في التعليق أو التواصل معنا. نأسف لعدم تحديث هذا قبل تشغيل Play للتحذير. شكرا لكم جميعا لمساعدتكم وملاحظاتكم!

eseidelGoogle

  1. لا يمكنني نشر التطبيق الذي تم إنشاؤه بواسطة flutter build apk . لا يقبل متجر Play إصدارات 32 بت فقط في ملف التعريف الخاص بي.
  2. فشل الحل من # 18494 (تعليق) على أجهزة 32 بت مثل OnePlus One.

في رأيي ، إنها أداة عرض.

eseidelGoogle

  1. تم الحل. لا يقبل Google Play أي إصدارات إذا لم تتم تهيئة التصنيف والبلدان. مجرد الرسالة مضللة.

متطلبات APK 64 بت التي يمكن أن تمتثل لها مراجع التحذير الآن مع القليل من الجهد اليدوي لتعديل ملفات gradle في مشروع Flutter: # 18494 (تعليق) على سبيل المثال عن كيفية القيام بذلك.

بعد ساعات قليلة من التجربة والخطأ ، لم أتمكن من إنتاج ملف apk موقّع أو حزمة تحتوي على libflutter 64 بت.

إن libflutter.so الوحيد المتضمن في الحزمة هو ملف
armeabi-v7a (32 بت)
، عند استخدام
Android Studio 3.4
بناء # AI-183.5429.30.34.5452501 ، تم إنشاؤه في 10 أبريل 2019

القائمة: إنشاء> إنشاء حزمة موقعة / APK


flutter build apk --release --target-platform=android-arm64 -v
flutter build appbundle --release --target-platform=android-arm64 -v

كلاهما يفشل @> المهمة: التطبيق: فشل ValidateSigningRelease

ciez أنتج هذا

$ flutter build apk --release --target-platform=android-arm64
Initializing gradle...                                              1.1s
Resolving dependencies...                                           1.8s
Running Gradle task 'assembleRelease'...                                
Running Gradle task 'assembleRelease'... Done                       9.0s
Built build/app/outputs/apk/release/app-release.apk (7.5MB).

تضمين التغريدة
نعم إنه يعمل.
اكتشف ما هي المشكلة: "~" في المسار إلى keystore.jks يلزم استبداله بـ / home / user

آسف بشأن الإنذار الكاذب.

يبدو أن كل حزمة مبنية على هذا النحو يمكن أن تستهدف قوسًا واحدًا على الأكثر؟

في انتظار تحديث Flutter حيث أدى الحل إلى كسر تصميماتي.

mulderpf ما الحل البديل الذي قمت بتطبيقه ، وكيف

شاهد هذا التعليق للحصول على آخر تحديث من فريق Flutter.

حصلت على تحديث: لدي هذا العمل في فرعي!
الاقتراح هو استخدام flutter build appbundle --release --target-platform=android-arm-all (يُنصح بتقسيم APK خارج الصندوق) أو flutter build apk --release --target-platform=android-arm-all في إصدار مستقبلي.

هل هناك أي شخص في منطقة توقيت المحيط الهادي على استعداد لتجربته؟ إذا كان الأمر كذلك ، فيرجى التواصل مع Gitter أو Slack :)

blasten للأسف لم أتمكن من إنتاج appbundle مع فرعك. فشل Gradle في app:properties بطريقة ما ، لكن بالنظر إلى الكود يبدو واعدًا.
هل تمكنت من التحقق من أن flutter/engine سيحمل لقطات AOT من دليل ./lib/ ؟ بالنظر إلى رمز المحرك ، فإنه يستخدم الأصول في كل مكان ... إذا نجح ذلك ، فسيؤدي ذلك إلى حل مشكلة حزم التطبيقات الشاملة ، لأنها تفتقر حاليًا إلى دعم استهداف دليل الأصول بواسطة ABI.

SPodjasek صحيح ، سيحتاج أيضًا إلى بناء محلي للمحرك ، لذلك تبحث الفئات في APK عن اللقطات الجديدة.

blasten لقد تمكنت من إصلاح شجرة base/lib/${abi}/

  4649616  2019-05-13 20:52   base/lib/arm64-v8a/isolate_snapshot_data.so
  6296768  2019-05-13 20:52   base/lib/arm64-v8a/isolate_snapshot_instr.so
  8472736  2019-05-13 20:52   base/lib/arm64-v8a/libflutter.so
    32352  2019-05-13 20:52   base/lib/arm64-v8a/vm_snapshot_data.so
    19200  2019-05-13 20:52   base/lib/arm64-v8a/vm_snapshot_instr.so
  3700504  2019-05-13 20:52   base/lib/armeabi-v7a/isolate_snapshot_data.so
  6019680  2019-05-13 20:52   base/lib/armeabi-v7a/isolate_snapshot_instr.so
  6036116  2019-05-13 20:52   base/lib/armeabi-v7a/libflutter.so
    23520  2019-05-13 20:52   base/lib/armeabi-v7a/vm_snapshot_data.so
    12640  2019-05-13 20:52   base/lib/armeabi-v7a/vm_snapshot_instr.so

وأنا أتساءل هل يكفي تعديل هذا ...

https://github.com/flutter/engine/blob/1b649a57d18a8c41ae017d79cf9bdb999a2276ac/shell/platform/android/io/flutter/view/FlutterMain.java#L334 -L336

إلى شيء مثل:

getContext().getApplicationInfo().nativeLibraryDir;

بالطبع ، لن يكون الأمر بهذه البساطة ، ولكن للحصول على الفكرة العامة ...

إليك كيفية تجربة flutter build appbundle مع دعم 32 بت و 64 بت:

  1. قم بتنزيل flutter.jar من https://drive.google.com/open؟id=1yAkfhPKfhdd8MwW39qfkZDePc66SMA_z وضعه تحت {flutterInstallationPath}/bin/cache/artifacts/engine/android-arm-release . للتحقق من مسار تثبيت Flutter ، استخدم which flutter

إذا كنت تريد رؤية التغييرات على FlutterMain.java ، فراجع: https://github.com/blasten/engine/commit/b3ab9def28a414ffa53bf10ad6a3249f31ed00e3

  1. تحقق من التصحيح من هذا الفرع:
$ cd {flutterInstallationPath}
$ git remote add arm-all https://github.com/blasten/flutter
$ git fetch arm-all apk_defaults
$ git checkout apk_defaults

$ git build appbundle --release --target-platform=android-arm-all

اعلمني ماذا وجدت.

+1

danysz بدلاً من كتابة +1 ، إذا كنت قد أيدت هذه المشكلة ، فسيكون ذلك أكثر منطقية (لا توجد مشاعر قاسية بالنسبة لك). بالنسبة للآخرين ، إذا قرأوا هذه الرسالة ، فيرجى عدم كتابة "أنا أيضًا" أو "نفس الشيء هنا" أو "+1" ، وبدلاً من ذلك صوّت على هذه المشكلة.

شكرا لك!

فشل بدء تطبيقات blasten :

05-14 10:50:35.979  3445 28828 I ActivityManager: Start proc 30019:xxx/u0a262 for activity xxx/com.example.flutterapp.MainActivity
05-14 10:50:36.067 30019 30019 I FirebaseInitProvider: FirebaseApp initialization successful
05-14 10:50:36.108 30019 30019 E flutter : [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
05-14 10:50:36.108 30019 30019 E flutter : [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
05-14 10:50:36.108 30019 30019 E flutter : [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
05-14 10:50:36.108 30019 30019 F flutter : [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
05-14 10:50:36.108 30019 30019 F libc    : Fatal signal 6 (SIGABRT), code -6 in tid 30019 (xxx), pid 30019 (xxx)

يذهب هذا إلى جهازي الفعلي وجهاز 9/10 Test Lab - لدينا نتيجة غير متسقة لـ Pixel-Q-beta.

danysz بدلاً من كتابة +1 ، إذا كنت قد أيدت هذه المشكلة ، فسيكون ذلك أكثر منطقية (لا توجد مشاعر قاسية بالنسبة لك). بالنسبة للآخرين ، إذا قرأوا هذه الرسالة ، فيرجى عدم كتابة "أنا أيضًا" أو "نفس الشيء هنا" أو "+1" ، وبدلاً من ذلك صوّت على هذه المشكلة.

شكرا لك!

انتهى

blasten بالنظر إلى التغييرات التي أجريتها ، وجدت أنه بالنسبة للتطبيقات الحالية ، يحتاج المرء إلى تعديل AndroidManifest.xml

diff --git a/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl b/packages/flutter_tools/templates/
app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
index 4778a2080..f3492835e 100644
--- a/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
+++ b/packages/flutter_tools/templates/app/android.tmpl/app/src/main/AndroidManifest.xml.tmpl
@@ -24,6 +24,11 @@
             <meta-data
                 android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                 android:value="true" />
+            <!-- If true, the snapshots are read from lib instead of the assets 
+                 directory in the APK. -->
+            <meta-data
+                android:name="io.flutter.view.FlutterMain.snapshot-in-lib"
+                android:value="${snapshotInLib}" />
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.LAUNCHER"/>

ومع ذلك ، فإنه لا يزال يفشل ...

تضمين التغريدة

git build
$ git build appbundle --release --target-platform=android-arm-all
"git build" or "flutter build" ? :-)

للأسف لم أتمكن من إنتاج تفاصيل مع تعليماتك. فشل Gradle في التطبيق: الخصائص بطريقة ما (بعد "أداة رفرفة البناء ..." وبعض التنزيلات من android-arm - * ....).

يبدو أن عملية التنزيل قد تجاوزت flutter.jar

MoacirSchmidt لقد واجهت مشكلات مماثلة ، لكن تنظيف أدوات البناء ( flutter clean ) وذاكرة التخزين المؤقت gradle ( ~/.gradle/caches & ${projectRoot}/android/.gradle ) ساعدني

للأشخاص الذين لديهم مشكلة في إنشاء ملف apk 64 بت.
هذا الإعداد يعمل بالنسبة لي.

بناء

تشغيل flutter build apk --release --target-platform=android-arm

زيادة الإصدارالرمز

تشغيل flutter build apk --release --target-platform=android-arm64

مزيد من المناقشة على https://github.com/flutter/flutter/issues/18494

flutter build appbundle الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟

بالنسبة للأشخاص ، مثلي ، الذين يخشون تغيير ملفات gradle - إذا كنت تريد إصدار 64 بت فقط ، فإن flutter build apk --release --target-platform=android-arm64 يعمل حتى بدون تعديل build.gradle.

blasten جربت flutter build appbundle في قناة beta . عندما أحاول التحميل إلى متجر Play ، ما زلت أتلقى خطأ 32/64.

أعلم أنك قلت master لكن لا يزال لدي بعض الأخطاء التي أعمل عليها في هذا الفرع. أردت فقط أن أعطيك هذه المعلومات!

أنا أيضا أتلقى هذا التحذير!

هل هناك أي طريقة لإنشاء حزمة تطبيقات لجميع البنى؟

أي تحديث حول كيفية إصلاحه؟

أقوم بإغلاق هذا الخطأ لأنه يشير إلى حزم التطبيقات. إذا قمت بالتبديل إلى الفرع الرئيسي ، فيمكنك استخدام flutter build appbundle لإنشاء حزم التطبيقات التي تدعم معماريات 32 و 64 بت لوحدة المعالجة المركزية. إذا كنت تفضل أو لا يمكنك استخدام حزم التطبيقات ، فاتبع هذا الموضوع للحصول على دعم إضافي عبر حزم APK الدهون.

blasten - هل يمكنك من فضلك تقديم نوع من التعليمات حول كيفية استخدامه من داخل Android Studio؟
هنا هو تكوين الرفرفة الحالي الخاص بي:

ملخص الطبيب (لرؤية كل التفاصيل ، قم بتشغيل flutter doctor -v):
[√] Flutter (قناة مستقرة ، v1.2.1 ، في Microsoft Windows [الإصدار 10.0.17763.503] ، locale en-US)
[√] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[√] Android Studio (الإصدار 3.4)

متى سينتقل هذا التغيير إلى الفرع stable ؟

blasten هل يعمل مع Add2App؟

blasten كيف توقع حزمة التطبيقات التي تم إنشاؤها بواسطة flutter build appbundle؟

blasten هل هي طريقة جيدة لاستخدام الفرع الرئيسي لتطبيقات الإنتاج؟

dblokhin يمكنك استخدام flutter channel master للتبديل إلى القناة الرئيسية. لاحظ أن هذا متاح الآن على قناة dev أيضًا.

tvolkert - أي إطار زمني يتم فيه دمج هذا في الفرع stable ؟

@ angel1st سأضيف حوالي 3 أشهر من الآن.

truongsinh - بالنظر إلى آب (أغسطس) ، فإن الأول هو حوالي شهرين من الآن ، أتوقع

@ angel1st انها مستقرة بالفعل! سأكتشف المزيد ...

@ angel1st انها مستقرة بالفعل!

هل انت متاكد من ذلك؟ المستقر الحالي هو 1.5.4 -fix 2 ant ، فهو لا يولد حزمًا تحتوي على كل من 32 و 64. أم أنني أفتقد شيئًا ما؟

shinayser ليس بعد ، آسف. سأكتشف المزيد وأقوم بتحديث الموضوع. كما ذكر تود ، فإن القناة master هي الخيار الوحيد في هذه المرحلة.

لقد جربت حزمة appbundle. كان لدي الإصدار 1.6.1-pre من Flutter في الماستر
قناة.

كان ناتج الحزمة حوالي 12 ميغا بايت ولم يولد التحذير
وكانت أحجام ملفات APK الفردية حوالي 7. كل شيء جيد حتى الآن.

ولكن عندما فتحت التطبيق بعد التحديث من خلال متجر Play ، حصل تطبيقي
عالق في شاشة Splash.

لم يكن لدي أي خيار للعودة إلى flutter build apk الذي عمل بشكل جيد ، أتساءل كيف
و لماذا.

لذلك لا أعتقد أن هذه القضية قد أغلقت بعد ، لأنه على الرغم من التحذير
ذهب مع appbundle ، وكذلك التطبيق نفسه. appbundle هو
جعل التطبيق عديم الفائدة لأنه عالق في شاشة البداية.

في هذه الحالة ، لا تتردد في التواصل معي مباشرة على Gitter: https://gitter.im/flutter/flutter. إذا كان ذلك ممكنًا ، فسيكون من المفيد إرسال ملف .aab الذي أنشأته الأداة.

أعتقد أننا بحاجة إلى توثيق الاستخدام بطريقة أو بأخرى. أعتقد أيضًا أن دمج هذا في stable قبل نهاية يونيو أمر حيوي إذا كان فريق Flutter يريد إبقاء المطورين في مكانه.

@ angel1st نحن نعمل بجد لترقية هذا العمل إلى stable بحلول نهاية شهر يونيو.

بعض التحديثات:

تمكنا من إعادة إنتاج التطبيقات التي علقت في شاشة البداية بعد نشر APK من حزمة تطبيقات (تم إنشاؤها باستخدام flutter build appbundle من القناة الرئيسية).

يبدو أن هذا ناتج عن وضعنا لقطات AOT ( vm-snapshot-data ، vm-snapshot-instr ، isolate-snapshot-data ، isolate-snapshot-instr ) كمكتبات داخل /lib/{abi}/lib_{snapshot}.so للحصول على قسم ABI لحزم التطبيقات.

تحرير : تبين أن السبب الأساسي هو أن الكود الموجود في أداة تضمين Android يتوقع وجود دليل باسم flutter_assets في هذا السطر ، لكن تغييري الأخير لدعم حزم التطبيقات أدى إلى تعطيل إنشاء مثل هذا الدليل ، مما تسبب في عدم بدء التطبيق مطلقًا. هذا الالتزام بواسطة @ jason-simmons https://github.com/flutter/engine/compare/7f4f52f95294...e8db5dfd52ee يعمل على إصلاح المشكلة.

استنتاج

تتمثل الخطة الحالية في السماح لأداة الرفرفة بإنشاء مكتبات مشتركة لـ ELF بدلاً من لقطات AOT. تمت إضافة هذه الميزة للتو إلى Dart SDK في https://github.com/dart-lang/sdk/commit/af93ebcf4cb55ae5f0f39a183ad2d42ca13ae51f.

ما يعنيه هذا هو أننا سنحصل على ABI Split لحزم التطبيقات وملفات APK ذات الحجم الكبير باستخدام مكتبات حقيقية.

سوف أقوم بتحديث هذا الخطأ و https://github.com/flutter/flutter/issues/18494 بمجرد إصلاح المشكلة. في غضون ذلك ، فإن تمرير --target-platform إلى build appbundle سيتيح لك إنشاء حزم تطبيقات دون نقل لقطات AOT إلى lib/ .

بعض التحديثات:

تمكنا من إعادة إنتاج التطبيقات التي علقت في شاشة البداية بعد نشر APK من حزمة تطبيقات (تم إنشاؤها باستخدام flutter build appbundle من القناة الرئيسية).

يبدو أن هذا ناتج عن وضعنا لقطات AOT ( vm-snapshot-data ، vm-snapshot-instr ، isolate-snapshot-data ، isolate-snapshot-instr ) كمكتبات داخل /lib/{abi}/lib_{snapshot}.so للحصول على قسم ABI لحزم التطبيقات. بعد كل شيء ، اللقطات ليست مكتبات حقيقية ولم ينجح اختراقنا للحصول على هذا السلوك.

تتمثل الخطة الحالية في السماح لأداة الرفرفة بإنشاء مكتبات مشتركة لـ ELF بدلاً من لقطات AOT. تمت إضافة هذه الميزة للتو إلى Dart SDK في dart-lang / sdk @ af93ebc .

ما يعنيه هذا هو أننا سنحصل على ABI Split لحزم التطبيقات وملفات APK ذات الحجم الكبير باستخدام مكتبات حقيقية.

سوف أقوم بتحديث هذا الخطأ و # 18494 بمجرد إصلاح المشكلة. في غضون ذلك ، فإن تمرير --target-platform إلى build appbundle سيتيح لك إنشاء حزم تطبيقات دون نقل لقطات AOT إلى lib/ .

blasten هل سيعمل هذا بشكل صحيح عندما يكون لديك مكتبات أخرى تستخدم كودًا أصليًا أيضًا؟ على سبيل المثال: VLC. ينتج عنه بعض .so عندما نقوم ببناء APK.

نعم - يمكنك استخدام مكتبات الأكواد الأصلية الأخرى ضمن ملف APK الخاص بك.

في تنسيق العبوة الجديد ، سيتضمن تطبيق Flutter مكتبة المحرك libflutter.so بالإضافة إلى .so يحتوي على بيانات لقطة AOT المجمعة من كود Dart الخاص بتطبيقك. يمكن للتطبيق إضافة مكتبات .so غير مرتبطة بـ Flutter إذا لزم الأمر.

لمعلوماتك ، يجب أن يكون إصلاح مشكلة التعطل على شاشة البداية في إصدار قناة dev 1.7.0 (القادم) (https://github.com/flutter/flutter/wiki/Bad-Builds#v161--- الإصدار 167)

تحية للجميع. لقد وصل إصلاح مشكلة التعثر على شاشة البداية إلى قناة المطورين - يجب أن تراها إذا كنت flutter upgrade إلى الإصدار 1.7.0. يرجى تجربته وإعلامنا إذا واجهت مشاكل مع flutter build appbundle .

tvolkert لم يعمل معي من قبل ولا يعمل معي الآن. لا على قناة dev (1.7.0) ولا على القناة الرئيسية (1.7.1). إنشاء التطبيق مع تعطل flutter build appbundle بعد نشره عبر متجر Play وتشغيله على جهاز حقيقي.
تحرير: يعمل الآن على قناة dev (1.7.0) بعد حذف التطبيق من الجهاز وإعادة تثبيته من متجر Play.
Edit2: لا يعمل. كان متجر Play أبطأ قليلاً من المعتاد أثناء توزيع الإصدار الصحيح. ماذا يمكنني أن أفعل للمساعدة في الإنجاب؟

masewo هل يمكنك جمع علامة القبر من الجهاز ، جنبًا إلى جنب مع إصدار Flutter الذي كان يعمل عليه في ذلك الوقت؟

@ jason- simmonsblasten أي شيء آخر تريد المساعدة في تعقب هذا؟

تضمين التغريدة

شاهد القبر:

2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: Build fingerprint: 'samsung/crownltexx/crownlte:9/PPR1.180610.011/N960FXXS2CSDJ:user/release-keys'
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: Revision: '28'
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: ABI: 'arm64'
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: pid: 8261, tid: 8261, name: asewo.myfirstapp  >>> net.masewo.myfirstapp <<<
2019-06-04 08:32:44.375 8326-8326/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG: Abort message: '[FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
    '
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x0  0000000000000000  x1  0000000000002045  x2  0000000000000006  x3  0000000000000008
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x4  0000000000000000  x5  0000000000000000  x6  0000000000000000  x7  0080000000000000
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x8  0000000000000083  x9  000000767c1f9890  x10 fffffff87ffffbdf  x11 0000000000000001
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x12 00000075ded1c000  x13 0000000000000008  x14 ffffffffffffffff  x15 0000402003ff3b02
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x16 000000767c2302b0  x17 000000767c16f958  x18 0000007fdd2251da  x19 0000000000002045
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x20 0000000000002045  x21 0000000000000083  x22 00000075edde02e0  x23 00000075dec79fc0
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x24 00000075de3a6150  x25 0000000000000000  x26 00000075f7614ca0  x27 0000000000000003
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     x28 0000000000000000  x29 0000007fdd225b00
2019-06-04 08:32:44.376 8326-8326/? A/DEBUG:     sp  0000007fdd225ac0  lr  000000767c162da0  pc  000000767c162dcc
2019-06-04 08:32:44.377 8326-8326/? A/DEBUG: backtrace:
2019-06-04 08:32:44.377 8326-8326/? A/DEBUG:     #00 pc 0000000000021dcc  /system/lib64/libc.so (abort+124)
2019-06-04 08:32:44.377 8326-8326/? A/DEBUG:     #01 pc 0000000000e4a6a0  /data/app/net.masewo.myfirstapp-J4PFXKn_O2diLnKpCeu2eg==/split_config.arm64_v8a.apk (offset 0xe2d000)

رفرفة:

D:\Programme\Android\flutter\bin\flutter.bat doctor --verbose
[√] Flutter (Channel dev, v1.7.0, on Microsoft Windows [Version 10.0.18362.145], locale de-DE)
    • Flutter version 1.7.0 at D:\Programme\Android\flutter
    • Framework revision f36a35d20a (3 days ago), 2019-05-31 15:27:56 -0400
    • Engine revision a32df2c928
    • Dart version 2.3.2 (build 2.3.2-dev.0.0 445a23a9bc)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at D:\Programme\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: D:\Programme\Android\Android Studio Dev\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
    • All Android licenses accepted.

[√] Android Studio (version 3.5)
    • Android Studio at D:\Programme\Android\Android Studio Beta
    • Flutter plugin version 36.0.7
    • Dart plugin version 191.7221
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b02)

[√] Connected device (1 available)
    • SM N960F • xxxxxxxxxxxxxxxx • android-arm64 • Android 9 (API 28)

@ jason- simmonsblasten هذا التأكيد هو سبب الانهيار في قضيةmasewo

masewo ، نحن غير قادرين على إعادة إنتاج

لمعلوماتك ، تم إرسال الإعلان التالي إلى [email protected] بخصوص دعم 64 بت.

https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc

tvolkert هل يعمل الفريق أيضًا على جعل https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps متوافقًا مع جميع النقاط التي قمت بإدراجها؟

  1. وفِّر طريقة (افتراضيًا) لإنشاء حزمة تطبيقات تدعم كلاً من 32 بت و 64 بت. (متاح بالفعل للاختبار على قناة المطورين)

  2. وفر طريقة (افتراضيًا) لإنشاء ملف APK يدعم كلاً من 32 بت و 64 بت. (في تقدم)

truongsinh نعم ، انظر هذا التعليق في العلاقات العامة المعلقة: https://github.com/flutter/flutter/pull/33696#issuecomment -498934359

masewo وكل شخص آخر: لقد تمكنا من تكرار الانهيار الموضح في https://github.com/flutter/flutter/issues/31922#issuecomment -498541765 ونتعقبه.

tldr: انتظر قليلاً - نحن عليه 🙂

تحية للجميع،

TLDR:

لقد حددنا مشكلة الأعطال عند التنزيل من متجر Play ونعمل على إصلاح يتم تسليمه في نفس الإطار الزمني كما هو موضح أعلاه في https://github.com/flutter/flutter/issues/31922#issuecomment -498880614

شرح عالي المستوى

بالنسبة للمهتمين ، فإن الشرح الطويل إلى حد ما هو أنه مع الأجهزة التي تعمل بنظام Android Marshmallow أو أحدث ، سيكتشف متجر Play التطبيقات التي تم تجميعها كحزم تطبيقات تحتوي على العديد من ABIs - وسيقوم بتثبيت هذه التطبيقات على الجهاز في شكل "تقسيم ملفات APK ". عند القيام بذلك ، لا يتم استخراج ملفات .so المضمنة فيه من أرشيف APK zip ، والذي يختلف عن سلوك ملفات APK غير المقسمة. نظرًا لأن الآلية الحالية لمحرك Flutter

الحل هو فقط dlopen للمكتبات ، ومستخلصات Android بعيدًا حيث توجد المكتبات (أي داخل أرشيف أم لا). ومع ذلك ، فإن الملفات الضرورية. لذلك كجزء من هذا ، نصنعها مكتبات ELF (على سبيل المثال https://github.com/dart-lang/sdk/commit/6d608fb52bc1926a73d986d73ab228b77cfb7ca2 و https://github.com/flutter/flutter/pull/33696).

تحية للجميع،

نعتقد أن جميع الإصلاحات قد وصلت إلى طرف الشجرة على القناة master . إذا كنت ترغب في تجربتها ، فإليك الطريقة:

  • flutter build appbundle

    بشكل افتراضي ، تحتوي حزمة التطبيقات على كود Dart الخاص بك ووقت تشغيل Flutter الذي تم تجميعه لـ arm64-v8a (64 بت)

  • flutter build apk --split-per-abi

    سينتج عن هذا الأمر ملفي APK:

    build/app/outputs/apk/release/app-armeabi-v7a-release.apk
    build/app/outputs/apk/release/app-arm64-v8a-release.apk

  • flutter build apk

    سينتج عن ذلك ملف APK سمين يحتوي على التعليمات البرمجية الخاصة بك التي تم تجميعها لجميع ABIs المستهدفة. ستكون ملفات APK أكبر حجمًا من مثيلاتها المنقسمة ، مما يتسبب في قيام المستخدم بتنزيل ثنائيات أصلية لا تنطبق على بنية أجهزته.

flutter build appbundle يعمل الآن من أجلي. tvolkert شكرا!

يمكن تأكيد أن هذا يعمل (بعد التبديل إلى الماجستير) على أجهزة android متعددة. يا له من منقذ ، شكرا لك.

رائعة! شكرًا ، انتقل إلى blasten و @ jason-simmons و @ rmacnak-google - أنا مجرد رسول 🙂

شكرًا لجميع أعضاء فريق Flutter والمساهمين على هذه الاستجابة السريعة. نأمل أن يصل هذا الشخص إلى القناة التجريبية في غضون 1.5 شهرًا :)

tomaszpolanski ، فإن الخطة تحويله إلى إصدار تجريبي بحلول نهاية يونيو واستقراره بحلول أوائل يوليو

tvolkert هل هناك علامة أمر flutter build appbundle يمكننا تمريرها لتشمل أيضًا x86؟

athornz ليس في وضع الإفراج عن أجهزة الصراف الآلي. انظر: https://github.com/flutter/flutter/issues/9253. سيكون من الممكن إضافة لقطات AOT لـ x86_64 في المستقبل القريب بالرغم من ذلك.

يعطيني التبديل إلى الفرع الرئيسي الخطأ التالي. يبني مستقر لكنه فشل في تضمين 64 بت في حزمة الإصدار.

Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.7.4-pre.108, on Mac OS X 10.14.5 18F132, locale nl-NL)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
[✓] iOS tools - develop for iOS devices
[✓] Android Studio (version 3.4)
[✓] IntelliJ IDEA Community Edition (version 2018.2.7)
[✓] Connected device (1 available)

• No issues found!
MacBook-Pro-van-Wendel:zaira wendel$ flutter build appbundle --build-name=1.0.6 --build-number=6 -t lib/main_prod.dart --flavor=prod
Initializing gradle...                                              0,9s
Resolving dependencies...                                           2,2s
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Running Gradle task 'bundleProdRelease'...                              
Running Gradle task 'bundleProdRelease'... Done                    78,6s
Gradle task bundleProdRelease failed with exit code 1

xinoxapps ، هل يمكنك إرسال الناتج الكامل لـ flutter build appbundle -v (كرابط gist.github.com من فضلك ، لسهولة قراءة هذا الموضوع 🙂)؟

xinoxapps ، لم أتمكن من إعادة معالجة هذه المشكلة محليًا. الآن ، بالنظر إلى التحذيرات التي تتلقاها ، يبدو أن هناك بعض منطق التكوين المخصص build.gradle ، والذي قد يكون أو لا يسبب المشكلة. هل سيكون من الممكن الوصول إلى الحد الأدنى من حالة إعادة الشراء؟ على سبيل المثال ، حاول إزالة بعض تهيئة Gradle المخصصة حتى تعمل ، ثم شارك سبب المشكلة بالضبط. هذه هي الطريقة التي حددت بها النكهة:

android {
  flavorDimensions "version"
    productFlavors {
        prod { }
    }
}

تحية للجميع،

تم نشر هذه الإصلاحات الآن في قناة dev ، في الإصدار v1.7.4 أو إصدار لاحق.

لقد تحولت إلى حزم التطبيقات وانتقلت إلى متجر Play ، ويبدو أن معظم المستخدمين سعداء. ومع ذلك ، لدي تقريرين عن التطبيق لا يبدأ إطلاقًا على جهاز x86 الذي يدعم محاكاة ARM ، Asus ZenFone 2 ZE551ML: https://www.gsmarena.com/asus_zenfone_2_ze551ml-6917.php. لسوء الحظ ، لم يتمكن المستخدمون من توفير إخراج adb logcat. هل تنسيق ELF الجديد مخصص للعمل على مثل هذه الأجهزة؟

Screen Shot 2019-06-16 at 11 55 54 PM

التبديل إلى قناتي master و dev يعطيني هذا الخطأ مع flutter build appbundle :

* What went wrong:
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForProductionRelease'.
> More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'

darioielardi هل يمكنك تضمين روابط gist.google.com بإخراج flutter build appbundle -v ، بالإضافة إلى محتويات ملفاتك android/build.gradle و android/app/build.gradle ؟

لقد تحولت إلى حزم التطبيقات وانتقلت إلى متجر Play ، ويبدو أن معظم المستخدمين سعداء. ومع ذلك ، لدي تقريرين عن التطبيق لا يبدأ إطلاقًا على جهاز x86 الذي يدعم محاكاة ARM ، Asus ZenFone 2 ZE551ML: https://www.gsmarena.com/asus_zenfone_2_ze551ml-6917.php. لسوء الحظ ، لم يتمكن المستخدمون من توفير إخراج adb logcat. هل تنسيق ELF الجديد مخصص للعمل على مثل هذه الأجهزة؟

Screen Shot 2019-06-16 at 11 55 54 PM

نعم ، لدي نفس المشكلة. إنه يعمل مع حزمة flutter build appbundle وتقوم معظم الأجهزة بتشغيل تطبيقاتي بشكل جيد. ولكن ليس لهذا آسوس

blasten @ نعم أفهم أن

xinoxapps ، هل يمكنك إرسال الناتج الكامل لـ flutter build appbundle -v (كرابط gist.github.com من فضلك ، لسهولة قراءة هذا الموضوع 🙂)؟

إنه يعمل بالنسبة لي الآن على قناة المطورين. هل مازلت بحاجة لبعض المعلومات؟

xinoxapps كلا - سعيد لسماع أنه يعمل من أجلك.

darioielardi تم إصلاح المشكلة في الماجستير الآن. الرجاء تشغيل flutter upgrade في القناة الرئيسية.

darioielardi تم إصلاح المشكلة في الماجستير الآن. الرجاء تشغيل flutter upgrade في القناة الرئيسية.

blasten لقد قمت بالتبديل إلى إتقان وحصلت على هذا الخطأ عند تنفيذ flutter build appbundle
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.

هذا هو درجتي وإخراجي الكامل https://gist.github.com/julindra/80cd2e588cf11bdd0df3f34239b07409

تحية للجميع،

نحن نهدف إلى الحصول على عدد قليل من إصلاحات الأخطاء للإضافة إلى التطبيق والنكهات - وقطع إصدار v1.7.5 dev. على هذا النحو ، نحن نؤجل الترقية إلى الإصدار التجريبي لالتقاط تلك الإصلاحات. ما زلنا نتوقع أن يكون هذا مستقرًا في أوائل يوليو.

عمل لي flutter build appbundle . شكرا جزيلا tvolkert .

julindra تؤدي إضافة -ignorewarnings إلى 'proguard-rules.pro إصلاح هذه المشكلة. لا نقوم حاليًا بتضمين الحزمة android.arch. *. خيار آخر هو تعديل android/app/build.gradle وإضافة ما يلي:

.gradle dependencies { implementation "android.arch.lifecycle:common-java8:1.1.1" implementation 'android.arch.lifecycle:extensions:1.1.1' }

سم مكعب @ ماثيو كارول

لقد قمت بتحميل الحزمة app.aab لمتجر اللعب. ذهب التحذير من فقدان 64 بت ولكن التطبيق تعطل للتو عند التشغيل بعد التثبيت من متجر play. أي اقتراحات؟

هل من الآمن أيضًا استخدام flutter build appbundle للإصدار عند الإنتاج؟

sulaysumaria هل يمكنك نشر نتيجة تشغيل flutter doctor ؟

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale en-IN)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✗] iOS toolchain - develop for iOS devices
    ✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
      Download at: https://developer.apple.com/xcode/download/
      Or install Xcode via the App Store.
      Once installed, run:
        sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
    ✗ libimobiledevice and ideviceinstaller are not installed. To install with Brew, run:
        brew update
        brew install --HEAD usbmuxd
        brew link usbmuxd
        brew install --HEAD libimobiledevice
        brew install ideviceinstaller
    ✗ ios-deploy not installed. To install:
        brew install ios-deploy
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        brew install cocoapods
        pod setup
[!] Android Studio (version 3.4)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.35.1)
[✓] Connected device (1 available)

! Doctor found issues in 2 categories.

تضمين التغريدة

حاولت أيضًا إنشاء ملف apk من حزمة التطبيقات وتثبيته. كما أنه يتعطل عند الإطلاق.

$ bundletool build-apks --bundle=build/app/outputs/bundle/app.aab --output=app.apks
$ bundletool install-apks --apks app.apks

حاول التبديل إلى قناة dev وتحقق.

حاولت إنشاء قناة في dev لكنها كسرت إحدى التبعيات الخاصة بي. سأحاول التعليق عليه والبناء لمعرفة ما إذا كان التطبيق يعمل.

هل من الآمن أيضًا استخدام قناة dev لإصدار الإنتاج؟

عفوا آسف. سأكون أكثر حرصًا إذا كان للإنتاج.

سأعمل على إنشاء ملفات APK في الوقت الحالي. على الرغم من أن Google تقترح تحميل الحزم بدلاً من التطبيقات ، إلا أنه سيكون جيدًا إذا تم إصلاح ذلك في الإصدار التالي في الفرع الثابت.

لقد وجدت هذا باستخدام adb logcat:

[FATAL:flutter/runtime/dart_vm.cc(389)] Error while initializing the Dart VM: Snapshot not compatible with the current VM configuration: the snapshot requires 'product use_bare_instructions no-"asserts" causal_async_stacks no-bytecode arm-eabi softfp' but the VM has 'product use_bare_instructions no-"asserts" causal_async_stacks no-bytecode arm64-sysv'

أنا على قناة stable .

نجح الحل من https://github.com/flutter/flutter/issues/19865 .

اضطررت أيضًا إلى إزالة قسم splits من build.gradle.

التطبيق يعمل بشكل جيد الآن عند تثبيته عبر bundletool. سأحاول التحميل إلى playstore وأتحقق مما إذا كان كل شيء يسير على ما يرام.

sulaysumaria ، الإصلاح متاح فقط في الفرع الرئيسي حتى الآن. إذا كنت مستقرًا - كما هو موضح في ناتجك flutter doctor

[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale en-IN)

لم يتم تطبيق الإصلاح. تحتاج إلى الانتظار حتى يصبح الإصلاح مستقرًا إذا كنت تريد البناء باستخدام مستقر. يبدو أنه في مكان ما حول 1.7.x حتى ذلك الحين تحتاج إلى تحميل ملف apk بشكل منفصل.

أوه ... شكرا pythoneer . هل تعلم متى سيكون متاحًا على قناة ثابتة؟

تضمين التغريدة تم ذكره عدة مرات في هذا الموضوع

ما زلنا نتوقع أن يكون هذا مستقرًا في أوائل يوليو.

عملت على قناة dev . لقد استخدمت flutter build appbundle --target-platform android-arm,android-arm64 وقمت بتحميل حزمة لتشغيل المتجر وعملت بشكل مثالي.

sulaysumaria - يجب عليك استخدام تعليمات مستعدة بالفعل مع أي الماجستير أو ديف القناة.

julindra تؤدي إضافة -ignorewarnings إلى 'proguard-rules.pro إصلاح هذه المشكلة. لا نقوم حاليًا بتضمين الحزمة android.arch. *. خيار آخر هو تعديل android/app/build.gradle وإضافة ما يلي:

dependencies {
  implementation "android.arch.lifecycle:common-java8:1.1.1"
  implementation 'android.arch.lifecycle:extensions:1.1.1'
}

سم مكعب @ ماثيو كارول

شكرا. أنا فقط أستخدم قناة dev وأضف -ignorewarnings ، إنها تعمل بشكل مثالي.

عملت معي مع flutter build appbundle
https://github.com/flutter/flutter/issues/18494#issuecomment -489807239

blasten هل هذا قابل للإغلاق في هذه المرحلة ، أم أن هناك عمل متبقي؟

cbracken ، أعتقد أنه يمكن إغلاق هذا الآن أو بعد الإصدار المستقر التالي.

هل ما زلت تخطط لمعالجة مشكلة عدم التوافق مع جهاز ZenFone 2 وأجهزة x86 المشابهة التي تسمح بتثبيت تطبيقات ARM من متجر Play واستخدام libhoudini لتشغيلها؟

حاولت إنشاء قناة في dev لكنها كسرت إحدى التبعيات الخاصة بي. سأحاول التعليق عليه والبناء لمعرفة ما إذا كان التطبيق يعمل.

هل من الآمن أيضًا استخدام قناة dev لإصدار الإنتاج؟

لم أستخدم أبدًا أي فرع بدلاً من التطوير وتعمل تطبيقاتي بسلاسة. لذا ثق بالفرع الذي لا يخيب ظنك أبدًا. تضمين التغريدة

matthewlloyd سمعنا من فريق Play Store أنه من الأفضل إضافة برنامج ثنائي صريح x86 بدلاً من محاولة جعل الثنائيات الموجودة لدينا تعمل بشكل جيد مع مترجم arm-> x86. - ومع ذلك ، قام الفريق مؤخرًا بتحسين الكود الذي ينشئه مترجم Dart ، وأتساءل عما إذا كان ذلك ربما يجعل الترجمة تعمل. محاولة إعطائها واسمحوا لي أن أعرف. بخلاف ذلك ، بناءً على الموقف ، قد تحتاج إلى إنشاء إصدار JIT لـ x86 ، والذي يُستخدم عادةً لتصحيح الأخطاء / التنميط في المحاكيات.

blasten شكرا للمعلومات. لقد وضعني في مأزق بعض الشيء لأنني لا أمتلك أحد هذه الأجهزة بنفسي - فقط مراجعتان مجهولتان لمتجر Play Store من مستخدمي ZenFone 2 الساخطين - لذلك ليس لدي طريقة للاختبار. تعد مخاطر كسر الأشياء أكبر من أن تدفع بناء حزمة تطبيقات أخرى حتى يؤكد شخص ما أن الكود المحسن يعمل بالفعل على تلك الأجهزة. ما لم تكن هناك طريقة لإخبار Play Store باستبعاد مثل هذه الأجهزة ، فسأستمر في إطلاق الإصدارات التي تم إنشاؤها باستخدام إصدار قديم من Flutter (وملفات APK 32 بت) ، حتى يتم اختبارها وتأكيد إصلاحها بواسطة Google ، أو التأكيد على أنها لم تعد مشكلة. أعتقد أنه لن يتم ذلك حتى يتم دفع المزيد من التطبيقات إلى المتجر باستخدام تنسيق appbundle / .so الجديد. وأنا انتظر...

لأولئك الذين ما زالوا يبحثون ، إليك الحل الذي نجح معي:

flutter build apk - تقسيم لكل أبي
لم تنجح ،، حتى بعد التحرير بناء gradle
من https://flutter.dev/docs/deployment/android#build -an-apk

بدلاً من ذلك ، استخدم:

  1. رفرفة بناء appbundle
  2. ثم قم بتحميل app.aab

تم إصلاح المشكلة لكل من 32 بت و 64 بت ، وإصدار التنبيه غير متوافق مع متطلبات تشغيل 64 بت. "

شكرًا @ juliengit2 ، flutter build appbundle يعمل.

من الجدير ذكر نسخة الرفرفة أيضًا ، لأنه كان لدي الإصدار 1.5.0 حتى الآن ولم يعمل.
اضطررت إلى التحديث (حاليًا إلى الإصدار 1.7.9) لكي أجعله يعمل.

PerechicK ، هل قصدت مطورة ؟

قناة DEV ، كما تظهر اليوم هنا: https://flutter.dev/docs/development/tools/sdk/releases؟

ما زلت لا أعرف منذ أي إصدار تم إصلاح هذه المشكلة.

عند استخدام أي شيء آخر غير الفرع الثابت ، أواجه أحد المكونات الإضافية الخاصة بي UiThread على الخيط الرئيسي" ، والذي تم تقديمه مع هذا flutter sdk الالتزام https: // github. كوم / رفرفة / محرك / الالتزام / 2c9e37c34e79475bbde7c8163eb5e56cdb9662a1.

هل توجد طريقة لإنشاء حزمة تطبيقات 64 بت أثناء استخدام الفرع الثابت 1.5.4 -fix.2؟

uj هذه المشكلة https://github.com/flutter/flutter/issues/33562 قد تكون مرتبطة بخطأك في حالة استخدام firebase_database .

ولم يتم تقديم 64 بت في 1.7.4+ وفقًا لـ Flutter Docs

لا ، إنها ليست قاعدة بيانات firebase_database ، إنها في الواقع OneSignal ، لكن الحل الوحيد لهم هو "استخدام الفرع الثابت من Flutter"

هل توجد طريقة لإنشاء حزمة تطبيقات 64 بت أثناء استخدام الفرع الثابت 1.5.4 -fix.2؟

uj على الرغم من أنه لا يمكنك إنشاء حزمة تطبيقات 64 بت مع 1.5.4-hotfix.2 ، يمكنك إنشاء ملفين ، أحدهما 32 بت والآخر 64 بت ، وتحميل كلا التطبيقين إلى Google Store لحل التحذير.

تستهدف حزمة Flutter 1.5.4 -fix.2 حاليًا android-arm الذي ينشئ رمزًا أصليًا 32 بت فقط ( flutter build appbundle -h ). لتغيير هذا ، قم بتشغيل flutter build appbundle --target-platform=android-arm64 لتغيير الهدف الافتراضي.

هذا الآن مباشر على القناة التجريبية ، في الإصدار v1.7.8+hotfix.2

tvolkert - أخبار ممتازة ، شكرًا. هل ستكون أكثر تحديدًا عندما نتوقع أن يكون الإصلاح ساريًا في مستقر ، على سبيل المثال ، تاريخ حدوث ذلك؟

@ angel1st https://en.wikipedia.org/wiki/Forward-looking_statement 🙂

(نحن نعمل على تحقيق ذلك في أسرع وقت ممكن)

tvolkert - بالنظر إلى حقيقة أننا ما زلنا على بعد حوالي ثلاثة أسابيع من الموعد النهائي لـ Google بخصوص تطبيقات 64 بت ، أتوقع موعدًا نهائيًا من جانبك أيضًا. كما أننا كمطورين سنحتاج إلى بعض الوقت بين الإصدار الخاص بك والموعد النهائي المذكور أعلاه حتى نتمكن من بناء واختبار وإصدار تطبيقاتنا دون إزعاج عملائنا.
بخلاف ذلك ، أنا أقدر حقًا الجهود التي يمكن تحقيقها خلال الشهرين الماضيين ، ولكن أتمنى أن تكون قادرًا على وضع نفسك في مكاننا ورؤية كيف تبدو الأشياء من هذا المنظور. شكرا لتفهمك وكل ما تبذلونه من جهود حتى الآن!

@ angel1st بالتأكيد . وفقًا للإعلان السابق ، نهدف إلى استقرار هذا بحلول أوائل يوليو (قريبًا جدًا) - لا يمكنني التنبؤ بالتاريخ الدقيق.

لدي هذه المشكلة في الوحدة 2017.4.20 أو 2019.1.2 ، كيف يمكنني حلها؟ هذه
رابط ضربة: https://stackoverflow.com/questions/56687339/what-is-this-error-in-build-adroid-and-build-app-bundle-in-unity-2017-4-17 الرجاء المساعدة أنا لأنني في هذه المشكلة لمدة شهرين شكرا

آمل أن نرى هذا تم حله في أقرب وقت ممكن. الموعد النهائي ضيق

DoubleHub يمكنك التغيير إلى قناة تجريبية لحلها.
أو انتظر لإصدار نسخة مستقرة في 8 يوليو.

@ abc873693 قرأت عنها ، وأعتقد أنني سأنتظر نسخة مستقرة. أنا سعيد لأن هذه المشكلة قد تم حلها أخيرًا رسميًا!

@ abc873693 لقد واجهت مشكلات عند محاولة نشر تطبيقات android على متجر play باستخدام قناة _beta_. أظهرت تقارير ما قبل الإطلاق تحذيرات لإمكانية الوصول. يبدو أن التطبيق لم يتجاوز شاشة Splash. بقيت جميع لقطات الشاشة لجميع الأجهزة على شاشة البداية.

كان الحل بالنسبة لي هو التبديل ببساطة إلى القناة الثابتة وإنشاء حزمة التطبيقات باستخدام علامة --target-platform.

تحية للجميع،

v1.7.8+hotfix.2 للقناة الثابتة ، لذا فإن هذا الإصلاح متاح الآن في جميع القنوات. شكرا للجميع على صبركم ومساعدتكم على طول الطريق!

tvolkert شكرا لك! لقد أكدت للتو أن الملاحظة التي ذكرتها هنا لم تعد موجودة مع القناة الثابتة!

tvolkert كيف تطبق هذا v1.7.8+hotfix.2 على مشروع قائم؟ هل أحتاج إلى إعادة إنشائي من جديد؟

jaasaria ، تدور هذه المشكلة حول إنشاء تطبيقك للإصدار. إذا كنت مستقرًا ، فستحتاج إلى ترقية تثبيت الرفرفة. المشكلة التي تم الإبلاغ عنها هنا تتعلق بإنشاء حزمة تطبيقات وفقًا لهذا الارتباط

jaasaria نفذ للتو: $ flutter channel stable && flutter upgrade

MaikuB لقد أنشأت ملف src الخاص بي قبل شهر وفي كل مرة أقوم فيها بإنشاء مشروعي ، أحتاج إلى تنفيذ الأمر flutter build appbundle --target-platform=android-arm64 بدلاً من flutter build appbundle لتجنب خطأ playstore x64.

dblokhin تمت ترقيته للتو ولحسن الحظ لم ينكسر مشروعي. :) شكرا لك

شكرًا @ juliengit2 ، flutter build appbundle يعمل.

من الجدير ذكر نسخة الرفرفة أيضًا ، لأنه كان لدي الإصدار 1.5.0 حتى الآن ولم يعمل.
اضطررت إلى التحديث (حاليًا إلى الإصدار 1.7.9) لكي أجعله يعمل.

شكرا على التنبيه!

لقد قمت بإصدار flutter 1.7.8 +

غريب لقد حاولت مع 1.7.8 + fix.3 مع قناة مستقرة وأحصل مرة أخرى على تحذير playstore:

"هذا الإصدار غير متوافق مع متطلبات Google Play 64 بت ..."

عند تحميل حزمة بعد: _flutter build appbundle_

حاولت أيضًا ترقية الرفرفة ولكن نفس النتيجة.
ومع تثبيت Flutter جديد: نفس النتيجة

هنا هو بلدي أسيوط:
m

اي فكرة؟؟

@ juliengit2 افتح .aab كملف مضغوط عادي ، وانتقل إلى المجلد base/lib وتحقق مما إذا كان هناك مجلدات armeabi-v7a و arm64-v8a

حاولت القيام بذلك باستخدام مجلد lib الخاص بي "flutter build appbundle" يحتوي على كلا الإصدارين v8a و v7a. هل يمكنني دفع التحديث الآن ، لا أريد تلقي تحذير آخر إلى البريد الإلكتروني الخاص برأسي.

حالة أخرى مشابهة لتلقي تحذير APK بعيد https://github.com/flutter/flutter/issues/18494#issuecomment -509937209

بالنسبة لأولئك الذين يعانون من نفس المشكلة ، أزلت في build.gradle:

ndk {
    abiFilters "armeabi-v7a", "x86", "armeabi", "mips"
}

واختفى التحذير.

(إذا احتفظت بالمرشحات ، فستظل تحصل على "الإصدار غير متوافق" حتى مع _flutter build appbundle_

مرحبًا ، لقد قمت ببناء حزمة التطبيقات الخاصة بي بنجاح ، ولكن عندما حاولت تحميلها إلى متجر play ، تلقيت هذا الخطأ ...
لتحميل حزمة تطبيقات Android ، يجب أن تكون مسجلاً في App Signing بواسطة Google Play.
قم بتصدير مفتاحك من Android Studio. من قائمة البناء ، حدد إنشاء حزمة موقعة / APK. حدد خيار الحزمة واضغط على التالي. حدد تصدير المفتاح المشفر واضغط على التالي.

أحاول تصدير المفتاح المشفر من هذا القبيل ، مباشرة من وحدة android ، لكنني لم أكمل العملية لأنني تلقيت هذا الخطأ

انتهت العملية 'الأمر' / Users / oaacelasu / Documents / flutter / bin / flutter '' بقيمة خروج غير صفرية 1

bref افترضت أن هذه ليست الطريقة الصحيحة ... هل هناك حل بديل للحصول على المفتاح المشفر لتسجيل التطبيق مباشرةً من أمر flutter build appbundle؟

حاولت استخدام appbundle في playstore ،
ولكن في android 6.0 arm 64 ، تم تعطله عند بدء التشغيل بسبب libflutter. لذلك لم يتم العثور عليه ، وبعد أن تحققت من libflutter تم تضمينه في aab arm 64

matthewlloyd ، لقد أعدت إنتاج هذا باستخدام

قام الفريق مؤخرًا بتحسين الكود الذي يولده مترجم Dart ، وأتساءل عما إذا كان ذلك ربما يجعل الترجمة تعمل. محاولة إعطائها واسمحوا لي أن أعرف. بخلاف ذلك ، بناءً على الموقف ، قد تحتاج إلى إنشاء إصدار JIT لـ x86 ، والذي يُستخدم عادةً لتصحيح الأخطاء / التنميط في المحاكيات.

blasten ، هل هناك إصدار معين من Dart كنت تفكر فيه؟ أنا مستنسخة مع 2.3.1 (مع رفرفة 1.7.8 + الإصلاح العاجل.2) هل يمكنني الاختبار مع 2.4.0؟

أيضًا ، استنسخنا عندما أصدرنا إصدارًا ألفا. ما زلت بحاجة إلى النظر في كيفية اختبار حزمة التطبيقات دون المرور عبر متجر الألعاب.

wreppun شكرًا على

matthewlloyd هذا ما ظهر في سجل تعطل متجر Play:

java.lang.UnsatisfiedLinkError: 
  at java.lang.Runtime.loadLibrary0 (Runtime.java:984)
  at java.lang.System.loadLibrary (System.java:1530)
  at io.flutter.view.FlutterMain.startInitialization (FlutterMain.java:122)
  at io.flutter.view.FlutterMain.startInitialization (FlutterMain.java:99)
  at io.flutter.app.FlutterApplication.onCreate (FlutterApplication.java:22)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1024)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:5549)
  at android.app.ActivityThread.-wrap2 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1595)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6320)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:891)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:781)

قد يظهر ذلك في بعض سجلات الأعطال (القديمة) إذا اختار أي من المستخدمين مشاركة الإحصائيات.

كان الجهاز HP Chromebook x360.

أنا آسف أن هذا لا يعمل على 100٪ من التكوينات. نحن نعمل على الحصول على تغطية اختبارية أفضل على مجموعة متنوعة من حزم SDK والأجهزة. في غضون ذلك ، سأقوم بإعداد بعض الاختبارات في مختبر اختبار Firebase.

في هذه المرحلة ، أعتقد أن الطريقة الأكثر فاعلية بالنسبة لنا لإصلاح كل هذه المشكلات هي على الأرجح تقديم مشكلات جديدة والربط مرة أخرى بهذه المشكلة. سوف أتأكد منtvolkert وأنا أن يتم النظر إلى كل منها ، ولكن سيساعدنا إذا تمكنا من فرزها في دلاء منفصلة وتتبع إصلاحاتها بشكل فردي.

من الممكن جدًا أن نحتاج إلى إجراء تعديلات صغيرة على مترجم Dart ، لدينا في الماضي لوحدات المعالجة المركزية أو المحاكيات التي تحتوي على مراوغات خاصة بالمعالج. بدون الاختبار على x86 Chromebook بنفسي (وهو ما لم أقم به بعد) لا يمكنني الجزم بذلك.

هل هؤلاء الذين يواجهون مشكلات الرجاء مساعدتنا في حل المشكلات المتبقية من خلال تقديم مشكلات جديدة لكل منها؟ سيكون ذلك مفيدًا جدًا للتأكد من أننا نتعامل مع كل واحد. شكرا لك!

wreppun Thanks - لقد راجعت تقارير أعطال تطبيقي ولم يرسل أي من مستخدمي Asus ZenFone 2 المتأثرين أي شيء.

@ blasten لا تقلق ، هذا رائع. إذا تمكن شخص ما من إظهار عمل حزم التطبيقات الجديدة على جهاز Asus ZenFone 2 فسيكون ذلك كافيًا لدفعني إلى المضي قدمًا. لسوء الحظ ، لا يمكنني الوصول إلى واحدة ، لكنني آمل أن تفعل مختبرات اختبار الهاتف المحمول في Google.

matthewlloyd no "Asus ZenFone" في معمل اختبار Firebase. ما هو إصدار SDK؟ في معظم الأحيان ، يمكن تكرار المشكلة بمجرد تشغيل إصدار محدد من Android SDK.

ما هو إصدار SDK؟ في معظم الأحيان ، يمكن تكرار المشكلة بمجرد تشغيل إصدار محدد من Android SDK.

😂

مرحبًا بفريق Flutter ،
أود أن أؤكد على حالة هذا الموضوع. من وجهة نظري ، هناك مشكلتان خطيرتان:

  • إصدار الرفرفة المستقر الحالي 1.7.8+hotfix.3 لا يُنشئ تطبيقات ثابتة - على الأقل split-per-abi لا يعمل كما ينبغي - يواجه arm32 مشكلة انحدار ولا يمكن تشغيله على بعض أجهزة arm32 . لم يتضح بعد متى سيتم إصلاح ذلك ؛
  • الموعد النهائي في الأول من آب (أغسطس) - في غضون أسبوع تقريبًا ، لن نتمكن كمطورين من تحديث تطبيقات flutter الجديدة أو إصدارها إلى متجر Google Play Store - بهذه البساطة. بالنظر إلى مشكلة إصدار الرفرفة الحالية (كما هو مذكور أعلاه) والوقت المتبقي ، لا أعتقد أنه من الممكن توقع الحصول على الإصلاح في قناة مستقرة قبل نهاية الشهر (ما لم يكن لدى شخص منكم عصا سحرية: - ))

بالنظر إلى المسألتين السابقتين ، أود أن أقترح خطة الطوارئ التالية ، والتي من شأنها أن تخدمنا IMO على أفضل وجه كمطورين:

  • التراجع عن القناة المستقرة إلى نسختها السابقة لـ hotfix.2
  • تأجيل الموعد النهائي في الأول من آب (أغسطس) لشهرين - أتفهم أن هذا سيتطلب بعض التصعيد بشأن المشكلة ، لكنني آمل أن تفهموا يا رفاق مدى خطورة التأثير المحتمل إذا لم يتمكن المطورون من إصدار تطبيق رفرفة موثوق به بعد الأول من آب (أغسطس) بسبب مشكلات إطار الرفرفة.

يمكنني التحدث نيابة عني فقط ، ولكن لدي عملاء لديهم عقود وقررت الانتقال من React Native إلى Flutter ، حيث كنت أعتقد أن Google ستوفر دعمًا أفضل لمنتجاتهم الخاصة. لدي مشاريع قيد التنفيذ وتطبيقات لدعمها.
الآن أجد نفسي في حالة عبثية ، عندما أجبرتني Google على إصدار إصدار 64 بت apk وفي نفس الوقت لا تزودني Google بالأداة للقيام بذلك (ونعم ، أعرف أن فريق Flutter ليس مثل Google Play فريق ولكن من حيث أقف - أنت نفس الكيان التجاري).
إذا فشلت Google في التسليم في الوقت المحدد ، فسيؤدي ذلك إلى رد قوي من Flutter ، نظرًا لأن كل يوم بعد الأول من أغسطس سيؤدي إلى تقليص مصداقية إطار العمل.
أعتذر إذا كانت كلماتي أقوى قليلاً ، أتمنى فقط أن تضع نفسك في مكاني في الوقت الحالي.

أي شخص - يرجى التصويت على هذا ، ونأمل أن يكون صوتنا مسموعًا!

أوافق أيضًا على هذا ... ولكن كخطة طوارئ ، أقترح عدم التراجع إلى الإصدار السابق ، بل التبديل إلى قناة dev ....

من واقع تجربتي الشخصية ، لم أكن مرتاحًا أيضًا لاستخدام قناة dev البداية. فكرت في التمسك بقناة stable ، لأنك تعلم أنها مستقرة! ... لكنني الآن أستخدم قناة dev وأطلق تطبيقات باستخدام حزم التطبيقات في متجر play دون أي مشكلة .. ..

الموقف شيء لا ينبغي أن يحدث لأن كلاهما من منتجات Google ...

ما قدمته هو مجرد حل أبسط ، لأنه يمكنك البدء في دفع التحديثات باستخدام aab s وليس apk s ، وهو ما تقترحه Google ...

@ angel1st نفس المشكلة ، نفس المشاكل ، نفس الأحذية
sulaysumaria إذا انتقلنا إلى قناة dev ، فهل سيتم حل مشكلة libapp.so؟
لأنه لا يبدو أن القناة الرئيسية تعمل

ما قدمته هو مجرد حل أبسط ، لأنه يمكنك البدء في دفع التحديثات باستخدام aabs وليس apk ، وهو ما تقترحه Google ...

sulaysumaria - الأمر ليس بهذه البساطة ، dev يؤدي إلى بعض التعقيدات مع حزم ومكونات الطرف الثالث مما سيؤدي إلى مجموعة مختلفة من المشكلات.

campioncino أعتقد نعم لأنني لم أواجه هذه المشكلة مطلقًا ... أنا ببساطة أقوم ببناء حزمة الإصدار وتحميله على متجر اللعب ... لا يظهر أبدًا أي تحذيرات .... والتطبيق يعمل بشكل جيد عند تثبيته من متجر play ( على الأقل ما يستخدمه موكلي حتى الآن ...)

@ angel1st ، يمكنني أن أفهم .. في هذه الحالة التراجع هو الخيار الوحيد ... لكن هذه التبعيات تحتاج إلى ترقية وإلا لن تتمكن أبدًا من الترقية إلى إصدار أحدث ... لقد واجهت أيضًا هذا النوع من المشكلات مع مكون إضافي واحد كنت أستخدم ، لحسن الحظ ، أطلقوا إصدارًا جديدًا في النسخة التجريبية لدعم الإصدار الأحدث من flutter ... ربما إذا لم تتم صيانة المكون الإضافي ، فلا ينبغي لنا استخدامه ..

sulaysumaria لم أواجه هذه المشكلة أبدًا أيضًا ... حتى آخر إصدار.
سأحاول ولكن الاختبار ليس بهذه البساطة ، لأنه يحدث فقط على بعض الأجهزة.

على سبيل المثال على Samsung Galaxy Tab 2 7.0 P3110 و Android 4.2.2 وعلى بعض الأجهزة اللوحية القديمة الأخرى التي تعمل بنظام Android 4.1.2

أوه ... تطبيقي ليس للأجهزة اللوحية بالتأكيد ... سيكون من الأفضل إذا قمت باختباره مرة واحدة ...

تحية للجميع،

ها هي الحالة الحالية:

  1. تشير الدلائل إلى أن https://github.com/flutter/flutter/issues/35838 يؤثر على Android 4.2 والإصدارات الأقدم ، مما يعني أنه يؤثر على حوالي 3٪ من هواتف Android . نحن نعمل مع الأشخاص المتضررين على هذا الخطأ لتحديد نطاق الإصلاح وتعقب المشكلات الإضافية المحتملة التي من المحتمل أن تؤثر فقط على بعض التطبيقات (مثل خطأ محتمل غير ذي صلة في Dart VM لا يظهر في جميع التطبيقات). بناءً على هذا التحقيق ونتائجه ، سنقرر ما إذا كان من الأفضل تصحيح الإصدار الثابت الحالي أو دفع إصدار جديد عبر القنوات إلى مستقر.

  2. إذا كان أي شخص يفضل البناء من إصدار سابق من Flutter وإنشاء ملفات APK 32 و 64 بت يدويًا ، فيمكنه القيام بذلك عن طريق تنزيل إصدار سابق من Flutter هنا . لا تعد العودة إلى الإصدار الثابت خيارًا - فالقيام بذلك قد يتسبب في حدوث مشكلات أكثر بكثير مما قد يؤدي إلى حلها.

  3. إذا كان أي شخص يواجه مشكلات في إنشاء Android _other_ من https://github.com/flutter/flutter/issues/35838 ، فيرجى تقديم مشكلة منفصلة وإرسال نسخة إلى لي ، لأننا نرغب بشدة في تتبع أي مشكلات من هذا القبيل.

  4. بشكل منفصل ، نحن نعمل بنشاط على زيادة مصفوفة الاختبار لدينا لاكتشاف المشكلات بشكل أفضل على مجموعة متنوعة من الأجهزة / إصدارات Android في وقت مبكر من العملية (بحيث لا تكون تقارير الأخطاء هي خط دفاعنا الأول).

tvolkert - شكرا على ردود الفعل. فقط للتأكد من أننا على نفس الصفحة - العودة إلى إصدار Flutter السابق ليس منطقيًا حتى يتم تأجيل الموعد النهائي في الأول من أغسطس ، نظرًا لأن Google Play لن يسمح لي بتحميل إصدار 32 تطبيقًا فقط بعد الأول من أغسطس.

@ angel1st هل سيكون هذا الخيار مناسبًا لقضيتك؟

  1. إعادة flutter SDK إلى الإصدار 1.5.4 -fix.2 ( flutter version v1.5.4-hotfix.2 )
  2. أنشئ ملفي APK منفصلين (أحدهما على 32 بت flutter build apk --target-platform android-arm والآخر على 64 بت flutter build apk --target-platform android-arm64 )
  3. قم بتحميل كلا من ملفات APK هذه على متجر Google Play

أعلم أنه حل بديل ، لكنه على الأقل يحل مشكلة الاستقرار ومشكلة "التحذير".

truongsinh - شكرًا على الاقتراح - الأمر يستحق النظر فيه. هل تتفضل بتأكيد أن الخطوة 2 من اقتراحك أعلاه لن تتطلب تغييرات كما في الاقتراح السابق ، على سبيل المثال ، تعديلات app gradle ؟

@ angel1st طالما لديك التطبيق بالكامل في flutter (أي ليس https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps) ، ولم تقم بتعديل أي شيء في Gradle من الملفات (مثل ملفات الفانيليا من flutter create ) ، أعتقد أنه ليس علينا فعل أي شيء.

يمكنك إجراء الفحص السريع بنفسك (بافتراض أن الإصدار "3.4.5" ، باتباع https://github.com/flutter/flutter/issues/31922#issuecomment-512292798 ، فإن خياري الشخصي لتنسيق "رقم الإصدار" هو bbxxyyzz ، حيث bb هو فقط لتحديد 32 أو 64 بت ، xx رئيسي ، yy صغير ، zz التصحيح ، ولكن هناك تنسيقًا آخر موصى به أيضًا ، راجع https://developer.android.com/google/play/publishing/multiple-apks#using-a-version-code-scheme):

  • flutter create hello_world
  • flutter build apk --target-platform android-arm --build-number 32030405 --build-name=3.4.5
  • mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-32.apk
  • flutter build apk --target-platform android-arm64 --build-number 64030405 --build-name=3.4.5
  • mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-64.apk

أقوم بتضمين 2 APK هنا. إنهم يعملون مع Pixel 2. بالنظر أيضًا إلى تحليل APK ، يمكننا أن نرى بوضوح أن كل ملف APK يحتوي على libflutter.so و 4 ملفات snapshot / aot مختلفة

Screen Shot 2019-07-17 at 1855 27

app-release-32.apk.zip
app-release-64.apk.zip

مجرد ملاحظة عند تحميل تطبيقين ... لا تسمح Google بتحميل ملفات متعددة لها نفس رقم البنية ، لذلك قد ترغب في تغيير رقم الإصدار قبل إنشاء apk لـ 64 بت.

مجرد ملاحظة عند تحميل تطبيقين ... لا تسمح Google بتحميل ملفات متعددة لها نفس رقم البنية ، لذلك قد ترغب في تغيير رقم الإصدار قبل إنشاء apk لـ 64 بت.

آه ، صحيح أن (راجع https://developer.android.com/google/play/publishing/multiple-apks#Rules). فقط تأكد من كل إصدار ، أن رقم الإصدار 64 بت أعلى من 32 بت (لقد قمت بتحديث المثال السابق الخاص بي https://github.com/flutter/flutter/issues/31922#issuecomment-512223030).

مرحبًا ، تلقيت رسالة خطأ عندما أحاول الإنشاء باستخدام appbundle . flutter build apk يعمل بشكل جيد ولكني أريد نشر إصدار جديد لتشغيل المتجر. يمكن لأي شخص أن يساعدني ما يمكن أن يكون السبب؟

ناتج تشغيل flutter build appbundle --target-platform android-arm,android-arm64 --flavor my_flavor --release -t "bin/main.dart هو كالتالي:

Initializing gradle...                                              0,6s
Resolving dependencies...                                           2,0s
Running Gradle task 'bundleMy_AppRelease'...                   
Running Gradle task 'bundleMy_AppRelease'... Done          1,9s
Gradle build failed to produce an Android bundle package.

للأسف رسالة الخطأ ليست مفيدة حقًا. أيضا إخراج دكتور الرفرفة:

[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X 10.14.5 18F132, locale de-DE)
    • Flutter version 1.7.8+hotfix.3 at /Users/tom/development/flutter
    • Framework revision b712a172f9 (2 weeks ago), 2019-07-09 13:14:38 -0700
    • Engine revision 54ad777fd2
    • Dart version 2.4.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/tom/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 10.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.3, Build version 10G8
    • CocoaPods version 1.6.1

[✓] iOS tools - develop for iOS devices
    • ios-deploy 1.9.4

[✓] Android Studio (version 3.4)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 36.1.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[✓] Connected device (1 available)
    • iPhone Xʀ • 095B1A07-E138-4A80-9783-8CA36DC8049A • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-4 (simulator)

• No issues found!

يحرر
إذا حاولت استخدام --split-per abi فإن المبنى يفشل مع flutter build apk أيضًا.

wreppun Thanks - لقد راجعت تقارير أعطال تطبيقي ولم يرسل أي من مستخدمي Asus ZenFone 2 المتأثرين أي شيء.

@ blasten لا تقلق ، هذا رائع. إذا تمكن شخص ما من إظهار عمل حزم التطبيقات الجديدة على جهاز Asus ZenFone 2 فسيكون ذلك كافيًا لدفعني إلى المضي قدمًا. لسوء الحظ ، لا يمكنني الوصول إلى واحدة ، لكنني آمل أن تفعل مختبرات اختبار الهاتف المحمول في Google.

حتى أنا أواجه مشكلة مع Asus Zenfone. عندما أعمل باستخدام flutter build apk ، يتم تشغيل التطبيق على الهاتف. ولكن عندما أقوم بتحميله إلى App Store باستخدام appbundle ، فإنه لا يتقدم على شاشة البداية.

اي حل ؟؟

حاولت تجميع إصدار واحد جديد من أحد تطبيقي (التطبيق) وإصداره في "متجر Play" ، ولكن كان لدي بعض المشاكل.

1-) عندما أقوم بتحميل 32 بت و 64 بت ، يتراجع الموقع ، بسبب إصدار 32 بت.

2-) عندما أقوم بتحميل 32 بتًا فقط ، يتراجع الموقع ، لأنني بحاجة إلى 64 بت.

3-) عندما أقوم بتحميل 64 بت فقط ، فإن الموقع يعمل ، لكن عملائي ربما لا يمتلكون نظام أندرويد 64 بت. في هاتفي المحمول على سبيل المثال ، أستخدم هذا التطبيق نفسه ، لكن في هاتفي الخلوي يعمل فقط عندما أستخدم apk 32 بت. عندما أقوم بتثبيت apk 64 بت في هاتفي المحمول ، يتوقف الأمر في شاشة البداية.

كيف يجب أن أفعل الآن للإفراج ؟؟

Tigerclaw1980 استخدم خيار flutter appbundle

Tigerclaw1980 استخدم خيار flutter appbundleMoacirSchmidt

لقد استخدمت Delphi Beta لإنشاء ملفات apk لـ 32 و 64 بت. لا أعرف ما إذا كان هذا الخيار متاحًا

حاولت تجميع إصدار واحد جديد من أحد تطبيقي (التطبيق) وإصداره في "متجر Play" ، ولكن كان لدي بعض المشاكل.

1-) عندما أقوم بتحميل 32 بت و 64 بت ، يتراجع الموقع ، بسبب إصدار 32 بت.

2-) عندما أقوم بتحميل 32 بتًا فقط ، يتراجع الموقع ، لأنني بحاجة إلى 64 بت.

3-) عندما أقوم بتحميل 64 بت فقط ، فإن الموقع يعمل ، لكن عملائي ربما لا يمتلكون نظام أندرويد 64 بت. في هاتفي المحمول على سبيل المثال ، أستخدم هذا التطبيق نفسه ، لكن في هاتفي الخلوي يعمل فقط عندما أستخدم apk 32 بت. عندما أقوم بتثبيت apk 64 بت في هاتفي المحمول ، يتوقف الأمر في شاشة البداية.

كيف يجب أن أفعل الآن للإفراج ؟؟

@ Tigerclaw1980 هل

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات