باستخدام flutter build apk --release --flavor pro
بإنشاء ملف apk ، لكن arm64-v8a لا تقم بتضمين libflutter.so file.so فشل تشغيل التطبيق.
عندما أقوم بإضافة --target-platform=android-arm64
: flutter build apk --release --flavor pro --target-platform=android-arm64
، يتضمن ملف apk so flie. لكن تشغيل التطبيق فشل على وحدة المعالجة المركزية 32 بت.
ماذا يمكنني أن أفعل ، يمكن تشغيل ملف apk على 64 و 32 cpu @ mravn-google
/System.err(15263): java.lang.UnsatisfiedLinkError: Couldn't load flutter from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.jianzhibao.ka.enterprise-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.jianzhibao.ka.enterprise-1, /vendor/lib, /system/lib]]]: findLibrary returned null
أقوم بإنشاء مشروع جديد أو تصحيح أخطاء أو إصدار ، يعمل بشكل جيد. الفرق من مشروع جديد من مشروعي هو أنني أضفت ملف so
أين المشكلة ؟
AFAIK حاليًا ، ستضيف Flutter فقط libflutter.so إلى مجلد النظام الأساسي المحدد في الإصدار APK. كان الحل الذي نجح معي هو إجبار build.gradle على عمل 32 بت فقط (باستثناء جميع مكتبات 64 بت + Intel)
release {
...
ndk{
abiFilters "armeabi-v7a"
}
}
cc هيكسي
swavkulinski كيف ستفرج عن التطبيق إلى playstore؟
لديك نفس المشكلة - ولكن flutter.so غير مدرج في "مجلد armeabi-v7a.
لديها مكتبات طرف ثالث فقط لـ x86 و armeabi-v7a - ولكن ليس بها arm64.
أرغب في بناء رفرفة فقط لـ "armeabi-v7a مع
ndk {
abiFilters "armeabi-v7a" // أيضًا لا تعمل "armeabi" ، "x86" ،
}
وتعيين كمنصة مستهدفة كما يقترح @ mravn-google إلى android-arm.
APK بدون تحديد القوس ولا تشمل المكتبات
APK مع مكتبات وبدون مواصفات الذراع
APK مع تحديد القوس وتضمين المكتبات
أي اقتراح كيفية تصحيح المزيد من الخطوات؟
xxseabxx لدي نفس المشكلة
لدي نفس المشكلة ، فالبناء لـ 32 بت سيستبعد أجهزة 64 بت ، إلا أنه يعمل عليها. يعمل البناء لـ 64 من خلال تحديد --target-platform android-arm64
على أجهزة 64 بت ، لكنه يتعطل على أجهزة 32 بت. كما ستعمل Google أيضًا على تقييد تحميل التطبيقات إلى 64 بت في عام 2019.
فريق Flutter ، يرجى حل هذه المشكلة الأساسية!
فريق Flutter ، يرجى حل هذه المشكلة الأساسية!
إذن ، هل أنا مخطئ بقولي أن الرفرفة يمكن أن تدعم فقط إصدار apk لـ 32 أو 64 بت ، ولكن ليس كلاهما؟
اي حظ هنا؟
أعتقد أن تعليق xxseabxx قد يعمل ولكني لم أجربه ...
أنا أيضا أواجه نفس المشكلة.
في جميع تبعياتي ، قمت بعزل حزمة واحدة على الأقل تسببت في المشكلة ، وملأت تقرير خطأ وفقًا لذلك: https://github.com/azihsoyn/flutter_mlkit/issues/36
لعزل المشكلة ، لكل من التبعية / المكون الإضافي الخاص بي:
1) إنشاء مشروع رفرفة فارغ
2) استبدل main.dart بـ
كود مثال الحزمة (على سبيل المثال: https://pub.dartlang.org/packages/flutter_html_view#-example-tab-)
3) قم بتحديث pubspec.yaml وفقًا لذلك
4) الجري
$ flutter build apk
اتضح أن الشخص الذي تم إنشاؤه كان flutter_mlkit.
أريد أن أكون قادرًا على استهداف معماريات 32 و 64.
لديك نفس المشكلة. --target-platform = android-arm64 يعمل معي ولكني أرغب في دعم 32 بت حتى تسحب Google القابس على 32 بت
فريق Flutter ، يرجى حل هذه المشكلة الأساسية!
الكثير من SDK الثالث لا يعمل ، أعتقد أنه أمر عاجل
يمكنني إعادة إنتاج هذا عند إضافة Mapbox إلى تطبيق android.
لدي نفس المشكلة أيضًا ، فأنا أستخدم baiduMap في مشروعي ، ونموذج bebug على ما يرام ، وأطلق الانهيار.
user flutter build apk --release --target-platform = android-arm64 في هاتفي على ما يرام ، لكن الهاتف 32 بت سيتعطل. فريق Flutter Team ، يرجى حل هذه المشكلة في أقرب وقت ممكن.
على غرار https://github.com/azihsoyn/flutter_mlkit/issues/36 ، إنه يعمل بالنسبة لي ، ويمكن تشغيل apk في هاتف 32 بت و 64 بت. تضمين التغريدة
يجب أن تكون هذه مشكلة مهمة جدًا لإصدار apk
هل هناك حل لهذه المشكلة؟
lib/armeabi-v7a/libflutter.so
من $<FLUTTER>/bin/cache/artifacts/engine/android-arm-release/flutter.jar
armeabi-v7a/libflutter.so
إلى $<project>/android/jniLibs/armeabi-v7a/
$<project>/android/app/build.gradle
النحو التالي:android {
...
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
ndk {
abiFilters "arm"
}
}
debug {
ndk {
abiFilters "arm"
}
}
}
}
بالنسبة إلى NDK ، تتطلب سلسلة أدوات 64 بت minSdkVersion> = 21.
هذا حررني (مع تعيين minSdkVersion المناسب):
الإصدار minSdk = 16
flutter build apk --release --target-platform=android-arm
flutter run --release --target-platform=android-arm
الإصدار minSdk = 21
flutter build apk --release --target-platform=android-arm64
flutter run --release --target-platform=android-arm64
احذف كل abiFilters ، إنه يعمل بالنسبة لي.
تضمين التغريدة أواجه هذا أيضًا عند محاولة الدمج مع التطبيق الحالي ، وهو أهم حالة استخدام لدينا في الوقت الحالي.
mindsdk = 21 ، لكن لم تقم بتحديث النظام الأساسي المستهدف بعد
neiljaywarner ، فإن
- استخراج
lib/armeabi-v7a/libflutter.so
من$<FLUTTER>/bin/cache/artifacts/engine/android-arm-release/flutter.jar
- انسخ الملف
armeabi-v7a/libflutter.so
إلى$<project>/android/jniLibs/armeabi-v7a/
- تعديل
$<project>/android/app/build.gradle
النحو التالي:android { ... buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug ndk { abiFilters "arm" } } debug { ndk { abiFilters "arm" } } } }
لم ينجح ذلك بالنسبة لي - فقد أنشأ ملف APK كان يفتقد إلى مجلد lib (وبالتالي كان نصف حجم ملف apk السابق).
لقد وجدنا أيضًا أنه إذا طبقنا الحل 32 بت فقط الذي نشره البعض (على سبيل المثال https://medium.com/flutterpub/flutter-app-couldnt-find-libflutter-so-c95ad81cbccd) فإنه ينتج عنه -التطبيق الأداء. على وجه الخصوص في اختبار واحد على Samsung S6 و S9 ، نرى التمرير بطيئًا للغاية في قائمة كبيرة.
لا أعتقد أن المشكلة هي فقط الذراع المفقودة 64 libflutter.so
.
حاولت إضافة المكتبة المفقودة إلى APK عن طريق إنشاء arm64 ، ونسخ libflutter.so
ثم إعادة إنشاء مكتبة arm64 يدويًا وإضافتها إلى ملف APK ، وإعادة المحاذاة وإعادة التوقيع:
flutter build apk --target-platform=android-arm64
mkdir -p tmp/lib/arm64-v8a
cp build/app/intermediates/transforms/mergeJniLibs/release/0/lib/arm64-v8a/libflutter.so tmp/lib/arm64-v8a/
flutter build apk
cp build/app/outputs/apk/release/app-release.apk tmp/
cd tmp
aapt add app-release.apk lib/arm64-v8a/libflutter.so
zipalign 4 app-release.apk app-release-aligned.apk
apksigner sign --ks keystore.jks app-release-aligned.apk
يحتوي ملف APK الناتج على libflutter.so لكل من armeabi-v7a و arm64-v8a ، ولكنه يتعطل عند التشغيل بسبب الخطأ التالي:
12-22 09:53:29.274 7457 7457 F flutter : [FATAL:flutter/runtime/dart_vm.cc(403)] Error while initializing the Dart VM: Snapshot not compatible with the current VM configuration: the snapshot requires 'product no-type_checks no-asserts no-error_on_bad_type sync_async reify_generic_functions arm-eabi softfp' but the VM has 'product no-type_checks no-asserts no-error_on_bad_type sync_async reify_generic_functions arm64-sysv'
أفترض أنه يجب شحن أصول اللقطة المنفصلة لكل قوس أيضًا. في الوقت الحالي ، يعد إنشاء ملفي APK منفصلين هو الحل الوحيد المناسب لي.
هذه مشكلة غريبة جدًا يجب مواجهتها بعد قضاء الوقت في كتابة واجهة أمامية في رفرفة فقط لتجد أن الإصدار لا يبني apk بشكل صحيح.
هل سأواجه نفس المشكلة بمجرد أن أقوم بعمل iOS؟
في أي وقت يمكن حل هذه المشكلة؟
هل هذا فقط لأن ملفات gradle الخاصة بنا لا تعرف كيفية تجميع كل البتات الصحيحة لكليهما؟ @ jason- simmonscbracken قد تعرف؟
أو FaisalAbid ربما؟
هل هذا فقط لأن ملفات gradle الخاصة بنا لا تعرف كيفية تجميع كل البتات الصحيحة لكليهما؟ @ jason- simmonscbracken قد تعرف؟
أو FaisalAbid ربما؟
من خلال البتات اليمنى أفترض أنك تعني أكثر من libflutter.so ، وفقًا لهذا التعليق: https://github.com/flutter/flutter/issues/18494#issuecomment -449557182
في الوقت الحالي ، أعتقد أن الحل الوحيد هو إنشاء ملفات APK 32 بت حتى يتم الإصلاح. لاحظ مع ذلك أننا رأينا مشكلات في الأداء مع 32 بت (وإن لم يكن رمزًا مثاليًا مع قوائم كبيرة).
يعمل بشكل جيد بالنسبة لي لإنشاء ملفات APK منفصلة 64 بت و 32 بت وتحميل كليهما إلى Google (يتعاملون مع توفير APK الصحيح للأجهزة الصحيحة تلقائيًا).
يمكنك إنشاء إصدار واحد مع تعيين abiFilters
على armeabi-v7a
و --target-platform=android-arm
، قم بتحميل ملف APK هذا ، ثم قم بإنشاء إصدار آخر باستخدام abiFilters
مضبوطًا على arm64-v8a
و --target-platform=android-arm64
وقم بتحميل ذلك أيضًا.
لاحظ أنك تحتاج أيضًا إلى استخدام رمز إصدار مختلف لكل ملف APK ، لذا قم بتضمين شيئًا ما في رمز الإصدار للإشارة إلى أنه 64 أو 32 بت ، تمامًا كما تفعل مع مستوى DPI أو API.
الخيار الأفضل حاليًا هو تعيين abiFilters بشروط من النظام الأساسي المستهدف
ndk {
if (project.hasProperty('target-platform') &&
project.property('target-platform') == 'android-arm64') {
abiFilters 'arm64-v8a'
} else {
abiFilters 'armeabi-v7a'
}
}
المشكلة التي أواجهها هي أنني الآن بحاجة إلى تحميل ملفين برموز إصدار مختلفة
يتمثل الإصلاح الحقيقي لهذا في القدرة على إنشاء حزم android مع منصات مستهدفة متعددة. حزم التطبيقات في flutter master حاليًا ولكني لم أتمكن من تشغيلها لهذا الغرض
سيتطلب متجر Play إصدار 64 بت بدءًا من 1 أغسطس.
بافتراض استمرار وجود أجهزة 32 بت ترغب في تشغيل تطبيقاتنا بعد 1 أغسطس ، كيف تتأكد من تضمين 32 بت و 64 بت في إصدارات الإصدارات؟
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
_ جميع التطبيقات الجديدة وتحديثات التطبيقات التي تتضمن رمزًا أصليًا مطلوبة لتوفير إصدارات 64 بت بالإضافة إلى إصدارات 32 بت عند النشر على Google Play._
يتم تلبية هذا المطلب بسهولة الآن مع تطبيقات Flutter من خلال إنشاء ملفي APK - أحدهما لأجهزة 32 بت والآخر لأجهزة 64 بت - وتحميلهما كجزء من نفس الإصدار. سيوفر Google Play تلقائيًا ملف APK المناسب للجهاز المناسب. أنا أفعل هذا وهو يعمل بشكل جيد. أتفق مع المعلقين الآخرين على أن الأمر ليس _ مثاليًا_ ، لكن IMO ليست مشكلة كبيرة في جعل هذا الجزء من سير عملك.
سيكون من الرائع أن يتم إصلاح هذا في المستقبل القريب. يعتبر نهج متعدد APK مجرد حل مؤقت إلى أن ينشئ Flutter ملفات APK بإصدارات متعددة.
يتطلب الكثير من المعالجة اليدوية (رموز الإصدار ، ونظام الإنشاء ، والأتمتة) بالإضافة إلى حِزم تطبيقات Android التي كان من المفترض أن تخفف مطوري خطوات الإنشاء اليدوية.
تشير هذه المشكلة حاليًا إلى إصدارات 32 و 64 بت فقط ، ولكن هناك أيضًا x86 و x64 بالإضافة إلى بعض المطورين في الصين لا يزالون يتحدثون عن دعم mips.
ألا يجب أن تدعم الرفرفة أكبر عدد من بنيات Android السبعة مع أصغر حجم apk ممكن خارج الصندوق؟
https://proandroiddev.com/reducing-apk-size-by-using-abi-filters-and-apk-split-74a68a885f4e
MarcelEdward يجب أن - لكن حجم APK IMHO ليس هو الجانب الأكثر أهمية ، بالنظر إلى أن Android يدعم الآن حزم التطبيقات (aab) بشكل كامل وسيقوم المستخدمون النهائيون بتنزيل بنية محسّنة لهواتفهم على أي حال.
بالنسبة إلى حجم ملف APK الخاص بالنظام الأساسي الذي يجب أن يكون محسنًا / صغيرًا قدر الإمكان.
أثناء التطوير ، قد يكون من المؤلم إعادة تثبيت APK بالحجم الكامل في كل مرة تقوم فيها بتغيير الرمز الأصلي. الحيلة هي استخدام عوامل تصفية abifilters للحد من إنشاء تصحيح الأخطاء في بنية هواتف الاختبار الخاصة بك. لست متأكدًا مما إذا كان هذا مناسبًا الآن ، نظرًا لأن Flutter يدعم إعادة التحميل السريع.
https://github.com/flutter/flutter/issues/17829 يتعلق بحزم تطبيقات aap ، لكن يمكنني العثور على 32 بت فقط عند التحويل باستخدام flutter build apk
لذلك عندما أفهم صيغة richt ، يتعين علينا بناء نسختين متسللتين مع 32 و 64 على الأقل من تحميلهما كليهما ، وبعد ذلك سيقوم التطبيق ببناء aap بأعجوبة حتى يحصل المستهلك على الإصدار الأمثل لهيكله المعين.
MarcelEdward لا يُنشئ متجر هنا .
يمكنك رؤية مثال جيد على ذلك من خلال إلقاء نظرة على 13 نوعًا مختلفًا من خرائط Google هنا (لاحظ أن APKMirror لا علاقة له بهذه الوظيفة بخلاف كونها طريقة سهلة للحصول على قائمة بالمتغيرات لتطبيق معين). يقدم متجر Play ملف APK المناسب من هذه المتغيرات لجهازك بناءً على خصائصه.
إذا كنت تستخدم حزمة تطبيقات ، فسيتعين عليك فقط تحميل الحزمة مرة واحدة بدلاً من تحميل ملفات APK متعددة ، لكن ما أفهمه هو أن متجر Play يقوم بعد ذلك بإنشاء متغيرات APK المختلفة من أجلك ، وبالتالي فإن النتيجة النهائية متشابهة ولكن هناك عمل أقل لك لأتمتة نفسك. (تدعم حزم التطبيقات أيضًا الوحدات الجديدة المحملة ديناميكيًا ، ولكن هذه قصة أخرى.)
لذلك يبدو مثل ميزة المطلوب هنا هو أن تكون قادرة على تشغيل flutter build
مع اثنين --target-platform
الحجج ويكون flutter
تلقائيا وضع كل أبنية في APK، هل هذا صحيح؟
Hixie ليس libflutter.so يتم إنشاؤه مرة واحدة فقط لكل إصدار رفرفة ونوع الإصدار؟ في هذه الحالة سيكون لديك 8 متغيرات (32،64 ، x86 ، x86_64). أعتقد أنه يجب تحديد هذه الأشياء ببساطة عند إنشاء تطبيق flutter وتصفيته اعتمادًا على الهاتف المستهدف أو حالة الاستخدام. يمكن لـ Gradle إجراء التصفية بشكل جيد.
ما يمتلكه الهاتف هو مستوى منخفض جدًا ، لم أحصل على فكرة عن الهندسة المعمارية التي يمتلكها الأشخاص الذين يستخدمون تطبيقاتنا. يجمع Flutter 32 بت عندما لا يتم تحديد بنية ، لذا سأفترض أن 32 بت يناسب الجميع. ولكن الآن اللعب سيتطلب المتجر 64 بت في أغسطس ، لذلك عندما يناسب 32 بت الجميع و 64 بت مطلوبًا ، يجب أن يدخل هذان النوعان في بنية الإصدار؟
لم أحصل على هاتف android بنفسي ، لذا سأفترض أنه سيعمل عندما يعمل على جهاز محاكاة. إلى أن يذكر مستخدمو التطبيق خلاف ذلك.
@ MarcelEdward2 ليس فقط 32 بت مقابل 64 بت. هناك أربع بنيات مدعومة بواسطة Android NDK الحديث:
في الوقت الحالي ، يتم تعيين Flutter بشكل افتراضي لبناء ملف APK يحتوي على كود أصلي تم تجميعه لـ armeabi-v7a فقط. سيعمل هذا بشكل جيد على arm64-v8a ، على الرغم من وجود عقوبة أداء مقارنة بشيء تم تجميعه لـ arm64-v8a أصلاً. ومع ذلك ، سيتم تشغيله ضمن محاكي ARM على x86 أو x86_64 ، بافتراض أن الجهاز يجمع واحدًا. إذا كان الجهاز x86 / x86_64 لا يحتوي على محاكي ARM ، فلن يعمل على الإطلاق.
مرة أخرى ، لا يتطلب منك متطلب أغسطس إنشاء ملف APK عالمي واحد أو AAB واحد يحتوي على كلا البنيتين. يتطلب الأمر ببساطة أن يحتوي كل إصدار تقوم بإنشائه على (على الأقل) ملف APK واحد مناسب لأجهزة 64 بت. ستكون التعديلات في Flutter لإتاحة إمكانية إنشاء ملف APK / AAB عالمي واحد مع دعم للعديد من البنى أمرًا رائعًا من حيث سير عمل المطور ، ولكن يمكنك تلبية هذا المطلب مع هذه التحسينات أو بدونها.
تم التعديل للإضافة: شخصيًا أعتقد أن الدعم من الدرجة الأولى لحزم التطبيقات هو أفضل طريقة لتحسين الوضع متعدد الأقواس.
appbundle يبدو وكأنه الحل للمضي قدمًا ... أعتقد أن الخطوة التالية هي: # 29303
نظرًا لأنني أفهم هذا الخطأ ، فهو مرتبط جدًا بالانتقال إلى .aab باعتباره تنسيق الإخراج الافتراضي لـ flutter build
وجعل ذلك .aab يشتمل بعد ذلك على إصدارات 32 بت و 64 بت:
https://developer.android.com/studio/projects/dynamic-delivery
كنت أفهم أن بعض هذا العمل قد يكون قيد التقدم بالفعل. dnfield قد تعرف.
/ سي سي @ مكليم
يبدو أن .aab قد يساعد ، لكنه قد لا يكون ضروريًا حقًا. هل المشكلة بسيطة مثل إضافة كل من ثنائيات الذراع 32 و 64 بت إلى APK؟
آه فهمت. ذلك لأننا سنحتاج إلى تضمين لقطة AOT للقوس الهدف أيضًا. والآن نضع ذلك فقط ضمن الأصول ، ولا نضع إصدارًا لكل بنية تحت libs
. إذا تمكنا من وضع لقطة AOT في مجلد libs الخاص بالعمارة الذي قد يعمل ، وإلا فإننا نريد استخدام تنسيق .aab لهذا السبب.
نريد القيام بذلك على أي حال لدعم بناء .AAR لحالات استخدام add2app. سوف نكز في ذلك.
ndk { if (project.hasProperty('target-platform') && project.property('target-platform') == 'android-arm64') { abiFilters 'arm64-v8a' } else { abiFilters 'armeabi-v7a' } }
لقد نجح هذا الأمر بالنسبة لي بعد أيام من استكشاف الأخطاء وإصلاحها
الحل المنشور بواسطة AppleEducate لا يعمل عندما أحاول تشغيل التطبيق على المحاكي.
ضعه في قسم التحرير
كان هذا هو الحل:
app gradle
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for armeabi-v7a and arm64-v8a.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
تشغيل flutter build apk --release --target-platform=android-arm
تحميل app-armeabi-v7a-release.apk
إلى متجر play
زيادة versionCode
تشغيل flutter build apk --release --target-platform=android-arm64
تحميل app-arm64-v8a-release.apk
إلى متجر play
سيخدم متجر Google play التطبيق وفقًا لهندسة الجهاز. أجهزة 32 بت سعيدة ، وأجهزة 64 بت سعيدة وأنا سعيد بمعرفة أن حجم APK الخاص بي لا يزال صغيرًا نسبيًا بينما لا يزال يخدم كلا البنيتين.
إذا قمنا بتضمين الدعم لكل من البنيتين في نفس APK ، فتوقع أن يكون حجم التطبيق الخاص بك 10 ميجا بايت +
@ edTheGuy00 أشك في أن حجم التحميل الكبير إلى متجر
يرجى إتاحة إمكانية تضمين جميع البنى الممكنة. لا يهمني إذا كان التحميل إلى متجر الألعاب سيكون 250 ميجابايت.
سيكون من الرائع أن تستخدم الرفرفة مساحة الجيجا بايت على وحدة التخزين الخارجية للتثبيت على هاتف android. هذا إذا كان بإمكان الرفرفة التأثير على التثبيت على هاتف android
أعتقد أن البرنامج النصي flutter.gradle
يجب أن يتضمن جميع ABIs في APK النهائي (Universal APK) ثم تشغيل ملفات APK المنقسمة افتراضيًا. ستحدد أدوات android ملف APK المناسب للتحميل على الجهاز المتصل وكل شيء على ما يرام. يمكن بعد ذلك تحميل ملف APK العام النهائي إلى متجر play ، أو إما ملفات APK المقسمة لكل ABI.
في هذه الأثناء كحل ، يمكنك إضافة هذا إلى الجزء السفلي من build.gradle
في دليلك android\app
.
// Include both 32bit and 64bit arm libflutter.so files into your APK
project.afterEvaluate {
assembleRelease.doLast {
String src
if(project.hasProperty('target-platform') &&
project.property('target-platform') == 'android-arm64') {
// If we are building the 64bit then we also want to add the 32bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm-release/flutter.jar"
}else{
// If we are building the opposite (32bit), we include the 64bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm64-release/flutter.jar"
}
copy {
from zipTree(src)
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/0/"
}
}
}
أوصي أيضًا بإضافة هذا إلى قسم buildTypes > release
الخاص بك. سيضمن هذا أن إصدار APK الخاص بك يحتوي على كل من ABIs.
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
بعد التعاون مع slightfoot ، توصلنا إلى هذا ولكن لا يزال الأمر غير صحيح تمامًا حيث يتعين عليك إنشاء مرتين في البداية لالتقاط libs التي يتم إدراجها في دليل src الخاص بك.
project.afterEvaluate {
assembleRelease.doFirst {
String src
if(project.hasProperty('target-platform') &&
project.property('target-platform') == 'android-arm64') {
// If we are building the 64bit then we also want to add the 32bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm-release/flutter.jar"
}else{
// If we are building the opposite (32bit), we include the 64bit libflutter.so
src = "$flutterRoot/bin/cache/artifacts/engine/android-arm64-release/flutter.jar"
}
copy {
from zipTree(src)
include 'lib/*/libflutter.so'
into "src/main/jniLibs/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
تحديث: بعد محاولة تشغيل ملف APK هذا على الجهاز ، فشل ، وبالتالي لا يعد حلاً قابلاً للتطبيق. الخطأ هو "خطأ أثناء تهيئة Dart VM: اللقطة غير متوافقة مع تكوين VM الحالي:
تتطلب اللقطة "تعليمات الاستخدام_باري_المنتج لا-" تؤكد "سبب_أسينك_أكوام arm-eabi softfp"
لكن الجهاز الظاهري يحتوي على "تعليمات_الاستخدام_باري_المنتج رقم"
آه فهمت. ذلك لأننا سنحتاج إلى تضمين لقطة AOT للقوس الهدف أيضًا. والآن نضع ذلك فقط ضمن الأصول ، ولا نضع إصدارًا لكل بنية تحت
libs
. إذا تمكنا من وضع لقطة AOT في مجلد libs الخاص بالعمارة الذي قد يعمل ، وإلا فإننا نريد استخدام تنسيق .aab لهذا السبب.نريد القيام بذلك على أي حال لدعم بناء .AAR لحالات استخدام add2app. سوف نكز في ذلك.
dnfield هل حققت بعض النجاح في هذا ، حتى الآن؟
العمل من خلال قطعة المكونات في الوقت الراهن. لقد حاولنا إعطاء الأولوية لأجزاء منه لإصلاح مشكلات Android X ، ولكن يجب أن نرى المزيد من ذلك.
gerryhigh وأنا كنت أبحث في هذا. من فضلك تجاهل ردودي الأخيرة. تكمن المشكلة في حقيقة أن libflutter.so غير مضمن لـ 64 بت ولكن بالنسبة لـ AOT ، يجب عليك تشغيل عملية الإنشاء مرتين ، مرة واحدة لـ 32 بت ومرة أخرى لـ 64 بت. يمكنك بعد ذلك الحصول على مجموعتين من كود Dart المترجم في أصول التطبيق الخاص بك بالإضافة إلى نسختين من libflutter.so. أعتقد أن الهدف النهائي سيكون إعداد مهام تجميع لـ Flutter بحيث يتم تشغيل خطوتين منفصلتين للبناء وتقسيم ملفات APK تلقائيًا.
ولكن في الوقت الحالي ، الحل الوحيد هو تشغيل الإصدار مرتين وتحميل ملفات APK متعددة إلى متجر Play.
flutter build apk --release --target-platform=android-arm
flutter build apk --release --target-platform=android-arm64
يمكن تحقيق ذلك بشكل أفضل من خلال تمكين حزم APK المنقسمة. يمكن العثور على مزيد من التفاصيل هنا: https://developer.android.com/studio/build/configure-apk-splits
slightfoot نعم ، هذا هو أفضل حل وجدته حتى الآن كما هو مذكور في تعليقي هناك https://github.com/flutter/flutter/issues/18494#issuecomment -477502287
slightfoot إذا فهمت بشكل صحيح ، فلن يكون من الممكن إنشاء ملف APK عالمي حيث توجد بعض التعليمات البرمجية في مجلد الأصول الذي لا يسمح بتقسيم الملفات وفقًا لـ archtecture المستهدف كمجلد lib؟
اللقطة المصممة لكل هندسة مختلفة. ببساطة نسخ المحرك libflutter.so
سيتسبب في تعذر تحميل اللقطة إذا كانت بنية اللقطة لا تتطابق مع بنية محرك الرفرفة.
لذلك لا توجد حاليًا طريقة لنا لإنشاء ملف apk عالمي يحتوي على جميع البنى ما لم يتم فصل ملفات اللقطة وتضمين ملف اللقطة لكل بنية.
أنا في حيرة من أمري حول سبب كون هذه مشكلة.
ينشئ Debug إنشاء libflutter.so في x86_64 و x86 و armeabi-v7a و arm64-v8a.
يجب أن تفعل بنيات الإصدار نفس الشيء تمامًا.
يتضمن AGP (Android Gradle Plugin) بالفعل وظيفة لتصفية البنى ، لذلك إذا رغب المستخدم في القيام بذلك لإصدار إصدار ، فيمكنه تعديل build.gradle الخاص به.
eseideldnfield لا أعتقد حقا هذا هو حلها عن طريق الروبوت التطبيق حزم - أنها ليست إخراج الروبوت الافتراضي بعد، وعند تشغيل ملفات apk من IDE سيتم استخدامها لبعض الوقت ولكن أنا متأكد.
تعد AABs سببًا آخر لضرورة تضمين Flutter لجميع بنيات libflutter. بحيث يمكن لمتجر Play Store تصفية البنية التي يوفرها للأجهزة.
athornz لا تكمن المشكلة في libflutter.so
ولكن مع تجميع شفرة dart إلى AOT snapshot
تتضمن تصميمات debug Dart VM ، لذا فإن كل رمز dart يعمل فقط JIT
على VM ، لكن إصدارات الإصدار قم بتجميع كود dart الخاص بك في لقطة ووضع تلك اللقطة في مجلد الأصول. من الناحية المثالية ، يجب تجميع اللقطة لكل بنية ووضعها بجانب libflutter.so
ولكن هذا ليس هو الحال في الوقت الحالي. لذلك ، بينما يمكنك تضمين libflutter.so
لجميع البنى ، فإن اللقطة ستعمل فقط لأي بنية تم تجميعها من أجلها.
أي خطة لإصلاح هذه المشكلة؟
يطلب متجر Google Play من المطور تقديم دعم 64 بت بعد 1 أغسطس 2019.
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
متطلب 64 بت: ماذا يعني ذلك للمطورين
اعتبارًا من 1 أغسطس 2019:
_ جميع التطبيقات الجديدة وتحديثات التطبيقات التي تتضمن رمزًا أصليًا مطلوبة لتوفير إصدارات 64 بت بالإضافة إلى إصدارات 32 بت عند النشر على Google Play._
الامتداد: سيستمر Google Play في قبول تحديثات 32 بت فقط للألعاب الحالية التي تستخدم Unity 5.6.6 أو أقدم حتى أغسطس 2021.
اعتبارًا من 1 أغسطس 2021:
سيتوقف Google Play عن عرض التطبيقات التي لا تحتوي على إصدارات 64 بت على الأجهزة التي تدعم 64 بت ، مما يعني أنها لن تكون متاحة في متجر Play على تلك الأجهزة.
سيشمل ذلك الألعاب المصممة باستخدام Unity 5.6.6 أو أقدم.
trevorwang يمكننا بالفعل إنشاء 64 بت وتحميلها مع 32 بت إلى متجر Play. إذن هذه ليست مشكلة.
slightfoot هل تقصد أنه يجب علي إنشاء ملف APK آخر 64 بت وتحميله على Google Play؟
كما تعلم ، Google Play غير متوفر في بر الصين الرئيسي. نحن نفضل ملف APK عالميًا لدعم جميع الأنظمة الأساسية.
تضمين التغريدة هكذا أفعل ذلك https://github.com/flutter/flutter/issues/18494#issuecomment -477502287
لا يعمل الشيء المنقسم في ملف gradfle. عليك أن تفعل شيئًا بأحد ملفات build.gradle حتى يعرف flutter كيفية تجميع بنى مختلفة. أو جوجل بلاي سيرفض التجميع الثاني.
شكرا @ edTheGuy00
لكننا نحتاج حقًا إلى ملف APK عالمي بما في ذلك جميع ملفات abis لسوق الصين.
trevorwang ، يمكنك إنشاء كل هدف وتحديد بنية كل ملف APK بشكل صريح. هذه هي الطريقة التي يتم بها ذلك لمعظم مواقع مرآة APK.
الحد 64 بت هو مجرد قيود على متجر Google Play. لا يزال بإمكانك نشر ملف APK armeabi-v7a فقط وسيتمكن الجميع من تشغيل تطبيقك.
يُعد إنشاء ملفات APK منفصلة لكل بنية حلاً بديلًا وليس حلاً للجميع بالتأكيد.
بمجرد دخول قيود Google Play 64bit حيز التنفيذ ، ستؤثر هذه المشكلة على معظم مطوري Flutter ، لذلك نحتاج حقًا إلى حل يسمح ببنى متعددة داخل حزمة / حزمة واحدة.
مجرد تذكير سريع
يستخدم فريق Flutter عدد "Thumbs-up" في مشكلة GitHub كدليل لأولويتها.
أعتقد أن هذه المسألة يجب أن تكون ذات أولوية عالية.
شكرا لعمل gerryhigh و slightfoot
لقد أضفت flutter إلى تطبيق موجود وقمت بإصلاح هذه المشكلة من خلال الحل التالي.
_يرجى إضافة هذا إلى وحدة التطبيق الخاصة بك في المشروع المضيف.
هذا هو البرنامج النصي الخاص بوضع التصحيح ، يرجى تغييره وفقًا للإصدار.
project.afterEvaluate {
assembleDebug.doLast {
def flutterRoot = System.getenv("FLUTTER_HOME")
def archTypes = ["arm", "arm64"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/debug/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
أي تطورات حديثة؟
ما انتهى بي الأمر ، لأنني أردت
1
أو 2
في نهاية رمز الإصدار ، لذا فإن الإصدار 1004
يصبح 10041
للذراع و 10042
لـ arm64.ext.platformCodes = ['android-arm': 1, 'android-arm64' : 2]
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
int code = 0
if (project.hasProperty('target-platform')) {
code = project.ext.platformCodes.get(project.property('target-platform'))
}
output.versionCodeOverride = variant.versionCode * 10 + code
}
}
flutter clean; flutter build apk --release --target-platform=android-arm; mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-arm32.apk; flutter build apk --release --target-platform=android-arm64; mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-arm64.apk;
أتمنى أن يساعدك هذا.
إذن فهذه مشكلة أواجهها أيضًا .. لقد قمت بإنشاء حزمة تطبيقات بدلاً من apk وعندما أقوم بتحميلها على google ، فإنها تعطيني تحذيرًا ولن تسمح لي باختبارها.
لقد كنت أستخدم codemagic للقيام بذلك ، فهل هناك طريقة للتوقيع عليها ووضعها في حزمة؟ أو استخدام codemagic لتقوم بتقطيعها؟
أواجه نفس المشكلة التي اعتقدت أنها لا يجب أن توجد على الإطلاق.
كيف يحدث هذا على "الأهداف" المعلم.
الأولوية الثانية: هذه مهام نعتقد أنها تستحق الإصلاح في السنوات القادمة. يتضمن المشكلات التي حددناها والتي قد تمنع الشحن الكامل للتطبيقات التي تواجه المستهلك على نطاق واسع ، ومشكلات الصحة ، والأخطاء المتعلقة بالتلميع والجودة. التاريخ في هذا المعلم تعسفي تمامًا ويهدف فقط إلى فرز الحدث بشكل مناسب.
إنها مشكلة حرجة بالفعل وستصبح أداة إيقاف كاملة للعرض في وقت لاحق من هذا العام بمجرد أن تفرض Google قيود 64 بت.
لقد صدمت علامة بارزة في هذا. لا يوجد تاريخ محدد بعد.
لنكون واضحين: من الممكن ، ولكن من الصعب ، الامتثال للمبادئ التوجيهية الجديدة اليوم. نريد أن نجعل ذلك أسهل.
لذلك عملت طريقة andreidiaconu بالنسبة لي طالما أني أقوم بإنشاء التطبيق يدويًا.
لكني كنت أستخدم codemagic للبناء والنشر.
إذن هذا مضيعة ، يحتاج Flutter إلى بنائه.
في الوقت الحالي أنا شخصياً لا أهتم حقًا إذا كان الأمر معقدًا. إذا كان الأمر معقدًا ، فسيتم تشغيله تلقائيًا بواسطة برنامج نصي. السؤال هو ما إذا كان ذلك ممكنًا وكيف لأن Google Play Console يحذرني:
هذا الإصدار غير متوافق مع متطلبات Google Play 64 بت
تتوفر حزم APK أو حِزم التطبيقات التالية لأجهزة 64 بت ، لكنها تحتوي فقط على رمز أصلي 32 بت: 6.
اعتبارًا من 1. أغسطس 2019 ، يجب أن تتوافق جميع الإصدارات مع متطلبات Google Play 64 بت.
قم بتضمين كود أصلي 64 بت و 32 بت في تطبيقك. استخدم تنسيق نشر "حزمة تطبيقات Android" للتأكد تلقائيًا من أن بنية كل جهاز تتلقى فقط الرمز الأصلي الذي تحتاجه. هذا يتجنب زيادة الحجم الكلي لتطبيقك.
لا أريد حلاً يحتاج إلى رموز إصدار مختلفة وأريد حلاً يعمل مع حزم تطبيقات Android (AAB).
تحذير
هذا الإصدار غير متوافق مع متطلبات Google Play 64 بت
تتوفر حزم APK أو حِزم التطبيقات التالية لأجهزة 64 بت ، لكنها تحتوي فقط على رمز أصلي 32 بت: 3.
اي حل؟
لقد صدمت علامة بارزة في هذا. لا يوجد تاريخ محدد بعد.
لنكون واضحين: من الممكن ، ولكن من الصعب ، الامتثال للمبادئ التوجيهية الجديدة اليوم. نريد أن نجعل ذلك أسهل.
هل يجب تحديث المستندات بإرشادات حول كيفية القيام بذلك لكل من حزم التطبيقات و apk؟ كل ما رأيته حتى الآن هو مجموعات من التعليمات البرمجية والتكوين التي لست متأكدًا من مكانها بالضبط. ربما يمكنني اكتشافها ببعض التجارب والخطأ ، لكنها أقل من مثالية.
المشكلة نفسها
شكرا لعمل gerryhigh وslightfoot
لقد أضفت flutter إلى تطبيق موجود وقمت بإصلاح هذه المشكلة من خلال الحل التالي.
_يرجى إضافة هذا إلى وحدة التطبيق الخاصة بك في المشروع المضيف.هذا هو البرنامج النصي الخاص بوضع التصحيح ، يرجى تغييره وفقًا للإصدار.
project.afterEvaluate { assembleDebug.doLast { def flutterRoot = System.getenv("FLUTTER_HOME") def archTypes = ["arm", "arm64"] archTypes.forEach { item -> copy { from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar") include 'lib/*/libflutter.so' into "$buildDir/intermediates/jniLibs/debug/" eachFile { it.path = it.path.replaceFirst("lib/", "") } } } } }
يبدو هذا الحل / الحل واعدًا للغاية ، شكرًا trevorwang ! لدي مشاكل في تنفيذ هذا في مشروع رفرفة موجود. هل لديك مثال على ملف build.gradle أو شيء مكافئ من شأنه أن يعرض هذا؟
يرجى ملاحظة أن هذا على الأرجح لن يحل مشكلتك - انظر أدناه
بفضل الجوابtrevorwang واقتراحnoinskit لقد تمكنت لتشمل 64BIT يبس الأم في الإفراج يبني مع إضافة صغيرة ل ./android/app/build.gradle
هو مبين أدناه.
يمكنك أيضًا عرض الملف بالكامل هنا .
afterEvaluate {
mergeReleaseJniLibFolders.doLast {
def archTypes = ["arm-release", "arm64-release"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
تضمين التغريدة وصلت إلى شيء مشابه. في حالتي ، أحتاج إلى تغيير assembleRelease
في مقتطفك إلى mergeReleaseJniLibFolders
، وإلا سينتهي الملف الإضافي * .so ضمن "intermediates / ..." ، ولكن ليس في ملف apk النهائي.
noinskit يبدو أن الحل السابق كان عرضة للخطأ. بعد تشغيل flutter clean
، قام بإنشاء aab بـ 32 بت فقط. يبدو أن استبدال assembleRelease
بـ mergeReleaseJniLibFolders
يعمل أيضًا بعد تنظيف البنية بشكل صحيح.
SPodjasek هل عليك تعديل أي خيارات أخرى؟
هنا هو app.gradle الخاص بي
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
afterEvaluate {
mergeReleaseJniLibFolders.doLast {
def archTypes = ["arm-release", "arm64-release"]
archTypes.forEach { item ->
copy {
from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
include 'lib/*/libflutter.so'
into "$buildDir/intermediates/jniLibs/release/"
eachFile {
it.path = it.path.replaceFirst("lib/", "")
}
}
}
}
}
يحتوي كلا المجلدين الوسيطين / jniLibs / release / arm64-v8a و armeabi-v7a على libflutter.so كما هو متوقع ولكن الإصدار الأخير APK لا يزال يفتقد libflutter.so في arm64-v8a.
ها هي لقطة الشاشة
@ function1983 يمكنك مشاهدة build.gradle
الكامل هنا .
اعتبارًا من إصدار الرفرفة الخاص بي:
[✓] Flutter (Channel beta, v1.5.4, on Linux, locale pl_PL.UTF-8)
• Flutter version 1.5.4 at .../development/flutter
• Framework revision b593f5167b (2 weeks ago), 2019-04-22 07:51:33 -0700
• Engine revision ca31a7c57b
• Dart version 2.3.0 (build 2.3.0-dev.0.1 cf4444b803)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at .../Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: .../development/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
• All Android licenses accepted.
[✓] Android Studio (version 3.4)
• Android Studio at .../development/android-studio
• Flutter plugin version 35.2.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
لقد كنت تحاول استخدام الحلSPodjasek الصورة لبناء appbundle التي تضم كلا الإصدارين 64 و 32 بت. تم إنشاؤه بنجاح ، يمكنني تحميله على Google Play Console ويمكنني تثبيته على كل من الهواتف 32 و 64 بت. لكن التطبيق يتعطل عند تشغيله على جهاز android-arm64 لسبب ما (يبدو أنه يعمل على هاتف android قديم 32 بت كنت أختبره رغم ذلك).
هذا هو الخطأ الذي تلقيته على جهاز 64 بت:
إحباط الرسالة: '[ FATAL: flutter / runtime / dart_vm.cc (416)] خطأ أثناء تهيئة Dart VM: اللقطة غير متوافقة مع تكوين VM الحالي: تتطلب اللقطة' product use_bare_instructions no- "تؤكد" السببية_اسينك_ Stacks arm-eabi softfp "لكن الجهاز الافتراضي يحتوي على" تعليمات استخدام المنتج - "لا" - "تؤكد" السببية_async_stacks arm64-sysv "
لست متأكدًا مما يمكنني فعله ... قد يتعين علي الالتزام بدعم أجهزة 64 بت فقط في الوقت الحالي.
Torrunt هذا الخطأ يرجع إلى أن المحرك يحاول رفض لقطة AOT لـ 32 بت والعثور على واحدة مقابل 64.
نحن نعمل على أن نكون قادرين على إنتاج AAB به كلا الأمرين حتى يتمكن المتجر من تقسيمهما بشكل صحيح.
SPodjasek باستخدام هذا ، زاد حجم ملف app-release.apk الخاص بي من 11.1 ميغابايت إلى 15.7 ميغابايت
SPodjasek باستخدام هذا ، زاد حجم ملف app-release.apk الخاص بي من 11.1 ميغابايت إلى 15.7 ميغابايت
نعم ، لأنه يتضمن بقوة libflutter.so
لـ 32 و 64 بت. إذا لم تكن بحاجة إلى ذلك ، فالتزم بالإعداد الافتراضي الحالي ليشمل 32 بت فقط وانتظر حتى يتعامل فريق الرفرفة مع هذا بشكل صحيح.
يبدو أن هناك بعض الاحتمالات:
ملاحظة للأشخاص الذين يستخدمون --target-platform
للإنشاء مقابل android-arm
و android-arm64
بشكل منفصل وتحميل ملفي APK.
انتبه إلى أن بعض المكونات الإضافية تستخدم مكتبات أصلية قد تستهدف كليهما ، ولا يقوم flutter بتصفية مجلدات المكتبات ، لذا فإن ملف APK "32 بت" الخاص بك سيظل في الواقع يستهدف arm64 أيضًا وسيتعطل لأن libflutter.so غير موجود ولقطات AOT موجودة بني ل armv7.
لذلك ، ستحتاج بالفعل إلى تصفية الهدف abi في ملف build.gradle الخاص بك.
أعتقد أن flutter build apk --target-platform ...
يجب أن يقوم بهذه التصفية بشكل منطقي.
باستخدام حل SPodjasek ، تلقيت خطأ حول مطابقة arm-eabi
مقابل arm64-sysv
. أعتقد أن الحل الأفضل ، الذي نجح معي ، هو مجرد البناء لـ 32 بت في الوقت الحالي حتى يتم حل كل هذا (حل هنا ):
في المستوى app
build.gradle
:
android {
// ...
buildTypes {
release {
// ...
ndk {
abiFilters "armeabi-v7a"
}
}
}
}
تلخيص المشكلة من الموضوع - لن يكون من الممكن إنشاء مثل هذا APK لكل من armeabi-v7a و arm64-v8a. يستخدم Flutter لقطات AOT التي تعتمد على ABI ، لذلك مع APK سيكون الحل الوحيد الممكن هو استخدام إصدارات APK متعددة.
سيكون الحل هو استخدام حزم التطبيقات ، والتي ، كما هو الحال الآن ، بها أيضًا بعض المشكلات (# 31922).
بعد دمج # 32787 ، أصبح من الممكن الآن استخدام حزم التطبيقات.
كيف يمكنني تعيين النكهة والملف الهدف (-t lib / another_main.dart ، على سبيل المثال) عند إنشاء حزمة تطبيقات Android عبر Android Studio؟ س
سيتم دعم ذلك عبر flutter build appbundle
بعد دمج https://github.com/flutter/flutter/pull/32787 !
swavkulinski كيف ستفرج عن التطبيق إلى playstore؟
كان لا يزال ممكنا في ذلك الوقت. الآن عليك أن تحد من 64 بت. تم إغلاق مكتبة NDK التابعة لجهة خارجية والتي كانت 32 بت فقط.
تضمين التغريدة
هل سيؤدي هذا أيضًا إلى إضافة دعم لـ flutter build apk --release
؟ أم أنه من المخطط التخلص التدريجي من دعم ملفات APK لصالح حزم التطبيقات على المدى الطويل؟ أحب تمامًا البساطة النسبية لملف APK السمين.
zimmi صحيح. يجب أن تكون حِزم التطبيقات هي السبيل للمضي قدمًا. لا يزال بإمكانك استخدام flutter build apk --release
عند الضرورة. ما هو أبسط في APK الدهون مقارنة AAB؟
ما هو أبسط في APK الدهون مقارنة AAB؟
AAB ليس ملف تثبيت. Android نفسه لا يمكنه استخدامه. إنه تنسيق ملف لمتجر Google Play فقط. لذا أحتاج إلى apk عندما:
أرى. شكرا على الخلفية.
يمكنك أيضًا استخراج ملفات APK من AAB باستخدام bundletool .
تضمين التغريدة
شكرا للتأكيد!
بخصوص تعليق البساطة: ماذا قال audkar . أيضًا مع AABs ، يتعين على المطور التفكير في سيناريوهات الفشل المحتملة الناتجة عن الأصول المفقودة. يعد الاختبار على جميع تكوينات الجهاز الممكنة أمرًا صعبًا ، لذا إذا حدثت هذه الأعطال ، فمن المحتمل أن تكون في الإنتاج.
قد يكون حجم التطبيق هو السعر الذي يرغب البعض في دفعه مقابل راحة البال.
أنا متأكد من أن هناك أماكن أفضل لمناقشة مزايا كل نهج من هذه القضية ، على الرغم من ذلك ، لا أريد أن أخرجها عن مسارها.
/ ccjonahwilliams قد نحتاج إلى دعم ملفات APK للدهون في build apk
.
هل يجب علينا أيضًا تغيير الإعداد الافتراضي لـ build apk
؟
هناك حاجة بالتأكيد إلى دعم APK الدهون. هناك الكثير من الأدوات (التوزيع التجريبي وما إلى ذلك) التي لا تعمل حتى الآن مع حزم التطبيقات.
flutter build appbundle
الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟
لقد أجرينا بعض المناقشات لدعم قائمة الأنظمة الأساسية في build apk
، لذا يمكنك القيام بشيء مثل هذا: flutter build apk --target-platform android-arm,android-arm64
blasten لقد تحولت إلى القناة الرئيسية ، وقمت بالترقية وبناء مجموعة التطبيقات ، لقد عملت بشكل جيد. ثم قم بتحميله على وحدة التحكم في اللعب وذهبت جميع التحذيرات. (macOS 10.14.4)
مدهش! سأقوم بتجميع بنائي الليلة بعد إجراء التغييرات.
يبدو أن الحزمة لا تعمل مع ذلك ، حيث يتعطل التطبيق عند تنزيله.
Issue: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mattetti.sounds/com.mattetti.sounds.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.mattetti.sounds.MainActivity" on path: DexPathList[[zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/base.apk", zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.arm64_v8a.apk", zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/lib/arm64, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/base.apk!/lib/arm64-v8a, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.arm64_v8a.apk!/lib/arm64-v8a, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.xxhdpi.apk!/lib/arm64-v8a, /system/lib64]]
يبدو أن com.mattetti.sounds.MainActivity
ليس في الحزمة؟
لست متأكدًا من السبب ، كيف يمكنني التحقق من سبب إزالته؟
mattetti هل تستخدم وحدة Flutter ؟ هل يمتد MainActivity
FlutterActivity
؟
تضمين التغريدة
ها هي تبعياتي
environment:
sdk: ">=2.2.2 <3.0.0"
dependencies:
flutter:
sdk: flutter
rxdart: ^0.22.0
shared_preferences: ^0.5.2
http: ^0.12.0
cached_network_image: ^0.8.0
url_launcher: ^5.0.2
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_launcher_icons: "^0.7.0"
dependency_overrides:
# requried for flutter_icons at this point
image: 2.0.7
لكنني لاحظت أيضًا أنني قمت بإعادة تسمية حزمة تطبيقي ولكني لم أغير المسار إلى ملف MainActivity.java
والذي لا يزال android/app/src/main/java/com/example/old_name/
الذي قد يكون هو المشكلة. غدًا ، سأحاول تغيير المسار ودفع حزمة أخرى.
مرحبًا blasten ، لقد حاولت إنشاء حزمة التطبيق وحصلت على هذا الخطأ
[ +48 ms] FAILURE: Build failed with an exception.
[ +3 ms] * What went wrong:
[ ] Failed to capture snapshot of input files for task ':app::flutter:package:packLibsDevRelease' property
'rootSpec$2$1' during up-to-date check.
[ ] > java.io.IOException: The filename, directory name, or volume label syntax is incorrect
[ ] * Try:
[ ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log
output. Run with --scan to get full insights.
[ ] * Get more help at https://help.gradle.org
[ ] Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
[ ] See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings
[ ] BUILD FAILED in 1m 28s
يستخدم مشروعي النكهة وهذا هو الأمر الذي أقوم بتشغيله
flutter build appbundle --flavor stage -t lib/main-stage.dart -v
هل ستشمل حزمة التطبيق أيضًا mapping.txt؟ عند تحميل حزم التطبيقات إلى Google Play Console عبر Codemagic ، لا يوجد ملف mapping.txt مضمن ، لذلك لا يوجد اختبار آلي أو تقارير ما قبل الإطلاق - وهو ما لديك عند تحميل ملف apk :(
لذا فإن السؤال هو:
هل سيقوم فريق Flutter بإجراء تحديث للإصدار 64 بت أم لا قبل أغسطس حتى نتمكن من تحميل وتحديث تطبيقاتنا المصممة برفرفة أم لا؟
YazeedAlKhalaf نعم. يمكنك استخدام flutter build appbundle
اليوم وستحصل على حزمة تطبيقات تحتوي على 32 بت و 64 بت.
mattetti هل تم حل المشكلة؟
يبدو nohli mapping.txt وكأنه طلب ميزة. لا تتردد في تقديم خطأ جديد.
skybur هل يمكنك تشغيل flutter doctor
؟ هل مشروع Flutter الخاص بك هو تطبيق أو وحدة نمطية؟
blasten مشروعي هو تطبيق.
ها هي نتيجة طبيب الرفرفة
[√] Flutter (Channel master, v1.6.1-pre.68, on Microsoft Windows [Version 10.0.17763.503], locale en-US)
• Flutter version 1.6.1-pre.68 at D:\Devs\Flutter\testappbundle\flutter
• Framework revision d5aae54a28 (22 hours ago), 2019-05-20 23:19:18 -0400
• Engine revision 301f560bd8
• Dart version 2.3.1 (build 2.3.1-dev.0.0 b48c8b1d1c)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at D:\AndroidSDK
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = D:\AndroidSDK
• ANDROID_SDK_ROOT = D:\AndroidSDK
• Java binary at: D:\AndroidStudio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
• All Android licenses accepted.
[√] Android Studio (version 3.2)
• Android Studio at D:\AndroidStudio
• Flutter plugin version 31.3.1
• Dart plugin version 181.5656
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
[√] VS Code, 64-bit edition (version 1.33.1)
• VS Code at C:\Program Files\Microsoft VS Code
• Flutter extension version 3.0.2
[!] Connected device
! No devices available
! Doctor found issues in 1 category.
@ blasten : الحصول على نفس الخطأ مثل skybur
محاولة استخدام flutter build appbundle
ثم تحميلها إلى المتجر ، ثم فتحها من هاتف Android:
تحطم فوري عند الافتتاح.
سجل adb:
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
05-22 09:40:52.404 27305 27305 F flutter : [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
05-22 09:40:52.404 27305 27305 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 27305 (tform.atomicdex)
05-22 09:40:52.432 27339 27339 I crash_dump64: obtaining output fd from tombstoned
05-22 09:40:52.433 1417 1417 I /system/bin/tombstoned: received crash request for pid 27305
05-22 09:40:52.434 27339 27339 I crash_dump64: performing dump of process 27305 (target tid = 27305)
05-22 09:40:52.434 27339 27339 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-22 09:40:52.434 27339 27339 F DEBUG : Build fingerprint: 'lge/judyln_lao_com/judyln:8.0.0/OPR1.170623.032/190501244a6e5.FGN:user/release-keys'
05-22 09:40:52.434 27339 27339 F DEBUG : Revision: '12'
05-22 09:40:52.434 27339 27339 F DEBUG : ABI: 'arm64'
05-22 09:40:52.434 27339 27339 F DEBUG : pid: 27305, tid: 27305, name: PACKAGE_NAME >>> PACKAGE_NAME <<<
05-22 09:40:52.434 27339 27339 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
05-22 09:40:52.435 27339 27339 F DEBUG : Abort message: '[FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
05-22 09:40:52.435 27339 27339 F DEBUG : '
05-22 09:40:52.435 27339 27339 F DEBUG : x0 0000000000000000 x1 0000000000006aa9 x2 0000000000000006 x3 0000000000000008
05-22 09:40:52.435 27339 27339 F DEBUG : x4 0000000007d0bf68 x5 0000000007d0bf68 x6 0000000007d0bf68 x7 0000000007d0bfd8
05-22 09:40:52.435 27339 27339 F DEBUG : x8 0000000000000083 x9 8644075c81e36b5a x10 00000077ccff6a48 x11 8644075c81e36b5a
05-22 09:40:52.435 27339 27339 F DEBUG : x12 8644075c81e36b5a x13 0000000000000020 x14 ffffffffffffffdf x15 00000077ca27ec68
05-22 09:40:52.435 27339 27339 F DEBUG : x16 00000077ca2732b8 x17 00000077ca205a44 x18 0000000000000048 x19 0000000000006aa9
05-22 09:40:52.435 27339 27339 F DEBUG : x20 0000000000006aa9 x21 0000007fe4fb81b8 x22 00000077b3dffba0 x23 00000077bd29d7a0
05-22 09:40:52.435 27339 27339 F DEBUG : x24 00000077aa79a150 x25 0000000000000000 x26 0000000000000000 x27 0000000000000002
05-22 09:40:52.435 27339 27339 F DEBUG : x28 0000000000000000 x29 0000007fe4fb81a0 x30 00000077ca1aa8e4
05-22 09:40:52.435 27339 27339 F DEBUG : sp 0000007fe4fb8160 pc 00000077ca205a4c pstate 0000000060000000
05-22 09:40:52.436 27339 27339 F DEBUG :
05-22 09:40:52.436 27339 27339 F DEBUG : backtrace:
05-22 09:40:52.436 27339 27339 F DEBUG : #00 pc 0000000000079a4c /system/lib64/libc.so (tgkill+8)
05-22 09:40:52.436 27339 27339 F DEBUG : #01 pc 000000000001e8e0 /system/lib64/libc.so (abort+88)
05-22 09:40:52.436 27339 27339 F DEBUG : #02 pc 000000000001d61c /data/app/PACKAGE_NAME-F-z4qH6HT271dk7M7oI8Uw==/split_config.arm64_v8a.apk (offset 0xea7000)
Kiruel ، ليس من الواضح جدًا بالنسبة لي سبب استمرار الناس في قول أن حزمة التطبيقات تحل هذه المشكلة.
حزمة التطبيقات ليست أكثر من ملف APK مقسم آليًا ، ولا يوجد تقسيم في مجلد الأصول. لذلك لا تزال اللقطات تستهدف بنية واحدة فقط.
ربما أفتقد شيئًا ما ولكن في رأيي ، فإن الحل الوحيد الآن هو إنشاء APK لكل معماريات مع تصفية ndk المقابلة في ملف gradle. ثم قم بتحميل كل ملف APK.
إذا لم نتمكن من حل هذه المشكلة باستخدام APK ، فلا توجد فرصة أن تعمل حزمة التطبيقات أيضًا.
ndusart لا أعتقد أن هذا صحيح. تقول مستندات حزمة التطبيق:
الدقة / ، lib / ، والأصول /: هذه الأدلة مماثلة لتلك الموجودة في ملف APK نموذجي. عند تحميل حزمة التطبيقات الخاصة بك ، يقوم Google Play بفحص هذه الأدلة وحزم الملفات التي تلبي تكوين الجهاز المستهدف فقط ، مع الاحتفاظ بمسارات الملفات.
لذلك يمكن تقسيم الأصول بطريقة أو بأخرى.
jereksel ، أخبر فقط أن هذه الأدلة تعمل تمامًا في حزمة التطبيقات بنفس الطريقة التي تعمل بها في apk وأن المجلد assets/
غير مقسم. يتم استخدامه لتخزين الأصول في بنية ملف محددة جدًا في التطبيق ، ولا يُقصد تحليلها بواسطة نظام التشغيل أو أي شيء آخر.
إذا كنت مخطئًا ، أخبرني فقط كيف يمكننا تقسيم هذا المجلد بناءً على هدف ABI.
وهذا الاقتباس يؤكد فقط ما أقوله ، إذا لم يكن ذلك ممكنًا الآن مع APK ، فلن يكون ذلك ممكنًا باستخدام حزمة التطبيقات لأن هذه المجلدات تعمل تمامًا بالطريقتين.
لم أر الأصول تنقسم بنفسي ، لكني وجدت هذا:
https://medium.com/google-developer-experts/exploring-the-android-app-bundle-ca16846fa3d7
الأصول .pb - هذا هو المكافئ لجدول الموارد لأصول التطبيق ولن يكون موجودًا إلا إذا كنت تستخدم الأصول في التطبيق الخاص بك.
لذا أعتقد أن Android Studio لا يقسم الأصول ، لكن حزم التطبيقات نفسها تدعم ذلك.
هل لديك أي وثائق رسمية؟ كل هذا يبدو غير موثوق به للغاية.
تنص المقالة التالية ، https://medium.com/mindorks/android-app-bundle-aab-98de6dad8ba8 ، على أنه يمكننا إلحاق لاحقة باسم المجلدات في assets/
لتقسيمها ولكن حاليًا يمكن هذا فقط على اللغة.
ومع ذلك ، لا يبدو هذا مستقرًا بعد ولا ينبغي أن يستند إلى الآن. يجب ترحيل لقطات VM إما في المجلد lib/
إذا كان ذلك ممكنًا أو يجب أن يأتي الأمر flutter
مع ميزة كاملة لإنشاء ملف APK لهدف معين (لا يزال هناك عمل يتعين القيام به على ذلك لتكون في متناول الكثير من الأشخاص) وتأخير إنتاج حزمة التطبيقات عندما تكون جاهزة لذلك.
تضمين التغريدة
لقد تحولت إلى القناة الرئيسية ، وقمت بالترقية وبناء مجموعة التطبيقات. للأسف التطبيق Chashes بعد تنزيله من متجر google play مع logcat التالي
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟لقد أجرينا بعض المناقشات لدعم قائمة الأنظمة الأساسية في
build apk
، لذلك يمكنك القيام بشيء مثل هذا:flutter build apk --target-platform android-arm,android-arm64
تضمين التغريدة
لقد تحولت إلى القناة الرئيسية ، وقمت بالترقية وبناء مجموعة التطبيقات. للأسف التطبيق Chashes بعد تنزيله من متجر google play مع logcat التالي
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟
لقد أجرينا بعض المناقشات لدعم قائمة الأنظمة الأساسية فيbuild apk
، لذلك يمكنك القيام بشيء مثل هذا:flutter build apk --target-platform android-arm,android-arm64
لدي نفس المشكلة ، على الرغم من أنه ليس لدي أي سجلات حتى الآن.
skybur ، قد تكون المشكلة التي https://github.com/flutter/flutter/issues/33119. إذا كانت هذه هي الحالة ، يجب أن يصلح هذا التصحيح .
تضمين التغريدة
نعم انت محق. لقد تحققت من شفرة مصدر bundletool وتقسيم الأصول فقط حسب اللغة بالفعل:
https://github.com/google/bundletool/blob/master/src/main/java/com/android/tools/build/bundletool/splitters/ModuleSplitter.java#L286
كان هذا هو الحل:
- في
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
- تشغيل
flutter build apk --release --target-platform=android-arm
- تحميل
app-armeabi-v7a-release.apk
إلى متجر play- زيادة
versionCode
- تشغيل
flutter build apk --release --target-platform=android-arm64
- تحميل
app-arm64-v8a-release.apk
إلى متجر playسيخدم متجر Google play التطبيق وفقًا لهندسة الجهاز. أجهزة 32 بت سعيدة ، وأجهزة 64 بت سعيدة وأنا سعيد بمعرفة أن حجم APK الخاص بي لا يزال صغيرًا نسبيًا بينما لا يزال يخدم كلا البنيتين.
إذا قمنا بتضمين الدعم لكل من البنيتين في نفس APK ، فتوقع أن يكون حجم التطبيق الخاص بك 10 ميجا بايت +
هناك شيء مهم لأخبركم به يا رفاق. إذا كنت تستخدم الطريقة التي أقتبسها. قد تحتاج إلى التعليق على الإعداد ، عندما تريد الاستمرار في تصحيح أخطاء تطبيقك. أواجه الخطأ فشل إنشاء Gradle في إنتاج حزمة Android ، gradlew clean
... إلخ ، وأخيراً اكتشفت أنه يجب التعليق على ذلك!
أتمنى أن يكون هذا قد ساعد شخص ما على القفز.
flutter build appbundle
الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟لقد أجرينا بعض المناقشات لدعم قائمة الأنظمة الأساسية في
build apk
، لذا يمكنك القيام بشيء مثل هذا:flutter build apk --target-platform android-arm,android-arm64
flutter build appbundle
يعمل! لست بحاجة إلى إضافة هذا الإعداد ، فقط قم بالكود. ومع ذلك ، يستغرق الأمر بعض الوقت للتجميع ، ولكنها الطريقة الوحيدة لتمرير Google Play الآن.
Tokenyet هل تمكنت من تنزيل التطبيق من متجر Play وتشغيله بعد تحميل .aab
؟ إذا كانت هذه هي الحالة ، فهل تمانع في لصق ناتج flutter doctor
؟
تضمين التغريدة
لقد تحولت إلى القناة الرئيسية ، وقمت بالترقية وبناء مجموعة التطبيقات. للأسف التطبيق Chashes بعد تنزيله من متجر google play مع logcat التالي
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟
لقد أجرينا بعض المناقشات لدعم قائمة الأنظمة الأساسية فيbuild apk
، لذلك يمكنك القيام بشيء مثل هذا:flutter build apk --target-platform android-arm,android-arm64
نفس الشيء تمامًا هنا ، عند محاولة تشغيل تطبيقي من متجر Play (تم إنشاؤه كحزمة تطبيقات). ما السجلات التي تحتاجونها يا رفاق لحل هذا؟
سيكون هذا مفيدًا:
bundletool
من https://developer.android.com/studio/command-line/bundletoolflutter build appbundle
(الرجاء توضيح ما إذا كنت قد قمت بتمرير أي علامة أو إذا قمت بإجراء _custom_ التغييرات على أي برنامج نصي من Gradle)bundletool build-apks --bundle=build/app/outputs/bundle/release/app.aab --output=out.apks
لاستخراج مجموعة APK.unzip -l out.apks
وأخيرًا flutter doctor
والصق الناتج من كلا الأمرين في تعليقك.اذا كان ممكنا:
اختبر محليًا على الجهاز باستخدام bundletool
ومجموعة APK. هذه هي الخطوات ، الصق logcat في تعليقك.
لا يمكنني إعادة إظهار المشكلة على الرغم من أنني اختبرت محليًا فقط باستخدام bundletool
.
blasten لذا تم إصلاح الخطأ السابق لكنني واجهت خطأ آخر. أفترض أن هذا ناتج عن شيء ما في مشروعي. هل هناك أي طريقة يمكنني من خلالها تصحيح هذا؟
[+6084 ms] Failed to execute aapt
[ +17 ms] com.android.ide.common.process.ProcessException: Failed to execute aapt
[ +1 ms] at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:809)
[ +1 ms] at com.android.build.gradle.internal.res.LinkAndroidResForBundleTask.taskAction(LinkAndroidResForBundleTask.kt:128)
[ +1 ms] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ +1 ms] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ +1 ms] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ ] at java.lang.reflect.Method.invoke(Method.java:498)
[ ] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
[ +4 ms] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
[ +1 ms] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
[ ] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
[ +3 ms] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788)
[ +29 ms] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755)
[ +1 ms] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
[ +1 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
[ +2 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
[ +1 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
[ +9 ms] at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
[ ] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
[ ] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
[ +1 ms] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
[ ] at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
[ +1 ms] at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
[ ] at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
[ ] at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
[ +5 ms] at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
[ ] at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
[ +1 ms] at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
[ +1 ms] at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
[ +12 ms] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
[ +4 ms] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
[ ] at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
[ ] at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
[ ] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
[ ] at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
[ +6 ms] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
[ +1 ms] at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
[ ] at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
[ +14 ms] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
[ +1 ms] at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
[ +4 ms] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[ +1 ms] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[ +2 ms] at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
[ +1 ms] at java.lang.Thread.run(Thread.java:745)
[ +26 ms] Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[ +4 ms] at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
[ +1 ms] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
[ ] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
[ ] at com.android.builder.internal.aapt.AbstractAapt.link(AbstractAapt.java:34)
[ ] at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:807)
[ ] ... 51 more
[ ] Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[ +1 ms] at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
[ ] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
[ ] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
[ ] at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:166)
[ +4 ms] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[ +1 ms] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[ +1 ms] ... 1 more
[ +1 ms] Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[ +1 ms] at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:443)
[ +1 ms] at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:395)
[ ] at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:312)
[ ] at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
[ ] FAILURE: Build failed with an exception.
[ ] * What went wrong:
[ ] Execution failed for task ':app:bundleProdReleaseResources'.
[ ] > Failed to execute aapt
[ ] * Try:
[ ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[ +5 ms] * Get more help at https://help.gradle.org
[ ] BUILD FAILED in 30s
[ +324 ms] Running Gradle task 'bundleProdRelease'... (completed in 31.5s)
blasten أتبع جميع
➜ PROJECT_NAME git:(master) ✗ unzip -l out.apks
Archive: out.apks
Length Date Time Name
--------- ---------- ----- ----
43369811 01-01-1970 01:00 standalones/standalone-armeabi_tvdpi.apk
43327197 01-01-1970 01:00 standalones/standalone-armeabi_hdpi.apk
43319503 01-01-1970 01:00 standalones/standalone-armeabi_mdpi.apk
43320027 01-01-1970 01:00 standalones/standalone-armeabi_ldpi.apk
43346424 01-01-1970 01:00 standalones/standalone-armeabi_xxhdpi.apk
43350403 01-01-1970 01:00 standalones/standalone-armeabi_xxxhdpi.apk
43332970 01-01-1970 01:00 standalones/standalone-armeabi_xhdpi.apk
50349155 01-01-1970 01:00 standalones/standalone-armeabi_v7a_ldpi.apk
50348629 01-01-1970 01:00 standalones/standalone-armeabi_v7a_mdpi.apk
50398968 01-01-1970 01:00 standalones/standalone-armeabi_v7a_tvdpi.apk
50356358 01-01-1970 01:00 standalones/standalone-armeabi_v7a_hdpi.apk
50362126 01-01-1970 01:00 standalones/standalone-armeabi_v7a_xhdpi.apk
50375565 01-01-1970 01:00 standalones/standalone-armeabi_v7a_xxhdpi.apk
50379553 01-01-1970 01:00 standalones/standalone-armeabi_v7a_xxxhdpi.apk
50660246 01-01-1970 01:00 standalones/standalone-arm64_v8a_ldpi.apk
50659718 01-01-1970 01:00 standalones/standalone-arm64_v8a_mdpi.apk
50710027 01-01-1970 01:00 standalones/standalone-arm64_v8a_tvdpi.apk
50667415 01-01-1970 01:00 standalones/standalone-arm64_v8a_hdpi.apk
50673185 01-01-1970 01:00 standalones/standalone-arm64_v8a_xhdpi.apk
50686641 01-01-1970 01:00 standalones/standalone-arm64_v8a_xxhdpi.apk
43345757 01-01-1970 01:00 standalones/standalone-x86_mdpi.apk
43346287 01-01-1970 01:00 standalones/standalone-x86_ldpi.apk
43396086 01-01-1970 01:00 standalones/standalone-x86_tvdpi.apk
50690619 01-01-1970 01:00 standalones/standalone-arm64_v8a_xxxhdpi.apk
43359247 01-01-1970 01:00 standalones/standalone-x86_xhdpi.apk
43353470 01-01-1970 01:00 standalones/standalone-x86_hdpi.apk
43372688 01-01-1970 01:00 standalones/standalone-x86_xxhdpi.apk
43376653 01-01-1970 01:00 standalones/standalone-x86_xxxhdpi.apk
43340224 01-01-1970 01:00 standalones/standalone-x86_64_ldpi.apk
43339701 01-01-1970 01:00 standalones/standalone-x86_64_mdpi.apk
43390033 01-01-1970 01:00 standalones/standalone-x86_64_tvdpi.apk
43347418 01-01-1970 01:00 standalones/standalone-x86_64_hdpi.apk
57027 01-01-1970 01:00 splits/base-ldpi.apk
56501 01-01-1970 01:00 splits/base-mdpi.apk
61951 01-01-1970 01:00 splits/base-hdpi.apk
67741 01-01-1970 01:00 splits/base-xhdpi.apk
81187 01-01-1970 01:00 splits/base-xxhdpi.apk
85188 01-01-1970 01:00 splits/base-xxxhdpi.apk
105385 01-01-1970 01:00 splits/base-tvdpi.apk
43353194 01-01-1970 01:00 standalones/standalone-x86_64_xhdpi.apk
11313 01-01-1970 01:00 splits/base-ca.apk
11211 01-01-1970 01:00 splits/base-da.apk
12040 01-01-1970 01:00 splits/base-fa.apk
11659 01-01-1970 01:00 splits/base-ja.apk
12486 01-01-1970 01:00 splits/base-ka.apk
12511 01-01-1970 01:00 splits/base-pa.apk
12856 01-01-1970 01:00 splits/base-ta.apk
11195 01-01-1970 01:00 splits/base-nb.apk
12001 01-01-1970 01:00 splits/base-be.apk
11420 01-01-1970 01:00 splits/base-de.apk
13041 01-01-1970 01:00 splits/base-ne.apk
12674 01-01-1970 01:00 splits/base-te.apk
43366615 01-01-1970 01:00 standalones/standalone-x86_64_xxhdpi.apk
11179 01-01-1970 01:00 splits/base-af.apk
12151 01-01-1970 01:00 splits/base-bg.apk
12353 01-01-1970 01:00 splits/base-th.apk
11228 01-01-1970 01:00 splits/base-fi.apk
12537 01-01-1970 01:00 splits/base-si.apk
12551 01-01-1970 01:00 splits/base-hi.apk
11939 01-01-1970 01:00 splits/base-kk.apk
11615 01-01-1970 01:00 splits/base-vi.apk
12059 01-01-1970 01:00 splits/base-mk.apk
11440 01-01-1970 01:00 splits/base-sk.apk
11961 01-01-1970 01:00 splits/base-uk.apk
12344 01-01-1970 01:00 splits/base-el.apk
11342 01-01-1970 01:00 splits/base-gl.apk
13334 01-01-1970 01:00 splits/base-ml.apk
11350 01-01-1970 01:00 splits/base-nl.apk
11371 01-01-1970 01:00 splits/base-pl.apk
11311 01-01-1970 01:00 splits/base-sl.apk
11428 01-01-1970 01:00 splits/base-tl.apk
11825 01-01-1970 01:00 splits/base-am.apk
12685 01-01-1970 01:00 splits/base-km.apk
12615 01-01-1970 01:00 splits/base-bn.apk
11223 01-01-1970 01:00 splits/base-in.apk
12832 01-01-1970 01:00 splits/base-kn.apk
11958 01-01-1970 01:00 splits/base-mn.apk
12621 01-01-1970 01:00 splits/base-lo.apk
11425 01-01-1970 01:00 splits/base-ko.apk
11395 01-01-1970 01:00 splits/base-ro.apk
11438 01-01-1970 01:00 splits/base-sq.apk
13612 01-01-1970 01:00 splits/base-fr.apk
11647 01-01-1970 01:00 splits/base-ar.apk
11278 01-01-1970 01:00 splits/base-hr.apk
12447 01-01-1970 01:00 splits/base-mr.apk
12943 01-01-1970 01:00 splits/base-or.apk
14244 01-01-1970 01:00 splits/base-sr.apk
11316 01-01-1970 01:00 splits/base-tr.apk
11973 01-01-1970 01:00 splits/base-ur.apk
11308 01-01-1970 01:00 splits/base-bs.apk
12525 01-01-1970 01:00 splits/base-as.apk
13704 01-01-1970 01:00 splits/base-es.apk
11367 01-01-1970 01:00 splits/base-cs.apk
11222 01-01-1970 01:00 splits/base-is.apk
11360 01-01-1970 01:00 splits/base-ms.apk
11323 01-01-1970 01:00 splits/base-et.apk
11283 01-01-1970 01:00 splits/base-it.apk
11550 01-01-1970 01:00 splits/base-lt.apk
14605 01-01-1970 01:00 splits/base-pt.apk
11377 01-01-1970 01:00 splits/base-eu.apk
12409 01-01-1970 01:00 splits/base-gu.apk
11651 01-01-1970 01:00 splits/base-hu.apk
12048 01-01-1970 01:00 splits/base-ru.apk
11616 01-01-1970 01:00 splits/base-lv.apk
11314 01-01-1970 01:00 splits/base-zu.apk
11260 01-01-1970 01:00 splits/base-sv.apk
11539 01-01-1970 01:00 splits/base-iw.apk
11283 01-01-1970 01:00 splits/base-sw.apk
12110 01-01-1970 01:00 splits/base-hy.apk
43370609 01-01-1970 01:00 standalones/standalone-x86_64_xxxhdpi.apk
11904 01-01-1970 01:00 splits/base-ky.apk
11430 01-01-1970 01:00 splits/base-az.apk
13395 01-01-1970 01:00 splits/base-my.apk
11296 01-01-1970 01:00 splits/base-uz.apk
15398 01-01-1970 01:00 splits/base-zh.apk
23877 01-01-1970 01:00 splits/base-en.apk
107757 01-01-1970 01:00 splits/base-armeabi.apk
134023 01-01-1970 01:00 splits/base-x86.apk
127969 01-01-1970 01:00 splits/base-x86_64.apk
42926206 01-01-1970 01:00 splits/base-master.apk
21480838 01-01-1970 01:00 splits/base-arm64_v8a_2.apk
17508309 01-01-1970 01:00 splits/base-armeabi_v7a_2.apk
217751 01-01-1970 01:00 splits/base-armeabi_2.apk
311771 01-01-1970 01:00 splits/base-x86_2.apk
308537 01-01-1970 01:00 splits/base-x86_64_2.apk
7136923 01-01-1970 01:00 splits/base-armeabi_v7a.apk
7447993 01-01-1970 01:00 splits/base-arm64_v8a.apk
42926200 01-01-1970 01:00 splits/base-master_2.apk
16537 01-01-1970 01:00 toc.pb
--------- -------
1759809847 129 files
➜ PROJECT_NAME git:(master) ✗ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.6.1-pre.68, on Mac OS X 10.14.5 18F132, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
[!] Android Studio (version 3.3)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.34.0)
[✓] Connected device (1 available)
! Doctor found issues in 1 category.
تضمين التغريدة
في الواقع يسمى هذا Assets Targeting
ويسمح لك باستهداف / تقسيم الدلائل في الأصول بناءً على واجهة برمجة تطبيقات الرسومات ، وضغط اللغة والنسيج.
كما هو موضح هنا: ... / bundletool / model / calling / TargetedDirectorySegment.java
فيما يتعلق بـ AAB الحالي flutter@master
يعمل بالنسبة لي محليًا - باستخدام bundletool
للاختبار والتثبيت على جهاز حقيقي. لقد عطلت تقسيم الكثافة واللغة في build.gradle
لذا فإن build-apks
يعطيني هذا:
Length Date Time Name
--------- ---------- ----- ----
6872466 1970-01-01 01:00 splits/base-arm64_v8a.apk
6726824 1970-01-01 01:00 splits/base-master.apk
13289718 1970-01-01 01:00 standalones/standalone-armeabi_v7a.apk
13594392 1970-01-01 01:00 standalones/standalone-arm64_v8a.apk
6567785 1970-01-01 01:00 splits/base-armeabi_v7a.apk
429 1970-01-01 01:00 toc.pb
--------- -------
47051614 6 files
باختباره في Test Lab ، لدي أيضًا كل شيء أخضر.
ما زلت في انتظار Play Store لمعالجة هذا الإصدار لاختبار هذه القناة.
Tokenyet هل تمكنت من تنزيل التطبيق من متجر Play وتشغيله بعد تحميل
.aab
؟ إذا كانت هذه هي الحالة ، فهل تمانع في لصق ناتجflutter doctor
؟
يمكنني تنزيل التطبيق من متجر Play وتشغيله. يمكنك [تجربتها] (https://play.google.com/store/apps/details؟id=com.bumbystudio.starry_clock). (تحرير: عفوًا ، إنها ليست wokring ... من PlayStore)
يوجد أدناه flutter doctor
حسب حاجتك. أتمنى أن تكون قد ساعدت.
[√] Flutter (Channel master، v1.6.1-pre.88، في Microsoft Windows [الإصدار 10.0.17134.765] ، الإعدادات المحلية zh-TW)
[√] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[√] Android Studio (الإصدار 3.3)
[√] كود VS ، إصدار 64 بت (الإصدار 1.30.2)
[!] جهاز متصل
! لا توجد أجهزة متاحة
هذا يفي بالغرض بالنسبة لي !
buildTypes {
إطلاق سراح {
// TODO: أضف تكوين التوقيع الخاص بك لبناء الإصدار.
// التوقيع باستخدام مفاتيح التصحيح في الوقت الحالي ، لذا يعمل flutter run --release
.
التوقيع تكوين تكوينConfigs.debug
}
تصحيح {
ndk {
abiFilters "armeabi-v7a"
}
}
}
SPodjasek لا يزال ، نحتاج إلى تقسيم assets/
بناءً على ABI. كيف يمكن القيام بذلك حاليا؟
لقد قمت بتثبيته في جهازي ويبدو أنه لا يعمل. كل ما حصلت عليه هو ملف
شاشة سوداء.
شكرا،
Purusothaman رامانوجام
في الخميس ، 23 مايو ، 2019 ، 6:43 مساءً ، كتبت Tokenyet ، [email protected] :
Tokenyet https://github.com/Tokenyet هل تمكنت من تنزيل التطبيق
من متجر Play وتشغيله بعد تحميل ملف .aab؟ إذا كان هذا هو ملف
حالة ، هل تمانع في لصق إخراج طبيب الرفرفة؟يمكنني تنزيل التطبيق من متجر Play وتشغيله. يمكنك أن تعطيه
محاولة
https://play.google.com/store/apps/details؟id=com.bumbystudio.starry_clock
.يوجد أدناه طبيب الرفرفة الخاص بي حسب حاجتك. أتمنى أن تكون قد ساعدت.
[√] Flutter (Channel master، v1.6.1-pre.88، على Microsoft Windows [الإصدار
10.0.17134.765]، الإعدادات المحلية zh-TW)[√] Android toolchain - تطوير لأجهزة Android (إصدار Android SDK
28.0.3)
[√] Android Studio (الإصدار 3.3)
[√] كود VS ، إصدار 64 بت (الإصدار 1.30.2)
[!] جهاز متصل
! لا توجد أجهزة متاحة-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/flutter/flutter/issues/18494؟email_source=notifications&email_token=AAIHDZYY47H6PUQQJYEO4J3PW2J7RA5CNFSM4FFE2B7KYY3PNVWWK3TUL52HS4DFVREXG43VMV
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AAIHDZZXV67JCNVJYLVA3WLPW2J7RANCNFSM4FFE2B7A
.
ndusart في هذه المرحلة ، من المستحيل - ربما أرسل طلب ميزة على
SPodjasek لذلك هذا ما أقوله ، كل هذه المشكلة تسير في الاتجاه الخطأ.
يبدو أن جميع المناقشات تنتهي بـ "حسنًا ، لا تقلق ، عندما يمكننا إنشاء حزم تطبيقات ، سيكون كل شيء على ما يرام" ولكن هذا ليس هو الحال تمامًا الآن وفي المستقبل القريب.
إنه لأمر مخيب للآمال بعض الشيء أن ترى فريق الرفرفة يترك الناس يعتقدون أنه من الممكن بهذه الطريقة.
يجب أن يكون flutter قادرًا على توفير طريقة لإنشاء ملف APK مقسم بسهولة إما عن طريق إجراء التقسيم نفسه أو إدارة نقل لقطات VM إلى المجلد lib/
وترك التقسيم يعمل فقط (يمكننا بعد ذلك استخدام حزم التطبيقات أيضًا )
دعونا نلخص:
flutter build apk ...
.flutter build appbundle
في الفرع الرئيسي. إذا لم تعمل حزم التطبيقات مع حالة الاستخدام الخاصة بك ، فيجب أن تغطي (1) الحالات المتبقية.حسنًا blasten لقد بحثت في الكود الرئيسي وتم نقل اللقطات إلى مجلد lib:
https://github.com/flutter/flutter/blob/dc28ba8919604ff19ea7cbad8d9400516347b08a/packages/flutter_tools/gradle/flutter.gradle#L470 -L481
لذلك لا يقتصر الأمر على إضافة دعم حزمة التطبيقات فقط. إنه أكثر وضوحا الآن.
كان من الممكن تقديم القليل من التفسير على الرغم من أنه تم ذكر أن المشكلة كانت في مجلد الأصول ولم يتم تقديم أي معلومات عن العمل في هذا الاتجاه نظرًا لأن هذه المشكلة ودعم حزمة التطبيق مستقلان تمامًا.
شكرا لعملكم.
ndusart - قام blasten بإجراء تغييرات على تضمين Android بحيث يبحث الآن عن النقاط الثنائية في المجلد lib
حتى تتمكن من التجميع في كلا النوعين إذا لم أكن مخطئًا ...
إذا تم نقل اللقطات إلى lib ، فربما يتم إصلاح # 30846 أيضًا؟
تضمين التغريدة
لقد تحولت إلى القناة الرئيسية ، وقمت بالترقية وبناء مجموعة التطبيقات. للأسف التطبيق Chashes بعد تنزيله من متجر google play مع logcat التالي2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
flutter build appbundle
الآن في الماجستير ، فهل يريد أي شخص متطوع أن يجربه؟
لقد أجرينا بعض المناقشات لدعم قائمة الأنظمة الأساسية فيbuild apk
، لذلك يمكنك القيام بشيء مثل هذا:flutter build apk --target-platform android-arm,android-arm64
لدي نفس المشكلة ، على الرغم من أنه ليس لدي أي سجلات حتى الآن.
كذلك هنا. كان لديه خطأ. ترقية الماجستير وتشغيل flutter build appbundle
. تخلص من الخطأ ولكن التطبيق يتعطل عند فتحه.
حاولت تحميل حزمة التطبيقات باستخدام أحدث إصدار رئيسي من flutter إلى متجر التطبيقات مع أحدث التغييرات. ذهب الخطأ 64 بت الآن ، لكن تطبيقي يتعطل على الفور.
الغريب حقًا هو تشغيل الإصدار 64 بت باستخدام الأوامر أدناه يعمل بشكل جيد.
flutter build apk - android-arm64
رفرفة تثبيت API
إنه يتعطل فقط عند تثبيت التطبيق من خلال حزمة التطبيقات في متجر التطبيقات. في الوقت الحالي ، قمت بإعادة متجر التطبيقات إلى الإصدار 32 بت apk.
ليس لدي أي شيء مميز في مبنى gradle.build الخاص بي
الإصدار 21
الإصدار 28
versionCode flutterVersionCode.toInteger ()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled صحيحًا
أنا أقوم بتشغيل Flutter (Channel master، v1.6.4-pre.13، على نظام التشغيل Mac OS X 10.14.5 18F132، locale en-US)
هل هناك أي طريقة لاختبار هذه الحزم قبل تحميلها على متجر التطبيقات؟ هل هذه مشكلة معروفة تعمل Google عليها أم أحتاج إلى إجراء بعض التغييرات على ملف gradle الخاص بي؟
chitwoob برجاء اتباع الخطوات: https://github.com/flutter/flutter/issues/18494#issuecomment -495049530
blasten أواجه مشكلة في أداة الحزمة لا علاقة لها بهذه المشكلة.
انا حصلت
خطأ: فشل بدء تشغيل خادم ADB
عند الجري
build-apks --connected-device --bundle =. / app.aab --output =. / my_app.apks --adb
لدي adb مثبتة بشكل صحيح. عندما أحاول adb logcat فإنه يعمل بشكل جيد.
كان هذا هو الحل:
- في
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
- تشغيل
flutter build apk --release --target-platform=android-arm
- تحميل
app-armeabi-v7a-release.apk
إلى متجر play- زيادة
versionCode
- تشغيل
flutter build apk --release --target-platform=android-arm64
- تحميل
app-arm64-v8a-release.apk
إلى متجر playسيخدم متجر Google play التطبيق وفقًا لهندسة الجهاز. أجهزة 32 بت سعيدة ، وأجهزة 64 بت سعيدة وأنا سعيد بمعرفة أن حجم APK الخاص بي لا يزال صغيرًا نسبيًا بينما لا يزال يخدم كلا البنيتين.
إذا قمنا بتضمين الدعم لكل من البنيتين في نفس APK ، فتوقع أن يكون حجم التطبيق الخاص بك 10 ميجا بايت +
باتباع هذه الخطوات كان إعطاء "Gradle build فشل في إنتاج حزمة Android." خطأ
_ بعد ساعة من التصحيح اكتشف الإصلاح. _
لإنشاء تطبيقات مختلفة لـ x86 و x64 ، اتبع الخطوات التالية:
الخطوة 1: ضمِّن مقتطف الشفرة في ملف app/build.gradle
. سيبدو الملف بالشكل:
....
lintOptions {
disable 'InvalidPackage'
}
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for armeabi-v7a and arm64-v8a.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "armeabi-v7a", "arm64-v8a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk false
}
}
defaultConfig {
....
الخطوة 2: أنشئ إصدار apk باستخدام flutter build apk --release
سيؤدي هذا إلى إنشاء ملف apk مستند إلى x86 في المجلد build/app/outputs/apk/app.apk
قم بتحميل ملف apk هذا إلى متجر google play.
x86 تم إنجازه حتى الآن
في هذه المرحلة ، لا تقم بتشغيل flutter clean
كنت أفعل ذلك وأتلقى أخطاء عند إنشاء x64 apk
الخطوة 3: الآن افتح pubspec.yaml
وقم بتغيير version
من
version: 1.0.0+1
إلى version: 1.0.0+2
الرقم الموجود بجانب + هو رمز الإصدار
الخطوة 4: الآن قم بتشغيل الأمر
flutter build apk --release --target-platform=android-arm64
بعد اكتمال هذا الأمر ، انتقل إلى build/app/outputs/apk/release/
. هناك ستجد ملف apk باسم app-arm64-v8a-release.apk
. هذا هو ملف apk 64 بت الخاص بك برمز إصدار مختلف.
الآن قم بتحميل ملف apk x64 هذا لتشغيل المتجر .... وها أنت ذا. لقد قمت بتحميل كل من تطبيقات x86 و x64 لتشغيل المتجر.
سيكون تعليقًا طويلاً ، لكن هذا أدى إلى حل المشكلة تمامًا
[...]
لإنشاء تطبيقات مختلفة لـ x86 و x64 ، اتبع الخطوات التالية:الخطوة 1: ضمِّن مقتطف الشفرة في ملف
app/build.gradle
. سيبدو الملف بالشكل:.... lintOptions { disable 'InvalidPackage' } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } } defaultConfig { ....
الخطوة 2: أنشئ إصدار apk باستخدام
flutter build apk --release
[...]
أتفق مع إجابتك. يعمل بالنسبة لي ، على الرغم من أنني لم أضطر إلى اتباع الخطوة 1 (استخدمت build.gradle افتراضيًا)
بعد ذلك ، تحتاج فقط إلى زيادة رقم الإصدار والإصدار حتى يقبله Google Play.
ما زلت أواجه مشكلات مع flutter build appbundle
في يدي.
سيكون تعليقًا طويلاً ، لكن هذا أدى إلى حل المشكلة تمامًا
[...]
لإنشاء تطبيقات مختلفة لـ x86 و x64 ، اتبع الخطوات التالية:
الخطوة 1: ضمِّن مقتطف الشفرة في ملفapp/build.gradle
. سيبدو الملف بالشكل:.... lintOptions { disable 'InvalidPackage' } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } } defaultConfig { ....
الخطوة 2: أنشئ إصدار apk باستخدام
flutter build apk --release
[...]أتفق مع إجابتك. يعمل بالنسبة لي ، على الرغم من أنني لم أضطر إلى اتباع الخطوة 1 (استخدمت build.gradle افتراضيًا)
بعد ذلك ، تحتاج فقط إلى زيادة رقم الإصدار والإصدار حتى يقبله Google Play.
ما زلت أواجه مشكلات مع
flutter build appbundle
في يدي.
لا يعمل. أنا منزعج جدا. تعطل التطبيق عند محاولة النشر على محاكي x86 وكذلك على جهاز ذراع حقيقي. حاولت مع قناة رئيسية / بيتا / مستقرة. لا يوجد إصدار جاهز. لا يزال يظهر سدادة بالنسبة لنا. ينشئ الأمر Appbundle حزمة قابلة للتثبيت للتشغيل ولكن أثناء وقت التشغيل يظهر التطبيق شاشة البداية ثم يتجمد. يرجى من فريق Flutter تقديم حل واضح أو WA.
mormih شكرًا على
--bug-report
(على سبيل المثال ، flutter build appbundle --bug-report
) وإرفاق الملف bugreport.zip
المرتبطadb bugreport
بعد محاولة تشغيل التطبيقشكرا!
tvolkert لدي أيضًا مشكلة حيث
فشل التحقق: vm. يجب أن تكون قادرًا على تهيئة الجهاز الظاهري.
النظام الأساسي المضيف الخاص بي هو mac و macOS 10.14.5. هل كنت قادرًا على إعادة إنتاجه ، أم تريد مني اتباع الخطوات التي كتبتها أعلاه؟ أيضًا ، ربما يجب أن يكون لهذا تذكرة مخصصة لأنها مشكلة منفصلة عن OP واحد .. تحياتي
mormih لست متأكدًا ولكن هل حاولت تضمين x86
أيضًا في قائمة abi؟
include "armeabi-v7a", "arm64-v8a", "x86"
flutter build appbundle
(على المستوى الرئيسي) لم يعمل معي أيضًا ، توقف شاشة البداية تمامًا كما لاحظ الآخرون ...
الحل الوحيد الذي وجدته للإفراج (في متجر Play) لكل من 32 و 64 بت حتى الآن هو التالي. (مغطاة جزئيًا في الخيط ولكنها قد تساعد شخصًا ما):
قم بإنشاء ملف apk باستخدام عامل التصفية v7 + الأمر الافتراضي build apk:
في تطبيقك / ملف build.gradle:
defaultConfig {
...
ndk{ abiFilters "armeabi-v7a" }
}
ثم ركض
flutter build apk
(الافتراضيات إلى - إطلاق)
ضع رقم البناء الخاص بك في pubspec.yaml.
على سبيل المثال ، من version: 1.1.0+6
إلى version: 1.1.0+7
أنشئ ملف apk باستخدام مرشح v8 + أنشئ باستخدام arm64 كنظام أساسي مستهدف:
الآن قم بتحديث build.gradle مثل:
defaultConfig {
...
ndk{ abiFilters "arm64-v8a" }
}
ثم ركض
flutter build apk --release --target-platform android-arm64
يتضمن النفقات العامة لضرورة تحميل تطبيقين (وبالتالي إنشاء رقمين للبناء) ولكن على الأقل يبدو أنه يقوم بالمهمة ويمكنني إصداره لكل من الأجهزة 32 و 64 بت ...
ملاحظة: لقد تركت x86 لأن ذلك لا يتضمن سوى مجموعة صغيرة جدًا من الأجهزة المحمولة (وربما لا أحد من المستخدمين لدي) ، بالإضافة إلى أنني لست بحاجة إلى إصدار إصدار في المحاكي (التصحيح كافٍ للاختبار). لكن هذا بالطبع قد لا يكون هو الحال بالنسبة للآخرين.
طريقة ezmegy هي الوحيدة التي عملت معي. شكرا
في مكان ما في التعليقات ترك شخص ما هذا.
لقد كان هذا يعمل بالنسبة لي ورمزه الطرفي الوحيد.
إنه ينتج ملفين أكرههما على الرغم من أنه ينشئ نسختين.
ezmegy شكرا لك! أنت تحفظ يومي
شكرا ezmegy ، "
شكرا ezmegy !
أرغب في مشاركة سير العمل الحالي الخاص بي والذي قد يكون مفيدًا:
قم بإنشاء بعض نكهات البناء على app/build.gradle
لكل هندسة
flavorDimensions 'arch'
productFlavors {
arm32 {
dimension 'arch'
ndk {
abiFilters 'armeabi-v7a'
}
}
arm64 {
dimension 'arch'
ndk {
abiFilters 'arm64-v8a'
}
}
ثم يمكنني بناء كليهما باستخدام:
flutter build apk --flavor arm32
و
flutter build apk --flavor arm64 --target-platform android-arm64
دون تعديل تدرج في كل بناء
فيما يتعلق برمز الإصدار ، أفضل تعيين واحد افتراضيًا واشتقاق الرموز الأخرى منه
على سبيل المثال ، قم بتعيين arm32
مع 1.0.0 + 10000 وقم بإنشاء رمز إصدار لـ arm64
وهو 1.0.0 + 10001
يجب أن يكون إنشاء هذا سهلًا باستخدام bash (أو داخل fastfile إذا كنت تستخدم fastlane)
يمكنك تعيين رقم الإصدار باستخدام وسيطات --build-number
أو عبر fastlane إذا كنت تستخدم واحدًا
هذا الإصدار من البرمجة النصية يساعدني في CI / CD
CMIIW
بالنسبة لي هذا عمل بشكل جيد
https://github.com/flutter/flutter/issues/10728#issuecomment -461375218
سيكون تعليقًا طويلاً ، لكن هذا أدى إلى حل المشكلة تمامًا
كان هذا هو الحل:
- في
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
- تشغيل
flutter build apk --release --target-platform=android-arm
- تحميل
app-armeabi-v7a-release.apk
إلى متجر play- زيادة
versionCode
- تشغيل
flutter build apk --release --target-platform=android-arm64
- تحميل
app-arm64-v8a-release.apk
إلى متجر playسيخدم متجر Google play التطبيق وفقًا لهندسة الجهاز. أجهزة 32 بت سعيدة ، وأجهزة 64 بت سعيدة وأنا سعيد بمعرفة أن حجم APK الخاص بي لا يزال صغيرًا نسبيًا بينما لا يزال يخدم كلا البنيتين.
إذا قمنا بتضمين الدعم لكل من البنيتين في نفس APK ، فتوقع أن يكون حجم التطبيق الخاص بك 10 ميجا بايت +باتباع هذه الخطوات كان إعطاء "Gradle build فشل في إنتاج حزمة Android." خطأ
_ بعد ساعة من التصحيح اكتشف الإصلاح. _لإنشاء تطبيقات مختلفة لـ x86 و x64 ، اتبع الخطوات التالية:
الخطوة 1: ضمِّن مقتطف الشفرة في ملف
app/build.gradle
. سيبدو الملف بالشكل:.... lintOptions { disable 'InvalidPackage' } splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } } defaultConfig { ....
الخطوة 2: أنشئ إصدار apk باستخدام
flutter build apk --release
سيؤدي هذا إلى إنشاء ملف apk مستند إلى x86 في المجلدbuild/app/outputs/apk/app.apk
قم بتحميل ملف apk هذا إلى متجر google play.
x86 تم إنجازه حتى الآنفي هذه المرحلة ، لا تقم بتشغيل
flutter clean
كنت أفعل ذلك وأتلقى أخطاء عند إنشاء x64 apkالخطوة 3: الآن افتح
pubspec.yaml
وقم بتغييرversion
من
version: 1.0.0+1
إلىversion: 1.0.0+2
الرقم الموجود بجانب + هو رمز الإصدار
الخطوة 4: الآن قم بتشغيل الأمر
flutter build apk --release --target-platform=android-arm64
بعد اكتمال هذا الأمر ، انتقل إلى
build/app/outputs/apk/release/
. هناك ستجد ملف apk باسمapp-arm64-v8a-release.apk
. هذا هو ملف apk 64 بت الخاص بك برمز إصدار مختلف.الآن قم بتحميل ملف apk x64 هذا لتشغيل المتجر .... وها أنت ذا. لقد قمت بتحميل كل من تطبيقات x86 و x64 لتشغيل المتجر.
إنه يعمل بالنسبة لي أيضًا بدون الخطوة 1. شكرًا للجميع. لقد استخدمت مرشحات ndk {
abiFilters "armeabi-v7a" ، "x86"
}
في بناء ملف gradle. لا أعلم أنه مطلوب أم لا. بخلاف ذلك ، فقد اتبعت جميع الخطوات من الخطوة 2 وقمت بتحميل ملفي apk ، أحدهما 32 بت والآخر لـ 64 بت.
في وقت سابق كنت قد قمت بتحميل appbundle ، هذه المرة قمت بتحميل ملفات apk. تعمل بشكل جيد. يجب أن أتحقق من appbundle وأحاول أيضًا الإصلاح دون تحميل ملفي apk.
ملحوظة :
قبل القيام بهذه العملية ، تعطل تطبيقي في أجهزة arm-64 بت التالية
Redmi MI ،
هاتف Redmi 3S Prime
شرف 8x
عملت في الأجهزة التالية arm-64 بت
سامسونج جالكسي J4
سامسونج On8
مرحبًا فريق Flutter ،
الرجاء. ضع في اعتبارك أيضًا أسواق التطبيقات الأخرى مثل تلك الموجودة في الصين. في الصين ، لا يُسمح لنا باستخدام متجر Google Play ، بدلاً من ذلك ، لدينا العديد من أسواق التطبيقات مثل XiaoMi's و HuaWei's و Ali's ... إلخ.
في أسواق التطبيقات هذه ، لا يُسمح لنا بتقديم إصدارات apk في بنيات مختلفة ، ولا يمكننا سوى تحميل واحد فقط واحد فقط لكل إصدار ، وسيتجاوز هذا الإصدار ملف apk للإصدار السابق. مما يعني أن الحل الحالي هو استخدام "armeabi-v7a".
صححني إذا كنت مخطئًا ، باستخدام "armeabi-v7a" ، ستعمل جميع الأجهزة ذات 64 بت 32 بت libflutter.so ، وأعتقد أنه سيكون أبطأ.
لذا أود أن أقترح ما إذا كان بإمكان فريق flutter توفير طريقة تتيح لنا إنشاء ملف apk يتضمن كلاً من libflutter 32 بت و 64 بت ، على الرغم من أن حجم ملف apk سيكون أكبر. (في الصين ، عادة ما تكون لدينا سرعة إنترنت عالية جدًا ولا ندفع سوى القليل مقابل الحصول على خطط استخدام لا نهائية لشبكة 4G ، ولا يهتم الأشخاص عادةً بحجم ملف apk)
مرحبًا فريق Flutter ،
الرجاء. ضع في اعتبارك أيضًا أسواق التطبيقات الأخرى مثل تلك الموجودة في الصين. في الصين ، لا يُسمح لنا باستخدام متجر Google Play ، بدلاً من ذلك ، لدينا العديد من أسواق التطبيقات مثل XiaoMi's و HuaWei's و Ali's ... إلخ.
في أسواق التطبيقات هذه ، لا يُسمح لنا بتقديم إصدارات apk في بنيات مختلفة ، ولا يمكننا سوى تحميل واحد فقط واحد فقط لكل إصدار ، وسيتجاوز هذا الإصدار ملف apk للإصدار السابق. مما يعني أن الحل الحالي هو استخدام "armeabi-v7a".
صححني إذا كنت مخطئًا ، باستخدام "armeabi-v7a" ، ستعمل جميع الأجهزة ذات 64 بت 32 بت libflutter.so ، وأعتقد أنه سيكون أبطأ.
لذا أود أن أقترح ما إذا كان بإمكان فريق flutter توفير طريقة تتيح لنا إنشاء ملف apk يتضمن كلاً من libflutter 32 بت و 64 بت ، على الرغم من أن حجم ملف apk سيكون أكبر. (في الصين ، عادة ما تكون لدينا سرعة إنترنت عالية جدًا ولا ندفع سوى القليل مقابل الحصول على خطط استخدام لا نهائية لشبكة 4G ، ولا يهتم الأشخاص عادةً بحجم ملف apk)
في حالتك ، يمكنك توفير معيار 32 بت وسيكون كل شيء على ما يرام ، أليس كذلك؟
تحذير 64 بت مخصص فقط لـ Google Play. أعتقد أن هذه ليست قضية للصين.
(يرجى تصحيح لي إذا كنت مخطئا.)
@ KunalT6569 أعتقد أن الخطوة 3 كما ذكرت من قبلك:
الخطوة 3: افتح الآن pubspec.yaml وقم بتغيير الإصدار من
الإصدار: 1.0.0 + 1 للإصدار: 1.0.0 + 2
مطلوب للسماح بتحميل كلا ملفي apk إلى وحدة تحكم google play ، أليس كذلك؟
لدي سؤال آخر - بمجرد أن يصبح كلا ملفي apk جاهزين ، يمكنك ببساطة تحميلهما عبر قسم App releases\New Release\Browse Files
، أليس كذلك؟
@ angel1st نعم ، الخطوة 3 مطلوبة لأن Google play لن يسمح بتحميل ملفين لهما نفس رموز الإصدار.
لتحميل عدة تطبيقات على google play ، أشرت إلى هذا الفيديو.
https://www.youtube.com/watch؟v=rMl_oLlf_g0
لمعلوماتك:
تتمثل خطتنا الحالية في إطلاق إصدار تجريبي باستخدام أحد إصدارات المطورين الحديثة في العشرة أيام القادمة أو نحو ذلك. بعد ذلك ، خطتنا هي الانتظار حتى يكون لدينا عملية موثقة محدثة لكيفية الشحن على Android والتي لا تؤدي إلى تحذيرات حول إصدارات 64 بت من متجر Play ، للحصول على طريقة لحزم APK يدعم 64 بت ، ولإثبات ذلك. يمكننا إطلاق المعرض باستخدام هذه العملية ، وبمجرد أن نقوم بذلك ، لمتابعة العملية لإصدار إصدار تجريبي جديد ، سنقوم بعد ذلك بدفعه إلى الاستقرار بعد أسبوع أو نحو ذلك.
هذا يعني أنه من المحتمل أن يكون لدينا إصدار تجريبي في أوائل يونيو ، ونسخة تجريبية في أواخر يونيو أو أوائل يوليو والتي ستستقر بعد ذلك بوقت قصير.
Hixie هناك مشكلة أخرى نشأت هنا
حزمة التطبيقات بواسطة أحدث flutter (رئيسي حتى الآن) لا تنشئ إصدارات x86 و x86_64
الملفات التي أنتجها الفرع الرئيسي
الملفات التي تم إنشاؤها بواسطة الإصدار القديم باستخدام android studio
السلوك المتوقع هو تضمين إصدارات x86 و x86_64 أيضًا في ملف تم إنتاجه بواسطة الإصدار الجديد
canewsin بصرف النظر عن هذه المشكلة ، لا نقدم ثنائيات إصدار x86 (https://github.com/flutter/flutter/issues/9253) - هو "الإصدار القديم" في https://github.com/flutter/ flutter / issues / 18494 # issuecomment -497118805 تشير إلى بناء تصحيح؟
لدي نفس المشكلة ، فالبناء لـ 32 بت سيستبعد أجهزة 64 بت ، إلا أنه يعمل عليها. يعمل البناء لـ 64 من خلال تحديد
--target-platform android-arm64
على أجهزة 64 بت ، لكنه يتعطل على أجهزة 32 بت. كما ستعمل Google أيضًا على تقييد تحميل التطبيقات إلى 64 بت في عام 2019.فريق Flutter ، يرجى حل هذه المشكلة الأساسية!
التكوين الافتراضي {
....
versionName flutterVersionName
ndk.abiFilters 'armeabi-v7a'، 'arm64-v8a'، 'x86'، 'x86_64'
}
// جاهز!
قمت بتجميع تطبيقي باستخدام أحدث فرع رئيسي للفلتر وتحميله لتشغيل المتجر كحزمة تطبيقات ولكن التطبيق يتعطل على الجهاز ، تم أخذ هذا السجل من معمل الاختبار
05-31 07:50:28.384: D/AndroidRuntime(11036): --------- beginning of crash
05-31 07:50:28.384: E/AndroidRuntime(11036): FATAL EXCEPTION: main
05-31 07:50:28.384: E/AndroidRuntime(11036): Process: in.canews.social, PID: 11036
05-31 07:50:28.384: E/AndroidRuntime(11036): java.lang.RuntimeException: Unable to create application in.canews.social.App: java.lang.NullPointerException: Attempt to get length of null array
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5794)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.-wrap1(Unknown Source:0)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.os.Handler.dispatchMessage(Handler.java:105)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.os.Looper.loop(Looper.java:164)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.main(ActivityThread.java:6541)
05-31 07:50:28.384: E/AndroidRuntime(11036): at java.lang.reflect.Method.invoke(Native Method)
05-31 07:50:28.384: E/AndroidRuntime(11036): at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
05-31 07:50:28.384: E/AndroidRuntime(11036): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
05-31 07:50:28.384: E/AndroidRuntime(11036): Caused by: java.lang.NullPointerException: Attempt to get length of null array
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.listLibs(FlutterMain.java:381)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.initAot(FlutterMain.java:412)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:164)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:143)
05-31 07:50:28.384: E/AndroidRuntime(11036): at io.flutter.app.FlutterApplication.onCreate(FlutterApplication.java:22)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
05-31 07:50:28.384: E/AndroidRuntime(11036): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
05-31 07:50:28.384: E/AndroidRuntime(11036): ... 8 more
05-31 07:50:28.392: W/ActivityManager(897): Force finishing activity in.canews.social/.MainActivity
دكتور رفرفة -v
C:\flutter\flutter\bin>flutter doctor -v
[√] Flutter (Channel master, v1.6.7-pre.7, on Microsoft Windows [Version 10.0.17763.503], locale en-IN)
• Flutter version 1.6.7-pre.7 at C:\flutter\flutter
• Framework revision 6884146925 (2 days ago), 2019-05-29 12:52:05 -0700
• Engine revision 8dc3a4cde2
• Dart version 2.3.2 (build 2.3.2-dev.0.0 e3edfd36b2)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at C:\Users\PramUkesh\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.4)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 35.3.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
[√] VS Code (version 1.34.0)
• VS Code at C:\Users\PramUkesh\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.0.2
[√] Connected device (1 available)
• Z2 Plus • 2e9087c2 • android-arm64 • Android 9 (API 28)
• No issues found!
canewsin يبدو أنه تم إصلاح هذه المشكلة في https://github.com/flutter/engine/pull/9078. في شجرة Flutter ، قم بتحديث الفرع الرئيسي المحلي ، git fetch upstream
&& git merge upstream/master
بعد رؤية الأسئلة المتكررة ، والتي تمت الإجابة عليها بالفعل في التعليقات السابقة ، كتبت مقالًا قصيرًا يوثق الخيارات المتاحة لدينا الآن https://medium.com/@truongsinh/flutter -android-64-bit-so-what-the-fuss -15da6f8e3a46. هنا TLDR:
truongsinh ، نحن أيضًا بصدد إنهاء الدعم لاستخدام flutter build appbundle
لإنشاء حزمة تطبيقات تحتوي على ثنائيات 32 بت و 64 بت للنشر في متجر Play. راجع https://github.com/flutter/flutter/issues/31922 لمزيد من المعلومات - يرجى تجربتها وإعلامنا إذا واجهت أي مشاكل.
truongsinh ، نحن أيضًا بصدد إنهاء الدعم لاستخدام
flutter build appbundle
لإنشاء حزمة تطبيقات تحتوي على ثنائيات 32 بت و 64 بت للنشر في متجر Play. راجع # 31922 لمزيد من المعلومات - يرجى تجربتها وإعلامنا إذا واجهت أي مشاكل.
نعم ما زلت أنتظر flutter build appbundle
لإنتاج تطبيق لا يتوقف عن العمل أو يتعطل: D
نعم ، ما زلت أنتظر حزمة flutter build appbundle لإنتاج تطبيق لا يتوقف عن العمل أو يتعطل: D.
أقر 🙂. إذا كان لديك حالة قابلة للتكرار من هذا الحدوث يمكننا إلقاء نظرة عليها ، فسيكون ذلك رائعًا. إذا كنت على استعداد لإنشاء ملف .aab غير موقع من الإصدار 1.7.1 وإرساله إلي عبر البريد الإلكتروني ([email protected]) ، فسأكون ممتنًا!
لمعلوماتك ، تم إرسال الإعلان التالي إلى [email protected] بخصوص دعم 64 بت.
https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc
أواجه هذه المشكلة أيضًا.
عندما أقوم بإنشاء حزمة تطبيقات في Android Studios ، يمكنني تحميلها بشكل جيد على جهاز المحاكاة الخاص بي ، ولكنها تعطل التطبيق عندما أقوم بتنزيله من متجر play
مرحبًا يا رفاق الأشخاص الذين يستخدمون الفرع الرئيسي للرفرفة وبناء حزم التطبيقات
إذا كنت تقوم بتصحيح أخطاء تطبيقك ، فإن تطبيقك يعمل بشكل جيد
بعض تعطل الوجه عند التنزيل من متجر play إذا حدث ذلك ، فتحقق من حزمة التطبيق الخاصة بك سواء كانت تعمل على جهازك لأن وضع التصحيح ينتج ثنائيات JIT ووضع الإصدار ينتج ثنائيات AOT حاليًا تختلف مواضعها أيضًا على ما أعتقد لاختبار تطبيقك بشكل صحيح
قم بإنتاج apk من حزمة التطبيقات لتكوين محدد فقط استنادًا إلى جهازك وإلغاء تثبيت تطبيق التصحيح تمامًا من جهازك وتثبيت تطبيق الإخراج الجديد هذا من حزمة التطبيقات إذا تعطلت ، فسوف يتعطل عند تنزيله من متجر play أو غير ذلك ، آمل أن يساعد ذلك الآخرين. .
المرجع للإخراج إلى APK من حزمة التطبيقات الخاصة بك من خط cmd
https://developer.android.com/studio/command-line/bundletool
لمعلوماتك ، يتم تتبع الأعطال في حزم التطبيقات بشكل أفضل في https://github.com/flutter/flutter/issues/31922. ومع ذلك ، يتم النشر المشترك هنا:
أهلا بكم،
TLDR:
لقد حددنا مشكلة الأعطال عند التنزيل من متجر Play ونعمل على إصلاح يتم تسليمه في نفس الإطار الزمني كما هو موضح أعلاه في https://github.com/flutter/flutter/issues/31922#issuecomment -498880614
شرح عالي المستوى
بالنسبة للمهتمين ، فإن الشرح الطويل إلى حد ما هو أنه مع الأجهزة التي تعمل بنظام Android Marshmallow أو أحدث ، سيكتشف متجر Play التطبيقات التي تم تجميعها كحزم تطبيقات تحتوي على العديد من ABIs - وسيقوم بتثبيت هذه التطبيقات على الجهاز في شكل "تقسيم APKs ". عند القيام بذلك ، لا يتم استخراج ملفات .so المضمنة فيه من أرشيف APK zip ، والذي يختلف عن سلوك ملفات APK غير المقسمة. نظرًا لأن الآلية الحالية لمحرك Flutter
الحل هو فقط
dlopen
المكتبات ، ومستخلصات Android بعيدًا حيث توجد المكتبات (أي داخل أرشيف أم لا). ومع ذلك ، فإن الملفات الضرورية. لذلك كجزء من هذا ، نصنعها مكتبات ELF (على سبيل المثال https://github.com/dart-lang/sdk/commit/6d608fb52bc1926a73d986d73ab228b77cfb7ca2 و https://github.com/flutter/flutter/pull/33696).
4. flutter build apk - Release --target-platform = android-arm64
لقد تلقيت هذا الخطأ بعد إضافة مقتطف الشفرة إلى build.gradle
Gradle build failed to produce an Android package.
- flutter build apk - Release --target-platform = android-arm64
لقد تلقيت هذا الخطأ بعد إضافة مقتطف الشفرة إلى build.gradle
Gradle build failed to produce an Android package.
https://developer.android.com/distribute/best-practices/develop/64-bit
هل يمكن لشخص ما حل المشكلة؟ لدي تطبيق على flutter يعمل فقط على apk 32 بت ولكن الإصدار 64 لا يعمل أو لا يتم تثبيته. أنا أختبر على هاتف خلوي 64 بت
CgarciaTC يرجى الاطلاع على https://github.com/flutter/flutter/issues/18494#issuecomment -500101807 للحصول على آخر تحديث
أهلا بكم،
نعتقد أن جميع الإصلاحات قد وصلت إلى طرف الشجرة على القناة 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 apk - تقسيم لكل أبي
سينتج عن هذا الأمر ملفي APK:
build / app / outputs / apk / release / app-armeabi-v7a-release.apk
build / app / outputs / apk / release / app-arm64-v8a-release.apk
tvolkert - في هذا السيناريو بالذات ، ماذا عن كل رقم إصدار إصدار؟ طالما علمت ، يجب أن يختلفوا ، حتى نتمكن من تحميلهما على Google Play. هل يتم إدارة هذا الجزء بطريقة ما ، عندما يتم إنشاء التطبيقات؟ إذا لم يكن كذلك ، فكيف يفترض أن يتم التعامل معها؟
@ angel1st تتم إدارته تلقائيًا عند إنشاء ملفات APK ، وفقًا للإرشادات الواردة في https://developer.android.com/studio/build/configure-apk-splits#configure -APK-version
tvolkert هل هناك أي معلومات حول متى
ndusart ، نعم - راجع https://github.com/flutter/flutter/issues/18494#issuecomment -498880287
يمكن تأكيد أن هذا يعمل (بعد التبديل إلى الماجستير) على أجهزة android متعددة. يا له من منقذ ، شكرا لك.
tvolkert شكرا أكوام. أي جدول زمني للحصول على هذا في Flutter مستقرة؟
@ harsha973 انظر https://github.com/flutter/flutter/issues/18494#issuecomment -498880287
@ harsha973 ، أنت مشاركتين فوق منشوراتك . ليس فقط جاهل ولكن على وشك عدم الاحترام.
PerLycke آسف لذلك.
لقد تحققت من القناة الرئيسية وقمت بترقية الرفرفة والآن لا يمكنني إنشاء التطبيق باستخدام الأمر:
flutter build apk --release --flavor production -t lib/main.dart
النتيجه هي:
* What went wrong:
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForProductionRelease'.
> More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'
إجابات مشكلات StackOverflow المماثلة لا تساعد حقًا.
عملت MichaelRFairhurst flutter build apk --release
جيدًا بالنسبة لي ، لذلك ربما تتطلب التحديثات الجديدة على Master أيضًا تحديثًا لإعدادات النكهة الخاصة بك.
أعلم أنه ليس إجابة ، آسف ، ولكن على الأقل نقطة في الاتجاه الصحيح.
متى سيصبح الإصلاح تجريبيًا؟
derolf يرجى الاطلاع على https://github.com/flutter/flutter/issues/18494#issuecomment -498880287 كأحدث تحديث مع الجداول الزمنية المستهدفة.
أهلا بكم،
يتم نشر هذه الإصلاحات الآن في قناة dev
، في الإصدار v1.7.4
أو إصدار لاحق.
أثناء محاولة اكتشاف هذه الأشياء ذات 64 بت ، أواجه نفس المشكلة مثل michalsuryntequiqo ولا يمكنني إنشاء أي شيء الآن عبر CLI. إنه يبني ويعمل بشكل جيد من خلال Android Studio ...
تشغيل flutter build apk --flavor=dev -t lib/main-dev.dart
[ +3 ms] FAILURE: Build failed with an exception.
[ +1 ms] * What went wrong:
[ ] Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDevRelease'.
[ ] > More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'
[ ] * Try:
[ ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[ ] * Get more help at https://help.gradle.org
[ ] BUILD FAILED in 1m 3s
[ +370 ms] Running Gradle task 'assembleDevRelease'... (completed in 64.0s)
[ +4 ms] "flutter apk" took 69,789ms.
[ ] "flutter apk" took 69,789ms.
تعديل:
جربت للتو مع الالتزام مباشرة قبل 8627ff433b4658195e66b9c0034902116f53d580 وينتج ملف apk مع الخطأ المعتاد Gradle build failed to produce an Android package.
بسبب https://github.com/flutter/flutter/issues/24106
blasten هل لديك أي فكرة عن كيفية تشغيل هذا مرة أخرى مع تغييراتك؟
تحرير 2:
تم فتح إصدار جديد لهذا: https://github.com/flutter/flutter/issues/34598
قرأت وثائق Flutter اليوم ووجدت:
من سطر الأوامر:
أدخل القرص المضغوط
(يحل محلمع دليل التطبيق الخاص بك.)
Run flutter build apk - تقسيم لكل أبي
(الإعداد الافتراضي لأمر flutter build - إطلاق.)
ينتج عن هذا الأمر ملفي APK:
/build/app/outputs/apk/release/app-armeabi-v7a-release.apk /build/app/outputs/apk/release/app-arm64-v8a-release.apk
@ eugenio-tesio ما هي أكواد الإصدار المستخدمة عند استخدام --split-per-abi
؟
رأيته في الوثائق وفكرت في نشره هنا. لم أختبره.
كنت أقوم بتشغيل الأمر ولم يعمل. انها تقول:
تعذر العثور على خيار يسمى "تقسيم لكل أبي".
قم بتشغيل "flutter -h" (أو "flutter
-h ') لأوامر وخيارات الرفرفة المتاحة.
طبيب الرفرفة:
Flutter 1.6.3 • قناة تجريبية • https://github.com/flutter/flutter.git
الإطار • المراجعة bc7bc94083 (منذ 4 أسابيع) • 2019-05-23 10:29:07 -0700
المحرك • مراجعة 8dc3a4cde2
الأدوات • Dart 2.3.2 (النسخة 2.3.2-dev.0.0 e3edfd36b2)تشغيل "ترقية حانة الرفرفة" في تطبيق الاستهلاك ... 19،8 ثانية
تشغيل طبيب الرفرفة ...
ملخص الطبيب (لمشاهدة كافة التفاصيل ، قم بتشغيل flutter doctor -v):
[√] Flutter (قناة تجريبية ، الإصدار 1.6.3 ، في Microsoft Windows [الإصدار 10.0.17134.829] ، اللغة المحلية es-AR)
[√] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[√] Android Studio (الإصدار 3.4)
[√] IntelliJ IDEA Ultimate Edition (الإصدار 2019.1)
[√] كود VS (الإصدار 1.26.1)
[√] كود VS ، إصدار 64 بت (الإصدار 1.33.1)
[!] جهاز متصل
! لا توجد أجهزة متاحة
أعتقد أن هذه الوظيفة ستكون متاحة قريبًا.
رأيته في الوثائق وفكرت في نشره هنا. لم أختبره.
كنت أقوم بتشغيل الأمر ولم يعمل. انها تقول:تعذر العثور على خيار يسمى "تقسيم لكل أبي".
قم بتشغيل "flutter -h" (أو "flutter -h") لأوامر وخيارات الرفرفة المتاحة.طبيب الرفرفة:
Flutter 1.6.3 • قناة تجريبية • https://github.com/flutter/flutter.git
الإطار • المراجعة bc7bc94 (منذ 4 أسابيع) • 2019-05-23 10:29:07 -0700
المحرك • مراجعة 8dc3a4cde2
الأدوات • Dart 2.3.2 (النسخة 2.3.2-dev.0.0 e3edfd36b2)
تشغيل "ترقية حانة الرفرفة" في تطبيق الاستهلاك ... 19،8 ثانية
تشغيل طبيب الرفرفة ...
ملخص الطبيب (لمشاهدة كافة التفاصيل ، قم بتشغيل flutter doctor -v):
[√] Flutter (قناة تجريبية ، الإصدار 1.6.3 ، في Microsoft Windows [الإصدار 10.0.17134.829] ، اللغة المحلية es-AR)
[√] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[√] Android Studio (الإصدار 3.4)
[√] IntelliJ IDEA Ultimate Edition (الإصدار 2019.1)
[√] كود VS (الإصدار 1.26.1)
[√] كود VS ، إصدار 64 بت (الإصدار 1.33.1)
[!] جهاز متصل
! لا توجد أجهزة متاحةأعتقد أن هذه الوظيفة ستكون متاحة قريبًا.
يرجى أن نتذكر أن هذا هو على dev
قناة / نسخة 1.7.4 فصاعدا فقط. أنت تقوم بتشغيل قناة beta
/ الإصدار 1.6.3
لقد جربته للتو (البناء والنشر باستخدام Codemagic) وقد نجح بالفعل. شكرا!
لا تزال Google تشكو من أنني لا أستخدم appbundle على الرغم من ذلك. بالنظر إلى هذا التحذير ، ربما لا يكون لنشر التطبيقات معنى كبير؟
سأستخدم appbundle - لكن هذا يمنع الاختبار الآلي لـ Google (إنشاء تقرير ما قبل الإطلاق) من العمل. هل يجب أن أفتح عددًا جديدًا لهذا؟
nohli قمنا بتحديث المستندات لتعكس أحدث المعلومات حول حزم التطبيقات / APKs: https://flutter.dev/docs/deployment/android#building -the-app-for-release.
لا تتردد في الإبلاغ عن المشكلة المتعلقة باختبار Google الآلي.
لقد قمت بإنشاء تطبيقي من الحزمة ولكن بعد التشغيل على أجهزة 64 بت ، فإن libflutter مفقود أيضًا من خلال إنشاء تطبيق لكل من جهاز 32 بت وجهاز 64 بت. كيفية إضافة libflutter.so لكل من العمارة في ملف حزمة واحدة؟
nohli قمنا بتحديث المستندات لتعكس أحدث المعلومات حول حزم التطبيقات / APKs: https://flutter.dev/docs/deployment/android#building -the-app-for-release.
لا تتردد في الإبلاغ عن المشكلة المتعلقة باختبار Google الآلي.
blasten لم ينتج عن الإجراء الوارد في الرابط APK 64 بت في الحزمة. عندما قمت بتحميل الحزمة ، كان لدى متجر Google Play نفس الخطأ كما هو موضحًا أن ملف APK الخاص بك غير متوافق مع 64 بت.
@ wal33d006 انظر إخلاء المسؤولية أعلى الصفحة - ينطبق فقط على v1.7.4
أو ما بعده (حاليًا قنوات التطوير أو الرئيسية).
@ wal33d006 انظر إخلاء المسؤولية أعلى الصفحة - ينطبق فقط على
v1.7.4
أو ما بعده (حاليًا قنوات التطوير أو الرئيسية).
tvolkert أنا غير قادر حتى على بناء تطبيقي من خلال قنوات
هذا هو مخرجاتي عندما أقوم ببنائها على قنوات مطورة أو رئيسية:
رسالة المترجم:
ملف: ///Users/waleed/.pub-cache/hosted/pub.dartlang.org/cached_network_image-0.5.1/lib/cached_network_image. dart: 199 : 38: خطأ: لا يمكن تعيين نوع الوسيطة 'void Function (ImageInfo، bool)' إلى نوع المعلمة 'ImageStreamListener'.
فشل: فشل البناء مع استثناء.
أين:
النص "/ المستخدمون/waleed/Developer/flutter-sdk/flutter/packages/flutter_tools/gradle/flutter.gradle" سطر: 638
ماذا حصل:
فشل تنفيذ المهمة ': app: compileflutterBuildReleaseArm '.
عملية 'الأمر' / Users / waleed / Developer / flutter-sdk / flutter / bin / flutter 'منتهية بقيمة خروج غير صفرية 1
يحاول:
تشغيل بخيار --stacktrace للحصول على تتبع المكدس. تشغيل بخيار --info أو --debug للحصول على المزيد من مخرجات السجل. تشغيل باستخدام - Scan للحصول على رؤى كاملة.
احصل على مزيد من المساعدة على https://help.gradle.org
فشل البناء في 14 ثانية
تشغيل مهمة Gradle "bundleRelease" ...
تشغيل مهمة Gradle "bundleRelease" ... تم 15.0s
حزمة مهام Gradle فشل الإصدار مع رمز الخروج 1
@ wal33d006 package:cached_network_image
هو الآن الإصدار 0.8.0
وأنت تستخدم 0.5.1
- يبدو أنه عند تشغيل الإصدار الأحدث من Flutter ، تحتاج إلى تحديث قيود الإصدار في الخاص بك pubspec.yaml
و flutter packages upgrade
tvolkert أنت تقول أنه في الإصدار 1.7.4 ، يتم إضافة ملف app flutter build appbundle ؟
@ nimesh1997 نعم ، على الرغم من أن الإصدار الذي يجعله مستقرًا سيكون على الأرجح إصدارًا أحدث.
tvolkert لقد غيرت قناتي إلى ### قناة رئيسية وقمت أيضًا بترقية حزمة ###: نسخة cached_network_image إلى 0.8.0 بالتغيير داخل pubspec.yaml. ولكن عند تشغيل حزم flutter قم بالترقية. يظهر الخطأ أدناه مثل هذا:
** لأن cached_network_image> = 0.7.0 يعتمد على flutter_cache_manager ^ 0.3.2 والذي يعتمد على path_provider ^ 0.5.0 + 1 ، cached_network_image> = 0.7.0 يتطلب path_provider ^ 0.5.0 + 1.
@ nimesh1997 هل يمكنك تقديم مشكلة منفصلة
tvolkert متى سيكون flutter الإصدار 1.7.4 متاحًا في قناة ثابتة وعندما يتم حل الخطأ المذكور أدناه في flutter الإصدار 1.7.4 بسبب هذا الخطأ ، فإنه لا يعمل على أجهزة 64 بت (libflutter.so مفقود)؟
هذا هو الناتج الذي أحصل عليه عند تشغيل flutter v1.7.4 أو أحدث: -
رسالة المترجم:
الملف: ///home/zunroof-dev-4/package_flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_image-1.0.0/lib/network. سهم: 75 : 31:
خطأ: لا يمكن تعيين نوع الوسيطة "Null Function (StringBuffer)" لنوع المعلمة "Iterable
خطأ في التجميع ، لا يولد سجلات و flutter doctor -v لا يشير إلى أخطاء. ماذا علي أن أفعل؟
إذا كنت تنشر التطبيق على متجر Play ، فمن المستحسن استخدام التطبيق
حزم أو تقسيم APK لتقليل حجم APK.
لإنشاء حزمة تطبيقات ، قم بتشغيل:
flutter build appbundle - android-arm الهدف ، android-arm64
تعرف على المزيد على: https://developer.android.com/guide/app-bundle
لتقسيم ملفات APK لكل ABI ، قم بتشغيل:
flutter build apk - android-arm -getarget-platform و android-arm64
- تقسيم لكل أبي
تعلم المزيد عن:
https://developer.android.com/studio/build/configure-apk-splits#configur
e-abi-split
جارٍ بدء التدرج ...
حل التبعيات ... 4،3s
RegisterResGeneratingTask مهمل ، استخدم registerGeneratedResFolders (FileCollection)
RegisterResGeneratingTask مهمل ، استخدم registerGeneratedResFolders (FileCollection)
RegisterResGeneratingTask مهمل ، استخدم registerGeneratedResFolders (FileCollection)
تشغيل مهمة Gradle "تجميع الإصدار" ...
تشغيل مهمة Gradle "تجميع الإصدار" ... تم 90 ثانية
فشل بناء Gradle في إنتاج حزمة Android.
@ leonardop21 حاول مع
رفرفة تشغيل الخامس
تضمين التغريدة
يا إلهي. ليس لدي أي فكرة عما يجب فعله الآن
فشل بناء Gradle في إنتاج حزمة Android.
(الحزمة: flutter_tools / src / android / gradle.dart: 514: 7)
(dart: async-patch / async_patch.dart: 77:64)
(dart: async / future_impl.dart: 639: 45)
(dart: async-patch / async_patch.dart: 77:64)
(dart: async / future_impl.dart: 639: 45)
(dart: async / future_impl.dart: 513: 7)
(dart: async / zone.dart: 963: 23)
(دارت: عزل رقعة / عزل_ رقعة. جزء: 116: 13)
(دارت: عزل رقعة / عزل_ رقعة. جزء: 173: 5)
لقد قمنا بتحديث مستنداتنا للإشارة إلى كيفية إنشاء ملفات APK باستخدام ثنائيات 32 بت و 64 بت. https://flutter.dev/docs/deployment/android#building -the-app-for-release.
الرجاء استخدام القناة dev
: v1.7.9
أو أعلى. يعمل الفريق على الترويج لأحدث التغييرات في الإصدار التجريبي بحلول يوم الجمعة (2018/06/28).
رسالة المترجم:
ملف: ///Users/systemgnk/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flare_flutter-1.5.2/lib/flare. dart: 1033 : 18: خطأ: لا يمكن تعيين نوع الوسيطة 'Int32List' لنوع المعلمة 'Uint16List'.
فشل: فشل البناء مع استثناء.
أين:
النص "/ المستخدمون/systemgnk/Desktop/flutter/packages/flutter_tools/gradle/flutter.gradle" سطر: 631
ماذا حصل:
فشل تنفيذ المهمة ': app: compileflutterBuildReleaseArm '.
انتهت العملية "الأمر" / Users / systemgnk / Desktop / flutter / bin / flutter "بقيمة خروج غير صفرية 1
يحاول:
تشغيل بخيار --stacktrace للحصول على تتبع المكدس. تشغيل بخيار --info أو --debug للحصول على المزيد من مخرجات السجل. تشغيل باستخدام - Scan للحصول على رؤى كاملة.
احصل على مزيد من المساعدة على https://help.gradle.org
فشل البناء في 22 ثانية
تشغيل مهمة Gradle "تجميع الإصدار" ...
تشغيل مهمة Gradle "تجميع الإصدار" ... تم 23.3s
تجميع مهمة Gradle فشل الإصدار مع رمز الخروج 1
[✓] Flutter (Channel dev، v1.7.10، في نظام التشغيل Mac OS X 10.13.6 17G65، locale en-US)
• Flutter الإصدار 1.7.10 في / Users / systemgnk / Desktop / flutter
• مراجعة الإطار 9a3a7490c8 (منذ يومين) ، 2019-06-25 15:59:15 +0200
• مراجعة المحرك ae8e6d9f46
• Dart الإصدار 2.4.0
[✓] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
• Android SDK على / Users / systemgnk / Library / Android / sdk
• لم يتم تكوين موقع Android NDK (اختياري ؛ مفيد لدعم التوصيف الأصلي)
• منصة android-28 ، أدوات بناء 28.0.3
• برنامج Java ثنائي على: / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• إصدار جافا OpenJDK Runtime Environment (النسخة 1.8.0_152-release-1248-b01)
• قبول جميع تراخيص Android.
[✓] Xcode - تطوير لـ iOS و macOS (Xcode 10.1)
• Xcode في /Applications/Xcode.app/Contents/Developer
• Xcode 10.1 ، الإصدار الإصدار 10B61
• CocoaPods الإصدار 1.6.0
[✓] أدوات iOS - تطوير لأجهزة iOS
• نشر iOS 1.9.4
[✓] Chrome - تطوير للويب
• Chrome في / Applications / Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (الإصدار 3.3)
• Android Studio في / Applications / Android Studio.app/Contents
• إصدار البرنامج المساعد Flutter 33.3.1
• إصدار Dart الإضافي 182.5215
• إصدار جافا OpenJDK Runtime Environment (النسخة 1.8.0_152-release-1248-b01)
[✓] جهاز متصل (4 متوفر)
• Android SDK مصمم لـ x86 • emulator-5554 • android-x86 • Android 7.0 (API 24) (محاكي)
• جهاز iPhone الخاص بالنظام • 73145c33ee6d180a2db3d4a96b908ceb4c49065b • iOS • iOS 12.3.1
• macOS • macOS • darwin-x64 • Mac OS X 10.13.6 17G65
• Chrome • chrome • web-javascript • Google Chrome 75.0.3770.100
• لم يتم العثور على اى مشكلات!
ما زلت أواجه مشكلة في إنشاء apk.
كنت متاحًا فقط لإنشاء 32 بت apk في قناة مستقرة.
أعتقد أنني بحاجة إلى الانتظار حتى يصلح فريق flutter هذا الخطأ بدلاً من استخدام sdk للقناة الرئيسية أو dev.
شكرا لك.
JaeyoungChu الرجوع إلى 2d-inc / Flare-Flutter # 79
ctrysbita شكرا على الرابط. لقد غيرت القناة لإتقان وتغيير نوع المؤشرات من Int32List إلى Uint16List.
apk الذي تم تحميله على متجر play لا يحتوي على تحذير لـ 64 بت ويتم تشغيله بعد التثبيت من صفحة اختبار متجر play.
لدي مشكلات أخرى مع رفرف قناة dev مثل عدم ظهور مربع حوار إذن منبثق للموقع وخريطة جوجل لا تظهر في نظام iOS ولا يمكن أن تظهر ملف الصورة الكبيرة عن طريق http (صورة الشبكة المخزنة مؤقتًا). هذه المشكلات غير مؤكدة بسبب قناة التطوير ولكن عندما عدت إلى حالة الاستقرار وأعيد البناء مرة أخرى ، اختفت جميع المشكلات. ليس لدي الكثير من الوقت للبحث في هذه القضايا ، لذا فهي ليست متأكدة بنسبة 100٪. آسف لذلك ولكن ربما يحصل شخص ما على تلميح من هذه القضايا.
كان هذا هو الحل:
- في
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
- تشغيل
flutter build apk --release --target-platform=android-arm
- تحميل
app-armeabi-v7a-release.apk
إلى متجر play- زيادة
versionCode
- تشغيل
flutter build apk --release --target-platform=android-arm64
- تحميل
app-arm64-v8a-release.apk
إلى متجر playسيخدم متجر Google play التطبيق وفقًا لهندسة الجهاز. أجهزة 32 بت سعيدة ، وأجهزة 64 بت سعيدة وأنا سعيد بمعرفة أن حجم APK الخاص بي لا يزال صغيرًا نسبيًا بينما لا يزال يخدم كلا البنيتين.
إذا قمنا بتضمين الدعم لكل من البنيتين في نفس APK ، فتوقع أن يكون حجم التطبيق الخاص بك 10 ميجا بايت +
أين؟ اين نضيف قسم الانقسامات الى ملف gradle ؟؟ لقد أضفته بين flutter {} والتبعيات {} ولن يتم إنشاء أول APK كما هو موضح:
يرجى مراجعة إعداد مشروع Gradle الخاص بك في android / folder.
من الواضح أن هذا ليس صحيحًا ، لأن هذا هو التغيير الوحيد الذي أجريته على المشروع منذ آخر تصميم لي.
@ ArtfulDodgerB92 شكرا على الحل. ما القناة التي استخدمتها لإنشاء ملف apk والإصدار؟
أين؟ اين نضيف قسم الانقسامات الى ملف gradle ؟؟ لقد أضفته بين flutter {} والتبعيات {} ولن يتم إنشاء أول APK كما هو موضح:
يرجى مراجعة إعداد مشروع Gradle الخاص بك في android / folder.
من الواضح أن هذا ليس صحيحًا ، لأن هذا هو التغيير الوحيد الذي أجريته على المشروع منذ آخر تصميم لي.
@ ArtfulDodgerB92 يجب أن يكون داخل قسم android{}
، كما هو مكتوب هنا: https://developer.android.com/studio/build/configure-apk-splits.html
لمعلوماتك ، تم إرسال الإعلان التالي إلى [email protected] بخصوص دعم 64 بت.
https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc
أي أخبار عن إصدار بيتا قادم؟
nohli ، قمنا بتأخير إصدار الإصدار التجريبي لبضعة أيام لالتقاط إصلاح (عودة الالتزام) إلى https://github.com/flutter/flutter/issues/35291. نحن نعمل للحصول على إصدار تجريبي في أسرع وقت ممكن.
هذا الآن مباشر على القناة التجريبية ، في الإصدار v1.7.8+hotfix.2
هذا الآن مباشر على القناة التجريبية ، في الإصدار
v1.7.8+hotfix.2
Сool كيفية إنشاء الإصدار apk؟
هذا الآن مباشر على القناة التجريبية ، في الإصدار
v1.7.8+hotfix.2
Сool كيفية إنشاء الإصدار apk؟
إليك التعليمات https://flutter.dev/docs/deployment/android
هذا الآن مباشر على القناة التجريبية ، في الإصدار
v1.7.8+hotfix.2
Сool كيفية إنشاء الإصدار apk؟
إليك التعليمات https://flutter.dev/docs/deployment/android
حاولت ولكن لا أعمل في 32
حاولت ولكن لا أعمل في 32
ماذا تقصد ب 32
؟ مثل "يمكنني إنشاء ملف apk سمين ، وهذا apk يعمل على جهاز 64 بت ، ولكن يتعطل على جهاز 32 بت"؟
هل يمكنك نشر نتيجة flutter doctor
، خطوة بخطوة (على سبيل المثال ، هذه هي الخطوة 2 من البرنامج https://flutter.dev/docs/deployment/android#step-2---enable- obfuscation-andor-minification) ، هل تُنشئ APK أو AAB ، وما الجهاز الذي تختبره؟
هل ما زلنا بحاجة إلى وضع
لم تعد هناك حاجة ndk {
abiFilters 'armeabi-v7a' , 'x86', 'armeabi'
}
في gradle بعد الإصلاح في الإصدار التجريبي ؟؟
ksamj لا حاجة.
حاولت ولكن لا أعمل في 32
ماذا تقصد ب
32
؟ مثل "يمكنني إنشاء ملف apk سمين ، وهذا apk يعمل على جهاز 64 بت ، ولكن يتعطل على جهاز 32 بت"؟هل يمكنك نشر نتيجة
flutter doctor
، خطوة بخطوة (على سبيل المثال ، هذه هي الخطوة 2 من البرنامج https://flutter.dev/docs/deployment/android#step-2---enable- obfuscation-andor-minification) ، هل تُنشئ APK أو AAB ، وما الجهاز الذي تختبره؟
ملخص الطبيب (لمشاهدة كافة التفاصيل ، قم بتشغيل flutter doctor -v):
[✓] Flutter (قناة تجريبية ، الإصدار 1.7.8 + الإصلاح العاجل.2 ، في نظام التشغيل Mac OS X 10.14.5 18F132 ، اللغة المحلية ru-RU)
[✓] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[✓] Xcode - تطوير لـ iOS و macOS (Xcode 10.2.1)
[✓] أدوات iOS - تطوير لأجهزة iOS
[✓] Android Studio (الإصدار 3.4)
[✓] جهاز متصل (1 متوفر)
• لم يتم العثور على اى مشكلات!
ملخص الطبيب (لمشاهدة كافة التفاصيل ، قم بتشغيل flutter doctor -v):
[✓] Flutter (قناة تجريبية ، الإصدار 1.7.8 + الإصلاح العاجل.2 ، في نظام التشغيل Mac OS X 10.14.5 18F132 ، اللغة المحلية ru-RU)
[✓] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[✓] Xcode - تطوير لـ iOS و macOS (Xcode 10.2.1)
[✓] أدوات iOS - تطوير لأجهزة iOS
[✓] Android Studio (الإصدار 3.4)
[✓] جهاز متصل (1 متوفر)
• لم يتم العثور على اى مشكلات!
ملخص الطبيب (لمشاهدة كافة التفاصيل ، قم بتشغيل flutter doctor -v):
[✓] Flutter (قناة تجريبية ، الإصدار 1.7.8 + الإصلاح العاجل.2 ، في نظام التشغيل Mac OS X 10.14.5 18F132 ، اللغة المحلية ru-RU)
[✓] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
[✓] Xcode - تطوير لـ iOS و macOS (Xcode 10.2.1)
[✓] أدوات iOS - تطوير لأجهزة iOS
[✓] Android Studio (الإصدار 3.4)
[✓] جهاز متصل (1 متوفر)
• لم يتم العثور على اى مشكلات!
بناء apk
فعلت كل شيء كما في التعليمات ولكن لم يتم تثبيته على 32 بت
فعلت كل شيء كما في التعليمات ولكن لم يتم تثبيته على 32 بت
أي لقطة شاشة / سجل يوضح أن تثبيت APK 32 بت على جهاز 32 بت لم يكن ناجحًا ، وما طراز الجهاز هذا؟
أهلا بكم،
v1.7.8+hotfix.2
للقناة الثابتة ، لذا فإن هذا الإصلاح متاح الآن في جميع القنوات. شكرا للجميع على صبركم ومساعدتكم على طول الطريق!
فعلت كل شيء كما في التعليمات ولكن لم يتم تثبيته على 32 بت
أي لقطة شاشة / سجل يوضح أن تثبيت APK 32 بت على جهاز 32 بت لم يكن ناجحًا ، وما طراز الجهاز هذا؟
شكرا للمساعدة ، حاولت بناء appbundle وعمله.
tvolkert نفس المشكلة يرجى التحقق منها. https://github.com/flutter/flutter/issues/31962#issuecomment -509458960
@ nimesh1997 أن المشكلة لا علاقة لها بهذا. إذا لم تجد الإجابات المقدمة في المشكلة المرتبطة مفيدة ، فربما يمكنك النظر في نشر سؤال Stackoverflow مع مشكلتك.
tvolkert - flutter docs ، أليس كذلك؟
لذلك ، لن تكون هناك حاجة لإجراء أي تغييرات أخرى في ملف gradle كما هو موضح في الحلول الجزئية السابقة
شكرا لك ولباقي الفريق على العمل الممتاز والتسليم في الوقت المحدد!
لقد قمت للتو بتجميع أحد تطبيقي مع أحدث إصلاح سريع. نتيجة لذلك ، لا يمكن تشغيل app-production-armeabi-v7a-release.apk
المترجم على Galaxy S3 mini (Android OS 4.1.2) - بعد شاشة البداية ، يتم إغلاق التطبيق دون أي إشعار.
ومع ذلك ، فأنا قادر على تشغيل نفس apk بنجاح على هاتف 64 مثل Galaxy S8.
إليك كيفية تشغيل الرفرفة من سطر الأوامر:
flutter build apk --target = "lib / config / main_production.dart" - flavor = production --split-per-abi
وهنا هو flutter doctor -v
[√] Flutter (قناة مستقرة ، v1.7.8 + الإصلاح العاجل.2 ، على Microsoft Windows [الإصدار 10.0.17763.557] ، الإعدادات المحلية في الولايات المتحدة)
• Flutter الإصدار 1.7.8 +fix.2 في E: \ DevToolsflutter
• مراجعة الإطار 2e540931f7 (منذ 7 أيام) ، 2019-07-02 09:31:07 -0700
• مراجعة المحرك b1cb0d9e9b
• Dart الإصدار 2.4.0
[√] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 28.0.3)
• Android SDK على E: \ DevTools \ Android \ Sdk
• لم يتم تكوين موقع Android NDK (اختياري ؛ مفيد لدعم التوصيف الأصلي)
• منصة android-28 ، أدوات بناء 28.0.3
• ANDROID_SDK_ROOT = E: \ DevTools \ Android \ Sdk
• Java ثنائي على: E: \ DevTools \ android-studio \ jre \ bin \ java
• إصدار جافا OpenJDK Runtime Environment (النسخة 1.8.0_152-release-1343-b01)
• قبول جميع تراخيص Android.
[√] Android Studio (الإصدار 3.4)
• Android Studio في E: \ DevTools \ android-studio
• إصدار البرنامج المساعد Flutter 37.0.1
• إصدار البرنامج المساعد Dart 183.6270
• إصدار جافا OpenJDK Runtime Environment (النسخة 1.8.0_152-release-1343-b01)
[√] جهاز متصل (1 متوفر)
• Android SDK مصمم لـ x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (محاكي)
• لم يتم العثور على اى مشكلات!
بالإضافة إلى ذلك - ملف apk fat أيضًا غير قادر على التشغيل - بعد التثبيت (على نفس جهاز arm-32) وتشغيله يغلق فقط.
يرجى إعلامي بكيفية المتابعة وحل المشكلة ، شكرًا!
@ angel1st هل من الممكن أن تشارك ملف AAB و / أو APK هنا حتى نتمكن من مساعدتك في استكشاف الأخطاء وإصلاحها؟
truongsinh - بالتأكيد ،
لقد قمت بتحميل كلا ملفي APK ، على الرغم من أن المشكلة المزعومة تتعلق بإصدار arm-32 كما هو مذكور أعلاه.
الرجال ، في هذه الأثناء ، هل سيكون شخص ما لطيفًا ويقول (إذا كانوا يعرفون) ، ما الذي سيحدث بعد الأول من أغسطس في متجر Google Play ، في حال لم يكن لديك إصدار arm-64 من تطبيقك - هل سيتوقف ملف apk عن ذلك يتم تقديمه إلى أجهزة arm64 أم أنك لن تكون قادرًا على تحميل إصدار arm32 فقط أو كليهما؟
@ angel1st لقد تمكنت من تشغيل التطبيق (app-production-armeabi-v7a-release.apk) على Android 4.4.2 Galaxy S4. تطبيق جميل!
أظن أن هذا خاص جدًا بنظام التشغيل Galaxy S3 mini / Android OS 4.1.2. في غضون ذلك ، طلبت هذا التكوين لمعرفة ما إذا كان بإمكاني إعادة معالجة المشكلة.
@ angel1st هذا هو المصدر الأكثر https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html
لا ينطبق المطلب [أشياء 64 بت] على:
- تستهدف حزم APK أو حِزم التطبيقات صراحةً Wear OS أو Android TV ، وهي عوامل شكلية لا تدعم حاليًا رمز 64 بت.
- ملفات APK أو حزم التطبيقات التي لم يتم توزيعها على الأجهزة التي تعمل بنظام Android 9 Pie أو إصدار أحدث.
اعتبارًا من 1 أغسطس 2019:
- جميع التطبيقات الجديدة وتحديثات التطبيقات التي تتضمن كودًا أصليًا مطلوبة لتوفير إصدارات 64 بت بالإضافة إلى إصدارات 32 بت عند النشر على Google Play.
بمعنى آخر ، يستمر توزيع التطبيقات ، على الرغم من أنه لا يمكنك تحميل إصدار جديد من التطبيق الحالي ، أو نشر تطبيق جديد دون الامتثال.
@ angel1st لقد تمكنت من إعادة معالجة هذه المشكلة على جهاز Galaxy S3 mini الذي يعمل بنظام التشغيل Android OS 4.1.2.
اللوجكات هو:
[ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library 'libapp.so' due to error 'Cannot load library: load_library[1093]: Library 'libapp.so' not found'.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library 'libapp.so' due to error 'Cannot load library: load_library[1093]: Library 'libapp.so' not found'.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(238)] Could not setup VM data to bootstrap the VM from.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
07-10 00:16:50.298 8739-8739/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.
قدمت https://github.com/flutter/flutter/issues/35838 في غضون ذلك.
سم مكعب @ جيسون سيمونز
truongsinh - شكرًا على العرض العام.
@ blasten - شكرًا على ردود الفعل السريعة. بقدر ما أفهم ، لا يوجد شيء يمكنني القيام به أجهزة الصراف الآلي ولكن سيتم حل الشاشة رقم 35838 بأصابع متقاطعة في وقت ما هذا الشهر؟ أعتقد أن نفس المشكلة ستظهر لأي ملف APK آخر لنظام Android 4.1.2 تم تجميعه مع أحدث إصلاح سريع؟
لمعلوماتك - تطبيق apk الذي تم تجميعه مع إصدار مستقر سابق من flutter لا يحتوي على هذه المشكلة (S3 mini مع Android 4.1.2 هو أحد أجهزتي الاختبارية).
أي شخص آخر حصل على بريد من جوجل اليوم ، يقول
"الإجراء المطلوب: تحديث تطبيقاتك لتكون متوافقة مع 64 بت بحلول 1 آب (أغسطس) 2019"
على الرغم من نشر إصدارات 32 بت و 64 بت بالفعل؟
انها تقول
بحلول 1 أغسطس 2019 ، يجب أن توفر جميع التطبيقات التي تستخدم رمزًا أصليًا إصدار 64 بت لنشر تحديث. اعتبارًا من إرسال هذا البريد الإلكتروني ، فإن تطبيقًا واحدًا على الأقل من تطبيقاتك * لا يفي بالمتطلبات حتى الآن
* ملاحظة: تعكس قائمة التطبيقات هذه أفضل تقدير لشركة Google اعتبارًا من إرسال هذا البريد الإلكتروني. (...)
أعتقد أن "أفضل تقدير" من Google ليس صحيحًا؟
شكرا لفريق Flutter. أقوم بترقية Flutter والبناء على قناة مستقرة وذهب التحذير.
آمل ألا يكون هناك خطأ مع المختبرين ولكن حتى الآن لم أجد أي أخطاء مع جهاز حقيقي!
بفضل Team Flutter ، تعمل ترقية Flutter باستخدام الإصلاح العاجل على إصلاح هذه المشكلة عند إنشاء .aab
شكرا لفريق الرفرفة على هذا الإنجاز. الآن لمواصلة برمجتها!
@ angel1st لدي أيضًا مشكلات في بعض أجهزة Samsung.
@ abdullayev007 - شكرا! أود أن أقترح عليك إلقاء نظرة على # 35838 ، فقد يكون مرتبطًا إلى حد ما.
فعلت كل شيء كما في التعليمات ولكن لم يتم تثبيته على 32 بت
أي لقطة شاشة / سجل يوضح أن تثبيت APK 32 بت على جهاز 32 بت لم يكن ناجحًا ، وما طراز الجهاز هذا؟
الجهاز Samsung M10
tvolkert من فضلك أعطني أي حل لإصلاح المشكلة التالية:
https://github.com/flutter/flutter/issues/36063
شكرا
جربت أحدث إصدار من flutter من قناة dev - v1.8.4. لقد أنشأت مشروعًا جديدًا أيضًا - مشروع الفانيليا الرفرفة وحاولت إنشاء نسخة موقّعة منه. حجم التطبيق هو 10.4 ميغابايت فقط. لكن جربت كل الخطوات المذكورة أعلاه في هذا المسار ، فلا شيء يساعد. هل يمكن لشخص ما أن يعطي مجموعة واضحة من الخطوات لاتخاذ بناء يمكننا دفعه إلى playstore باستخدام aab أو apk مع المحاكي والجهاز المحلي من الرفرفة. لقد مر أكثر من أسبوع ، لدينا مشروع مبني على رفرفة لا يتحرك للحث على نظام أندرويد ، لكننا قادرون على النشر في متجر التطبيقات على نظام iOS. بعض المساعدة ستكون عظيمة
"[✓] Flutter (Channel dev، v1.8.4، في نظام التشغيل Mac OS X 10.14.5، locale en-US)
• Flutter الإصدار 1.8.4 في / Users / muthu / muthu / devapps / flutter
• مراجعة الإطار 954714c967 (منذ 7 أيام) ، 2019-08-02 10:10:39 -0700
• مراجعة المحرك 26368225b5
• Dart الإصدار 2.5.0 (الإصدار 2.5.0-dev.1.0 bd049f5b53)
[!] Android Toolchain - تطوير لأجهزة Android (إصدار Android SDK 29.0.1)
• Android SDK في ../Library/Android/sdk
• لم يتم تكوين موقع Android NDK (اختياري ؛ مفيد لدعم التوصيف الأصلي)
• النظام الأساسي android-29 ، أدوات البناء 29.0.1
• برنامج Java ثنائي على: / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• إصدار جافا OpenJDK Runtime Environment (النسخة 1.8.0_152-release-1343-b01)
✗ حالة ترخيص Android غير معروفة.
حاول إعادة تثبيت Android SDK Manager أو تحديثه.
راجع https://developer.android.com/studio/#downloads أو قم بزيارة https://flutter.dev/setup/#android -setup
للحصول على تعليمات مفصلة.
[✓] Xcode - تطوير لـ iOS و macOS (Xcode 10.3)
• Xcode في /Applications/Xcode.app/Contents/Developer
• Xcode 10.3 ، الإصدار الإصدار 10G8
• CocoaPods الإصدار 1.7.3
[✓] Android Studio (الإصدار 3.4)
• Android Studio في / Applications / Android Studio.app/Contents
• إصدار البرنامج المساعد Flutter 38.2.1
• إصدار البرنامج المساعد Dart 183.6270
• إصدار جافا OpenJDK Runtime Environment (النسخة 1.8.0_152-release-1343-b01)
[✓] كود VS (الإصدار 1.36.1)
• VS Code في / Applications / Visual Studio Code.app/Contents
• ملحق Flutter الإصدار 3.3.0
[✓] جهاز متصل (3 متوفر)
• Android SDK مصمم لـ x86 • emulator-5554 • android-x86 • Android 9 (API 28)
(مضاهاة) `
muthufmass ، يرجى تقديم مشكلة جديدة مع تفاصيل ما لا يعمل وكيفية إعادة إنتاج الفشل. شكرا!
هل يمكن لشخص ما أن يعطي مجموعة واضحة من الخطوات لاتخاذ بناء يمكننا دفعه إلى playstore
هل يمكن لشخص ما أن يعطي مجموعة واضحة من الخطوات لاتخاذ بناء يمكننا دفعه إلى playstore
تم اتباع هذه الخطوات بالفعل ، فهي لا تعمل على بناء إصدار prod. يعمل بناء التصحيح! من الواضح أنني وجدت اختلافًا ، في بناء التصحيح ، لذا فإن ملفات الرفرفة موجودة ، ولكن ليس مع إصدار الإصدار. هذه هي ، مما يخلق مشكلة لتثبيت apk على المحاكي أو على الأجهزة التي تحمل apk موقّعة.
muthufmass ، يرجى تقديم مشكلة جديدة مع تفاصيل ما لا يعمل وكيفية إعادة إنتاج الفشل. شكرا!
آمل أن أكون قد شاركت الخطوات الموضحة أعلاه. إنشاء تطبيق جديد باستخدام flutter create - vanilla code بأحدث flutter sdk. يتعذر إنشاء نسخة إصدار ، بينما تعمل إصدارات التصحيح بسلاسة. فرق كبير بين إصدار prod و dev من apk في الحجم. جربت جميع الخطوات المذكورة أعلاه ، غير قادر على إنشاء نسخة إصدار تعمل. يحدث البناء بسرعة فائقة ويأتي الملف أقل من 11 ميجابايت مع الإصدار ، بينما مع debug apk ، يأتي حوالي 40 ميجابايت +. يعمل Debug apk ، بينما لا يتم تثبيت ملف apk موقع prod حتى.
muthufmass عند تقديم الإصدار الجديد ، يرجى تضمين إصدار Android SDK وطراز الجهاز وإخراج الطبيب والخطوات بدءًا من flutter create
.
muthufmass وكذلك إخراج
تم إغلاق هذه المشكلة - يرجى تقديم مشكلة جديدة حتى نتمكن من تتبعها بشكل صحيح.
رفعت تذكرة منفصلة الآن https://github.com/flutter/flutter/issues/37935
إذا كان لديك نكهات في مشروعك ، وترغب في دعم كل من x64 و x32 ، فما عليك سوى إضافة مجلد jniLibs إلى مجلد النكهات الخاصة بك وهو يعمل بشكل رائع ، مثل هذا
كيف يمكنني القيام بذلك في adobe animate cc
بحاجة الى مزيد من المعلومات
بدأت Google play Console مؤخرًا في تعطيل زر التشغيل بسبب التحذيرات المختلفة. وأحد تلك التحذيرات هو استخدام apk بدلاً من ملف .aab. هناك حلول لإنشاء ملف .aab إذا تم إنشاء المشروع في Android Studio أو Unity. ولكن ماذا لو تم إنشاء apk بواسطة Animate CC أو Haxe / Flash Develop؟ هل هناك أي طريقة للتحويل؟
newapproach ليس من الواضح بالنسبة لي ما إذا كان تعليقك له علاقة بـ Flutter؟ هل أنت على استعداد لتقديم مشكلة جديدة بمزيد من التفاصيل؟ شكرا!
لديك نفس المشكلة - ولكن flutter.so غير مدرج في "مجلد armeabi-v7a.
لديها مكتبات طرف ثالث فقط لـ x86 و armeabi-v7a - ولكن ليس بها arm64.
أرغب في بناء رفرفة فقط لـ "armeabi-v7a مع
ndk {
abiFilters "armeabi-v7a" // أيضًا لا تعمل "armeabi" ، "x86" ،
}
وتعيين كمنصة مستهدفة كما يقترح @ mravn-google إلى android-arm.APK بدون تحديد القوس ولا تشمل المكتبات
APK مع مكتبات وبدون مواصفات الذراع
APK مع تحديد القوس وتضمين المكتبات
أي اقتراح كيفية تصحيح المزيد من الخطوات؟
لقد وجدت هذا الخطأ أيضًا ، هل تم إصلاحه ؟؟ يمكن أن تساعدني؟
أوصي بالسؤال على Stack Overflow ، أو فتح خطأ جديد. أشك في أن هذا الخطأ المغلق سيكون المكان المناسب للناس لمساعدتك في حل المشكلة المذكورة أعلاه. شكرا!
كان هذا هو الحل:
- في
app gradle
splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that we only // want APKs for armeabi-v7a and arm64-v8a. // Resets the list of ABIs that Gradle should create APKs for to none. reset() // Specifies a list of ABIs that Gradle should create APKs for. include "armeabi-v7a", "arm64-v8a" // Specifies that we do not want to also generate a universal APK that includes all ABIs. universalApk false } }
- تشغيل
flutter build apk --release --target-platform=android-arm
- تحميل
app-armeabi-v7a-release.apk
إلى متجر play- زيادة
versionCode
- تشغيل
flutter build apk --release --target-platform=android-arm64
- تحميل
app-arm64-v8a-release.apk
إلى متجر playسيخدم متجر Google play التطبيق وفقًا لهندسة الجهاز. أجهزة 32 بت سعيدة ، وأجهزة 64 بت سعيدة وأنا سعيد بمعرفة أن حجم APK الخاص بي لا يزال صغيرًا نسبيًا بينما لا يزال يخدم كلا البنيتين.
إذا قمنا بتضمين الدعم لكل من البنيتين في نفس APK ، فتوقع أن يكون حجم التطبيق الخاص بك 10 ميجا بايت +
لا يعمل .. عندما أشاهده على playstore على pixel 2 ، يظهر أنه غير مدعوم لهذا الجهاز
إنه يعمل بالفعل ، فقد قامت العديد من التطبيقات المعروفة بنشر العديد من ملفات APK بهذه الطريقة والسماح لمتجر Play Store بتقديم الملف المناسب للجهاز المناسب لفترة طويلة.
حِزم التطبيقات هي الطريقة الحديثة للقيام بذلك ، على الرغم من ذلك.
إنه يعمل بالفعل ، فقد قامت العديد من التطبيقات المعروفة بنشر العديد من ملفات APK بهذه الطريقة والسماح لمتجر Play Store بتقديم الملف المناسب للجهاز المناسب لفترة طويلة.
حِزم التطبيقات هي الطريقة الحديثة للقيام بذلك ، على الرغم من ذلك.
لا أعرف سبب عدم ظهوره على متجر ألعاب Pixel 2 بالنسبة لي بعد ذلك ...
لقد استخدمت حزمة التطبيق وكان تطبيقي يتعطل ومن ثم أبحث عن بدائل
تم قفل سلسلة الرسائل هذه تلقائيًا نظرًا لعدم وجود أي نشاط حديث بعد إغلاقه. إذا كنت لا تزال تواجه مشكلة مماثلة ، فالرجاء فتح خطأ جديد ، بما في ذلك ناتج flutter doctor -v
وتقليل إعادة إنتاج المشكلة.
التعليق الأكثر فائدة
لدي نفس المشكلة ، فالبناء لـ 32 بت سيستبعد أجهزة 64 بت ، إلا أنه يعمل عليها. يعمل البناء لـ 64 من خلال تحديد
--target-platform android-arm64
على أجهزة 64 بت ، لكنه يتعطل على أجهزة 32 بت. كما ستعمل Google أيضًا على تقييد تحميل التطبيقات إلى 64 بت في عام 2019.فريق Flutter ، يرجى حل هذه المشكلة الأساسية!