نصائح لتطوير تطبيق Android: الدروس المستفادة

نشرت: 2022-03-11

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

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

يوجد أيضًا أكثر من مليون تطبيق على Google Play فقط ، ناهيك عن Amazon AppStore أو الأسواق التي لا نهتم بها بشكل عام ، مثل الصين. دعونا لا ننسى عددًا لا يحصى من شركات تطوير تطبيقات الأجهزة المحمولة التي تحقق إيرادات بمليارات الدولارات كل عام.

إذن ، كيف يمكن لمطور مستقل إنشاء تطبيق ناجح في هذا السوق الضخم مع لاعبين كبار؟ ليس لدي أي فكرة ، لم أقم بإنشاء تطبيق ناجح! لكن ، لقد صنعت قصة لطيفة ، وأود أن أشارككم قصتي.

الدرس 1: ربط النقاط

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

بينما ساعدتني هذه التطبيقات في فهم عقل "المخلوق المراوغ المسمى المستخدم" بشكل أفضل قليلاً ، كان المشروع الذي ألهمني مشروعًا مدته ساعتان. تم تطويره في الأصل ليجعلني مليونيراً ، بمجرد أن اشترى 1،428،571 مستخدم التطبيق حيث تحصل Google على 30 سنتًا من كل دولار ، تم إنشاء تطبيق Dollar لاختبار حساب التجار الخاص بي.

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

يمكن أن يكون تطوير تطبيقات Android للمبتدئين أمرًا بسيطًا وممتعًا عند توسيع نطاقه بشكل فعال.

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

الدرس 2: التعرف على سوق Android Market

تمت إضافة كل الأشياء التي ذكرتها أعلاه إلى تطبيق خلفية حية. ليس من الصعب تخمين الأساسيات. يتمتع Android بحصة سوقية أكبر من iOS ، لكن مستخدمي iOS يشترون المزيد. تحظى تطبيقات المراسلة بشعبية كبيرة ، لكن ألعاب freemium تتصدر الأرباح. الصين والهند والبرازيل وروسيا أسواق ناشئة ، لكنها تفتقر إلى عادات الإنفاق. يمكنك قراءة App Annie Index لمزيد من الأفكار.

إذن كيف يتناسب تطبيق الخلفية الحية مع هذا؟ بادئ ذي بدء ، فهو يقضي على معظم المنصات نظرًا لأن الخلفية الحية هي شيء يعمل بنظام Android. ثانيًا ، تمت إضافة هذه الميزة في Android 2.1 بحيث تضم مجتمعًا كبيرًا والعديد من الأمثلة الجميلة. أبرزها Paperland و Roman Nurik مفتوح المصدر Muzei ، وربما أفضل نقطة مرجعية لتطوير Android.

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

بدون مزيد من اللغط ، وقبل الخوض في التفاصيل الفنية ، أقدم لكم بفخر: Ooshies - The Live Wallpaper

Ooshies هو اسم تطبيق Android الخاص بي. قد لا يكون ناجحًا ولكنه ساعدني في تعلم الدروس اللازمة لكتابة هذا الدليل لمطوري Android المبتدئين.

يتميز بما يلي:

  • تطبيق خلفية حية مجاني يمنحك العناق
  • 12 قطعة أوشي فريدة للاختيار من بينها
  • محتوى مجاني وغير قابل للقفل وقابل للشراء
  • تحديثات الطقس الحالية
  • تسجيل الدخول الاجتماعي ومزامنة البيانات
  • ترحيبات موسمية
  • العديد من المفاجآت
  • قطة النينجا
  • هل ذكرنا العناق؟

أحيانًا تجعلك تطبيقات Android الناجحة تبتسم فقط.

