مطبات جوجل اللعب التنمية الفورية



مرحبا يا هبر! اسمي Kamo Spertsyan ، أنا منخرط في تطوير Android في PROFI.RU. لقد كتبت مؤخرًا تطبيق تشغيل فوري لعملائنا. إذا لم تكن على دراية بالتكنولوجيا ، فأنا أدعوك لزيارة مطوّري برامج Android أولاً.

لقد مر أكثر من عامين منذ تقديم تطبيقات فورية (Google Play Instant) على Google I / O 2016. هناك العديد من المقالات على الويب حول كيفية إنشاء تطبيقات باستخدام التشغيل الفوري. اذا حكمنا من خلالهم ، لا يوجد شيء معقد حول هذا الموضوع. ولكن في الواقع هذا ليس صحيحا تماما. سأحاول وصف الصعوبات الرئيسية التي كان عليّ أن أواجهها من إنشاء مشروع فارغ إلى نشر تطبيق فوري على Google Play. آمل أن تكون هذه المقالة مفيدة للمطورين الذين لم يأتوا بعد.

اختيار النهج


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

كان لدي خيار من طريقتين لإنشاء التطبيق الفوري. الأول هو أخذ التطبيق النهائي واستبعاد الوظائف غير الضرورية منه. والثاني هو إنشاء مشروع فارغ ونقل الوظائف المطلوبة فيه. بعد أن نظرنا في الخيار الأول ليكون سريعًا ، اختبرناه أنا وزملائي في لعبة hackathon محلية وفي نفس الوقت أصبحنا مقتنعين باليأس. أولاً ، استغرق الأمر الكثير من الوقت (حوالي 40 ساعة عمل). ثانياً ، تبين أن حجم التطبيق كبير جدًا بسبب الكود الزائد والموارد. ثالثا ، رمز الصيانة المعقدة. لقد حاولنا بشكل ملائم تخصيص التطبيق الناتج في 4 ميغابايت أثناء الاختراق ، وفي النهاية لم يكن لدينا وقت.

نقل الميزة


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

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

ثم تذكرت أنه تم تعطيل ProGuard في مشروعنا على تجميعات التصحيح. إدراج بسيط

minifyEnabled true 

خفض حجم التطبيق بمقدار النصف تقريبا. يا معجزة - تم بلوغ الحد الأقصى البالغ 4 ميغابايت!

ترحيل البيانات


بعد ذلك ، تم حل مشكلة ترحيل البيانات. كما تعلم ، يتم دعم التطبيقات الفورية من قبل نظام التشغيل Android من الإصدار 5.0. في الوقت نفسه ، لا تعمل الترحيل التلقائي للبيانات إلا منذ Android 8.0. للقيام بذلك ، يكفي استخدام ملفات التفضيلات المشتركة بنفس الاسم في كلا التطبيقين. بالنسبة للإصدارات من 5.0 إلى 7.1 ، يجب كتابة الترحيل يدويًا باستخدام Cookie API أو Storage API . استخدمت ملف تعريف الارتباط ولم أواجه أي مشاكل خاصة - ومع ذلك ، فإن هذا يتطلب تغييرات ليس فقط من جانب التطبيق الفوري ، ولكن أيضًا في التطبيق المثبت. لذلك في النهاية ، كان علي إصدار إصدار جديد من التطبيق ولفه إلى الجمهور بأكمله لإصدار التطبيق الفوري.

تصحيح الأخطاء


مع تصحيح الأخطاء ، تبين أن كل شيء ليس بهذه البساطة.

أولاً ، لا تدعم خدمة Google Play Instant اتصالات الشبكة غير الآمنة ، لذلك نسيت http ، https فقط. بالنسبة لي ، كان هذا يعني الاختبار على خوادم الإنتاج ، حيث عملت جميع مقاعد الاختبار على http. ليست حرجة ، ولكن ليس لطيفا بما فيه الكفاية.

ثانياً ، إطلاق التطبيق الفوري نفسه: يمكنك اختبار التطبيق على أنه طبيعي وقابل للتثبيت ، ولكن فقط في الوقت الحالي. عند البدء من خلال Android Studio ، يستحيل التحقق من تحديث التطبيق الفوري إلى تطبيق "كامل". على سبيل المثال ، لاختبار مدى صحة نقل بيانات المستخدم. للقيام بذلك ، قم بتشغيل التطبيق باستخدام التشغيل الفوري تمامًا مثل التطبيق الفوري. هناك طريقتان للقيام بذلك:

  1. قم بتشغيل التطبيق باستخدام أداة مساعدة خاصة من Android SDK ؛
  2. ضعه في وحدة التحكم للاختبار الداخلي وقم بتشغيله عبر سوق Play.

الطريقة الأولى مريحة للغاية. يتم تضمين الأداة المساعدة في Android SDK ، ولكنها غير مثبتة بشكل افتراضي. للتثبيت في Android Studio ، يجب اتباع الخطوات التالية:

  1. انتقل إلى التفضيلات -> المظهر والسلوك -> إعدادات النظام -> Android SDK ؛
  2. حدد علامة التبويب أدوات SDK .
  3. حدد المربع بجوار Google Play Instant Development SDK وانقر فوق تطبيق .


في الخطوة الأخيرة ، انتبه إلى الدليل الذي سيتم تثبيت الأداة فيه. علاوة على ذلك ، سنهتم بملف ./extras/google/instantapps/ia . مع ذلك ، يمكنك محاكاة إطلاق فوري للتطبيق عن طريق تشغيل الأمر

 ia run <  APK-, bundle-  URL> 

