سؤال

عندما حصلت على شيء مثل هذا

ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677):     at com.companyname.a.a.a(Unknown Source)

كيف يمكنني معرفة أين هي المشكلة وتصحيح هذه القضية؟ حصلت فقط على إخراج التعيين من Proguard ولا أعرف رقم الخط. شكرًا.

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

المحلول

أضف الأسطر التالية إلى تكوين بروغارد الخاص بك.

-renamesourcefileattribute SourceFile    
-keepattributes SourceFile,LineNumberTable

الآن ستتضمن آثار المكدس أرقام الخطوط ، وباستخدام أداة Retrace التي تشحن مع Proguard (المدرجة في Android SDK) ، يمكنك تصحيح الأخطاء مثل Normal.

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

ملاحظة: يتم إنتاج الملف مع التعيينات بواسطة خيار تكوين Proguard:

 -printmapping outputfile.txt

في ملف ANT الذي يتم شحنه باستخدام Android SDK ، يتم تعيينه على mapping.txt.

حظا طيبا وفقك الله.

نصائح أخرى

للاستفادة من أي آثار مكدس من حساب سوق Android الخاص بك ، يمكنك استخدام ملف الخريطة الخاص بك ، المنتج مع-printmapping الخيار في تكوين Proguard ، مع Retrace (أداة Proguard Companion) لفك تشفير تتبع المكدس. يمكنك أيضًا فك التشفير باليد باستخدام محتويات ملف الخريطة ، ولكن هذا مملة.

في دليل Proguard تحت أمثلة ، يوجد قسم حول إنتاج آثار مكدس مفيدة بما في ذلك كيفية الاحتفاظ بأرقام الخط.

لسوء الحظ ، إذا لم تقم بتعيين Proguard للحفاظ على أرقام الأسطر ، فستتمكن فقط من تحديد الطريقة التي ترمي الاستثناء.

الصق تتبع المكدس الخاص بك في stack_trace.txt

قم بتشغيل الأمر التالي: Java -jar Retrace.jar classes- procound.map stack_trace.txt

Retrace.jar في SDK Tools proguard lib retrace.jar classes.

فيما يلي رابط إلى الوثائق الرسمية على أداة الاسترداد من Android SDK: https://developer.android.com/studio/build/shrink-code#decode-stack-trace

هذه المقالة جيدة أيضًا: https://medium.com/@maheshwar.ligade/de-obfuscate-stack-traces-6e19a52a3379

لكل ما تبذلونه من بروس النسخ:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top