الدرس 3: حاول تحقيق ذلك

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

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

  2. OpenGL - إذا أردنا تسريع الأجهزة ، فنحن بحاجة إلى استخدام OpenGL ES أو حتى أفضل إطار عمل يقوم بمعظم العمل من أجلنا.

  3. تحميل الصور النقطية - مشكلة معروفة في استهلاك الذاكرة. نحتاج إلى تخصيص 1 بايت [0-255] من الذاكرة ، لكل قناة في #ARGB ، لعرض بكسل واحد. كما أن الصور التي نستخدمها غالبًا ما تكون ذات دقة أعلى من شاشة الجهاز. سيؤدي تحميلها جميعًا بسرعة إلى OutOfMemroyException.

  4. قاذفات المنزل - ستتم استضافة خلفية الشاشة الحية في عملية قاذفة المنزل ، ويميل المشغل المختلف إلى إعطاء عمليات رد اتصال مختلفة لخدمة الخلفية الحية (أبرزها Nova و TouchWiz).

  5. عمر البطارية - إذا لم يتم ذلك بشكل صحيح ، يمكن أن تستنزف الخلفيات المتحركة والأدوات الكثير من طاقة البطارية. مع كل الضجة حول عمر البطارية الرهيب Lollipop (Android 5.0) ، سيكون أول تطبيق يتم تشغيله هو الخلفية الحية.

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

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

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

 canvas.drawBitmap(background, 0 - offsetX / 4, 0, null); canvas.drawBitmap(weatherOverlay, 0 - offsetX / 2, 0, null); if (!validDoubleTap) { canvas.drawBitmap(ooshieNormal, positionX - offsetX, positionY, null); } else { canvas.drawBitmap(ooshieTapped, positionX - offsetX, positionY, null); }

offset هي نسبة مئوية من المسافة التي تنقلها المستخدم. إنها رد اتصال يوفره محرك الخلفية:

 @Override public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset){ super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset); // athe current offset should be a fraction of the screen offset to achieve parallax if (!isPreview()) { float newXOffset = xOffset * 0.15f; wallpaperDrawHelper.setOffsetX(newXOffset); if (isVisible() && hasActiveSurface) { wallpaperDrawHelper.drawFrame(false); } } }

يجب أن أشير إلى أن كل هذا لن يكون ضروريًا إذا كنت أعرف كيفية العمل مع OpenGL! إنه مدرج في قائمة TODO الخاصة بي ، نظرًا لأن أي شيء أكثر تعقيدًا مما لدينا الآن سيتطلب تسريع الأجهزة. لكن ، في الوقت الحالي ، يجب أن أعمل بجدية أكبر ، وليس بذكاء (أنا منفتح على الاقتراحات الواردة في التعليقات). إذن هذا ما فعلناه:

الدرس 4: العمل مع ما لديك

بصفتنا من كبار المؤيدين minSdk=15 ، فقد قمنا منذ البداية بإزالة جميع أجهزة 2.x. الجهد المبذول للحفاظ على التوافق مع الإصدارات السابقة أكبر من العائد المحتمل من المستخدمين غير القادرين على \ غير الراغبين في ترقية هواتفهم. لذلك ، في معظم الحالات ، سنكون قادرين على تحقيق تجربة سلسة مع خيار إضافي لتعطيل اختلاف المنظر إذا رغبت في ذلك.

وفقًا لدليل تطوير Android هذا ، أردت أن أعطي خيار تعطيل المنظر.

تحسين كبير آخر هو كيفية تعاملنا مع الصور النقطية. يمكن تحقيق تأثير اختلاف المنظر من خلال رسم صورتين نقطيتين بدلاً من ثلاث:

  1. تراكب Ooshie - تم قصه وتحجيمه بعناية Ooshie صورة نقطية (يمكن الوصول إليها)

  2. التراكب المدمج - صورة نقطية مشتركة للخلفية والطقس تتحرك بجزء بسيط من سرعة Ooshie

تعمل خدعة تطوير Android هذه على حفظ الذاكرة وتسريع وقت الرسم ، لتقليل تأثير اختلاف المنظر الطفيف.

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

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

 long lastUpdate = prefStore.getLong(SharedPrefStore.Pref.WEATHER_TIMESTAMP); if (System.currentTimeMillis() - lastUpdate > Consts.WEATHER_UPDATE_INTERVAL){ // update the weather if obsolete Intent intent = new Intent(getApplicationContext(), WeatherUpdateService.class); startService(intent); }

لذلك ، بشكل أساسي ، إليك قائمة التحقق لرسم صورة نقطية لبرنامج سلس محسّن للذاكرة:

  1. اجمع الصور النقطية مرة واحدة
  2. ارسم صورًا نقطية أقل
  3. إعادة الرسم عند الطلب فقط
  4. تجنب مهام الخلفية
  5. امنح المستخدمين بعض التحكم في العملية

الدرس 5: اختبار. اختبار. اختبار

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

إذا كنت تعمل في مجال تطوير برامج Android ، فإن الشروط واضحة ومباشرة ، ولكن إليك ملخص سريع:

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

  2. مختبرو الإصدارات التجريبية - جمهور أوسع بكثير مع ديموغرافيات مختلفة. يجب نشر الإصدارات المستقرة هنا. حتى لو كان مستوى النينجا لديك مرتفعًا للغاية ، فلا يمكنك أبدًا التنبؤ ، ناهيك عن حساب جميع توزيعات Android الممكنة والطرق التي يستخدم بها الأشخاص هواتفهم.

بمجرد أن نجتاز ألفا ، اعتقدت أننا انتهينا. لكن يا فتى كنت مخطئا ؟! اتضح أنه ليس كل مستخدمي Android لديهم أجهزة Nexus بأحدث البرامج! من يعرف؟ :)

