تطبيق Java ME يعمل بشكل جيد في المحاكي ولكنه يتحطم عند نشره على N70. أي طريقة لتحديد سبب التعطل؟

StackOverflow https://stackoverflow.com/questions/2776347

  •  03-10-2019
  •  | 
  •  

سؤال

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

هل هناك أي طريقة يمكنني من خلالها معرفة سبب عدم تمكن التطبيق من البدء في الهاتف؟

تحديث: إنه يعمل بشكل جيد على المحاكي. وشيء آخر أود أن أذكره هو أن الكود يتوقف عن التنفيذ فقط عند النقطة التي أقوم فيها بإنشاء تلك الحالات الـ 14 وإضافتها إلى المتجه. حتى هذه النقطة ، ينفذ الرمز بشكل جيد.

هل كانت مفيدة؟

المحلول

قد يعتمد ذلك على المكان الذي تقوم فيه في الكود بإنشاء تلك الحالات. إذا كنت تقوم بإنشائها في مُنشئ Midlet أو طريقة StartApp ، فحاول نقل التهيئة إلى طريقة تشغيل التطبيق الخاص بك.

تتمثل إحدى طرق تصحيح تطبيقات J2ME التي لا تبدأ على الهاتف عن طريق إضافة رسائل تصحيح "printf" في الكود المراد كتابتها في نظام متجر السجلات وإضافة MIDLET إلى تطبيقك لقراءة من RMS وعرض تلك الرسائل. أو يمكنك فقط التعليق على أجزاء من التعليمات البرمجية ومعرفة ما إذا كان يعمل.

نصائح أخرى

يمكنك تصحيح على الجهاز. إذا كان المحاكي الذي تستخدمه جزءًا من Nokia SDK ، فيجب أن تكون هناك مرافق أخرى لإجراء اختبار وتصحيح الأخطاء على الجهاز. (سأقوم بنشر المزيد من التفاصيل حول هذا ، لكنني فعلت هذا فقط مع هواتف Sony Ericsson مؤخرًا.)

خيار آخر هو استخدام أدوات نوكيا يتيح لك ذلك عرض الإخراج والخطأ القياسي لتطبيقك عند تشغيله على جهازك (عبر Bluetooth على سبيل المثال).

إن احتمال تعطل التطبيق الخاص بك في الواقع في مؤشر ترابط المترجم Bytecode Machine Java وإنهاء العملية الأصلية بأكملها صغيرة جدًا.

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

من الأرجح أن:

  • لم يتم إنشاء Midlet الخاص بك أو لم يتم تشغيله لأن وقت تشغيل MIDP يقرر أنه غير صحيح.
    أو
  • إن Midlet الخاص بك يرمي ببساطة استثناء أنك لا تصطاده ، مما قد يجعله يبدو أنه تم إنهاءه بوحشية.

نظرًا لأنه من المفترض أن يمنعك مثبت Midlet من تثبيت Midlet السيئ ، فمن المرجح أن تكون مشكلة الاستثناء غير المذترحة.

كيفية العثور على استثناء غير معطل:

  • ابدأ بأبسط HelloWorld Midlet ، باستخدام أ Form لذلك يمكنك بسهولة إدخال المزيد StringItemS في الجزء العلوي من الشاشة.
  • إنشاء وبدء جديد Thread في MIDlet.startApp()
  • في تجاوزك Thread.run(), ، أضف try{}catch(Throwable){} الكتلة.
  • داخل تلك الكتلة ، افعل ما فعله Midlet الأصلي.
  • استخدم النموذج كإخراج قياسي لتصحيح الأخطاء.

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

هذه هي الخطوة الأولى لمعرفة ما يجري.

واجهت أيضًا مشكلة مماثلة ، وعندما أعيد تجميع Midlet كأفضل Midlet 1.0 ، فقد عملت بشكل جيد. يبدو أن N70 غير قادر على تشغيل الإصدار الجديد من Midlet. أعتقد أنك تخفض التصنيف وإعادة اختبار Midlet الخاص بك.

يعتبر

Junaid

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top