آموزش پورت برنامه های شرکتی(آنالیز و عیب یابی)

در آموزش قبلی چگونگی پورت برنامه را آموزش دادیم اکنون با ما باشید تا چگونگی آنالیز و رفع اشکال برنامه ای که پورت کردیم را بررسی کنیم
از لینک بالا می تونید آموزش پورت برنامه را ببینید[/vc_column_text][vc_column_text]بسته شدن برنامه موقع اجرا میتونه سه دلیل داشته باشه که عبارت هستند از
- کم بودن کتابخانه های فریمورک
- ناقص بودن فایلهای so.
- متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد
از روشهای زیر برای رفع اشکال استفاده کنید[/vc_column_text][vc_text_separator title=”کم بودن کتابخانه های فریمورک” color=”juicy_pink” border_width=”7″][vc_column_text]شما باید به فایل AndroidManifest.xml نگاه کنید تا ببینید چه فریمورکهای نیاز دارید
به عکس زیر دقت کنید
همانند علامتی که بالا زدیم طبق نام از مسیر system/framework و مسیر system/etc/permissions فایلها را کپی کنید به مسیری که درست کردید برای برنامه[/vc_column_text][vc_text_separator title=”ناقص بودن فایلهای so.” color=”juicy_pink” border_width=”7″][vc_column_text]اینجا کمی سخت بفهمیم که برنامه چه فایلهای so. نیازی دارد
باید logcat را نصب و عیب یابی کنید
مثلا ligcat چنین خطایی میزنه
can’t find class libUXVisualizer
در اینجا شما در مسیر system/lib باید فایل libUXVisualizer.so به رامی که می خواهید پورت کنید انتقال دهید[/vc_column_text][vc_text_separator title=”متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد” color=”juicy_pink” border_width=”7″][vc_column_text]فاکتورهای زیادی باعث کرش برنامه می شوند
در مثال ما برنامه سونی بیشتر با اشکال GetString مواجه می شوند
خطاهای مانند زیر
بعد از دیدن این log چه باید بکینم؟
- برنامه را با استفاده از framework-res.apk دیکامپایل کنید
- به مسیر smali/com/sonyericsson/metadatacleanup/util/ بروید
- فایل StorageManagerIf.smali را باز کنید
- خط 262 را پیدا کنید
- فایل framework-res.apk خودتان را دیکامپایل کنید
- به مسیر res/value/ بروید
- فایل Public.xml را باز کنید
- طبق StorageManagerIf.smali در خط 262 یک کد مشابه هست
const-string v2, "storage_internal"
پس storage_internal را در Public.xml خود جستجو کنید
کد زیر را نیز کپی کنید برای تغییر
const-string v2, "storage_internal"
invoke-direct {p0, v1, v2}, Lcom/sonyericsson/metadatacleanup/util/StorageManagerIf;->getString(Landroid/content/res/Resources;Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
برای کوچک کردن کد
const v2, 0x10405ad
در آخر کد شبیه زیر می شود
.line 262
.local v0, "description":Ljava/lang/String;
const v2, 0x10405ad
if-eqz v2, :cond_0
در logcat خطاهای زیادی ممکن بوجود بیاد باید مثل بالا دنبال فایلها باشید و کدها را تغییر بدید
وقتی تمام شد فایلها را ریکامپایل ساین و ذخیره کنید[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_btn title=”لینک آموزش در انجمن برای بحث و تبادل نظر” color=”green” link=”url:http%3A%2F%2Fforum.gsm-developers.com%2Ftopic%2F12125-%25D8%25A2%25D9%2585%25D9%2588%25D8%25B2%25D8%25B4-%25D9%25BE%25D9%2588%25D8%25B1%25D8%25AA-%25D8%25A8%25D8%25B1%25D9%2586%25D8%25A7%25D9%2585%25D9%2587-%25D9%2587%25D8%25A7%25DB%258C-%25D8%25B4%25D8%25B1%25DA%25A9%25D8%25AA%25DB%258C%25D8%25A2%25D9%2586%25D8%25A7%25D9%2584%25DB%258C%25D8%25B2-%25D9%2588-%25D8%25B9%25DB%258C%25D8%25A8-%25DB%258C%25D8%25A7%25D8%25A8%25DB%258C%2F||target:%20_blank|rel:nofollow”][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]هرگونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد[/vc_column_text][/vc_column][/vc_row]