فيما يلي بعض مشكلات تطوير Android بناءً على هذا الوحي:

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

  2. من الصعب توسيط Ooshie دون معرفة الموضع الافتراضي للشاشة الرئيسية - وبالتالي فإن شريط تمرير الإعدادات لضبط إزاحة المنظر.

  3. لا يعرف المستخدم العادي معنى إزاحة المنظر - يجب استخدام مصطلحات أبسط بكثير في صفحة الإعدادات.

  4. سيقترح مستخدم عشوائي الميزة التالية الخاصة بك.

لذلك أود أن أشكر جميع مختبري الإصدارات التجريبية لدينا على العمل الشاق الذي قاموا به. آمل أن يكون الحصول على أحدث الميزات قبل أي شخص آخر مكافأة جيدة لتفانيهم. إذا كنت ترغب في ذلك ، يمكنك أيضًا أن تكون جزءًا من Google+ Beta Community.

يعد الاختبار التجريبي خطوة مهمة يجب على المبتدئين في نظام Android وضعها في الاعتبار عند بدء برمجة تطبيقات Android الناجحة الخاصة بهم.

الدرس 6: دع البيانات تتحدث

يعد إنشاء تطبيق Android متميزًا اليوم أصعب قليلاً من إنشاء تطبيق آلة حاسبة ، عندما لم يكن هناك أي تطبيق في عام 2009. من الصعب إنشاء التطبيق المثالي. أساسا لأن الكمال في عين الناظر. ما هو جيد بالنسبة لي لا يعني بالضرورة أنه مفيد لك. لهذا السبب من المهم السماح للتطبيق بالنمو. تُظهر قائمة مراجعة خارطة الطريق الخاصة بنا للميزات الجديدة أن لدينا عملًا كافيًا لعام 2015 بأكمله. من بين أشياء أخرى سنقوم بتضمينها قريبًا:

  1. اصوات
  2. خلفيات موسمية
  3. التخصيصات (لون الخلفية ، حزم الطقس ، أوشي جلود ، إلخ.)
  4. أوشيز خاصة بالمنطقة (مثل بابوشكاس)
  5. الكثير من الأوشيز الجديدة وطرق فتحها

الآن ، ربما احتفظنا بالتطبيق في مرحلة تجريبية حتى يتم الانتهاء من كل شيء ، ولكن بهذه الطريقة نتخلص من البيانات القيمة. لن يخصص جميع مختبري الإصدارات التجريبية جزءًا من يومهم لإرسال التعليقات إليك. هذا هو المكان الذي يمكنك فيه الاستفادة من استخدام الأدوات للحصول على التعليقات. يمكنك استخدام Google Analytics و Flurry و Mixpanel و Crashalytics و ACRA وما إلى ذلك لجمع بيانات الاستخدام.

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

على الرغم من أن هذه عملية خلفية ، إلا أنه يمكن استخدامها لتحسين تجربة المستخدم بشكل أكبر. لماذا لا تظهر للمستخدم كم مرة:

  1. هو / هي حصلت على عناق
  2. كم يوم ممطر أشرق بابتسامة
  3. كم عدد النقرات اللازمة لفتح Ooshie بلعبة صغيرة
  4. كم عدد الأصدقاء الذين قاموا بتثبيت التطبيق بسببك

يجب أن يوضح كل دليل تطوير لنظام Android أهمية Google Analytics في تحسين تطبيقك!

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

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

خاتمة

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

النجاح ليس دائما واضحا. بفضل التجربة الكاملة تعلمت الكثير. ألقيت ، على الأقل ، عشرات المحاضرات حول كيف (لا) أن تفشل كشركة ناشئة في مختلف الأحداث والهاكاثونات ، وتمكنت من الحصول على اثنين من العملاء في Toptal.

والأهم من ذلك ، أحاول عدم تكرار نفس أخطاء تطوير Android مع Ooshies باتباع النصائح والحيل في هذا الدليل.

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

يمكنك التحقق من موقعنا على الإنترنت أو تنزيل Ooshies لتجربته.