حتى اللحظة التي صادفت فيها هذه الأداة ، استخدمت الطريقة الثانية ، مع النشر المستمر للتطبيق في Google Play Console. ولكن نظرًا لأن التطبيق المنشور لا يظهر في المتجر على الفور ، ولكن بعد وقت غير محدد (استغرق مني نصف ساعة إلى يوم) ، لم تكن طريقة الاختبار هذه جيدة. ومع ذلك ، فإنه ليس المقصود لهذا. بالمناسبة ، إذا قمت بنشر التطبيق الفوري على Google Play Console بتردد كبير ، فإنني أنصحك أن تنظر في إمكانية تحديد رمز إصدار التطبيق بعد التشغيل. خلاف ذلك ، قد يكون من الصعب فهم ما إذا كان قد تم إطلاق الإصدار الأخير المنشور أو الإصدار السابق.

نشر


أخيرًا ، عندما يتم اختبار طلبك وجاهز للنشر ، لا تتسرع في الاسترخاء! أولاً ، يجب ألا يتجاوز رمز الإصدار ( versionCode ) الخاص بالتطبيق الفوري رمز إصدار التطبيق المثبت. نوصي بإعطاء مساحة مقدما للإبداع: عند تحرير التطبيق الرئيسي ، حدد القيمة المهمة بشكل واضح للرمز حتى لا تربط يديك. ستفشل إزالة التطبيق الفوري الذي تم إصداره من وحدة التحكم من أجل "تحرير" رمز الإصدار لتجميع آخر. من الناحية الرسمية ، لديك فرص NM versionCode = N التطبيق الفوري بينما يكون لديك التطبيق الرئيسي مع versionCode = N والتطبيق مع التشغيل الفوري مع versionCode = M على Google Play.

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

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

أيضا ، يمكن لبعض المكتبات الداعمة تضييق دائرة المستخدمين النهائيين. لذلك كان في حالتنا. ألقت وحدة التحكم خطأ "استهداف apk الفرق" ، على الرغم من أن أذونات كلا التطبيقين كانت هي نفسها. بحثًا عن حل ، صادفت هذه المشكلة مع Stack Overflow ، حيث يُنصح بتشغيل ملفات APK الخاصة بالتطبيق من خلال الأداة المساعدة aapt . سيعرض معلومات مفصلة حول الملفات ، بما في ذلك جميع التبعيات. بعد حساب الفرق في الإخراج لكلا الملفين ، لاحظت وجود فكرة: كان التطبيق الذي تم تثبيته يحتوي على خط uses-gl-es: '0x20000' ، والذي كان غائبًا في التطبيق الفوري. قادني تصفح قصير للشبكة إلى حل: يشير هذا السطر إلى أن التطبيق يستخدم مكتبة OpenGL ، والتي بدورها تستخدم في الخرائط. في الواقع ، استخدم تطبيقنا الرئيسي مكتبة play-services-maps ، لكن التطبيق الفوري لم يستخدم. سمحت لي إضافة هذه التبعية إلى التطبيق الفوري بإصدار التطبيق أخيرًا.

لتلخيص


  1. لا يمكن للتطبيقات الفورية استخدام الخدمات والشبكات غير الآمنة (http). يجب ألا يتجاوز حجم ملف APK النهائي 4 ميغابايت (ربما سيتم تبسيط هذا التقييد قريبًا إلى 10 ميغابايت).
  2. لتقليل حجم ملف APK ، يمكنك استخدام أدوات تحسين الأداء ورموز التشفير (على سبيل المثال ، ProGuard).
  3. يتم نقل SharedPreferences من التطبيق الفوري إلى التطبيق الرئيسي تلقائيًا لنظام Android 8.0+ ، للإصدارات السابقة ، من الضروري الكتابة يدويًا من خلال ملف تعريف الارتباط API أو Storage API . يجدر النظر في الحاجة إلى إطلاق تطبيق جاهز لترحيل البيانات قبل إصدار التطبيق الفوري.
  4. لتصحيح التطبيق الفوري ، يمكنك استخدام الأداة المساعدة الخاصة من Google Play Instant Development SDK المضمنة في Android SDK.
  5. قد يحدث ظهور التطبيق الفوري المنشور في وحدة التحكم على الأجهزة الطرفية مع تأخير من نصف ساعة إلى يوم. يجدر الاهتمام بالقدرة على تحديد أي إصدار من التطبيق الفوري الذي تم إطلاقه الآن من سوق Play بشكل لا لبس فيه.
  6. يجب ألا يتجاوز رمز إصدار التطبيق الفوري رمز إصدار التطبيق الرئيسي.
  7. يجب ألا تتجاوز قائمة الأجهزة التي سيتوفر عليها التطبيق الفوري قائمة الأجهزة التي يتوفر عليها التطبيق الرئيسي. للقيام بذلك ، يجب عليك تحديد نفس الأذونات في ملفات البيان ، وكذلك الانتباه إلى القيود المحتملة بسبب المكتبات المساعدة.

هذا كل شيء. آمل أن تجد هذه المعلومات مفيدة. سوف أكون سعيدا بأي ملاحظات!

مصادر مفيدة:


  1. جوجل تلعب الوثائق الفورية على مطوري أندرويد
  2. نصائح لتقليل حجم ملف APK التطبيق الفوري
  3. جوجل اللعب الفوري أسئلة وأجوبة
  4. كوكي الهجرة
  5. ترحيل البيانات باستخدام واجهة برمجة تطبيقات التخزين

Source: https://habr.com/ru/post/ar436780/


All Articles