رفتن به مطلب
انجمن توسعه دهندگان موبایل

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


ارسال های توصیه شده

How-to-Port-OEM-Apps-1.jpg

با سلام

در آموزش قبلی چگونگی پورت برنامه را آموزش دادیم اکنون با ما باشید تا چگونگی آنالیز و رفع اشکال برنامه ای که پورت کردیم را بررسی کنیم

آموزش پورت برنامه های شرکتی

از لینک بالا می تونید آموزش پورت برنامه را ببینید

 

 

بسته شدن برنامه موقع اجرا میتونه سه دلیل داشته باشه که عبارت هستند از

 

  1. کم بودن کتابخانه های فریمورک
  2. ناقص بودن فایلهای so.
  3. متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد

از روشهای زیر برای رفع اشکال استفاده کنید

 

 

کم بودن کتابخانه های فریمورک

 

 

شما باید به فایل AndroidManifest.xml نگاه کنید تا ببینید چه فریمورکهای نیاز دارید

به عکس زیر دقت کنید

port-app-4.png

همانند علامتی که بالا زدیم طبق نام از مسیر system/framework و مسیر system/etc/permissions فایلها را کپی کنید به مسیری که درست کردید برای برنامه

 

 

ناقص بودن فایلهای so.

 

 

اینجا کمی سخت بفهمیم که برنامه چه فایلهای so. نیازی دارد

باید logcat را نصب و عیب یابی کنید

مثلا ligcat چنین خطایی میزنه

can’t find class libUXVisualizer

در اینجا شما در مسیر system/lib باید فایل libUXVisualizer.so به رامی که می خواهید پورت کنید انتقال دهید

 

 

متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد

 

 

فاکتورهای زیادی باعث کرش برنامه می شوند

در مثال ما برنامه سونی بیشتر با اشکال GetString مواجه می شوند

خطاهای مانند زیر

app-2.jpg

بعد از دیدن این log چه باید بکینم؟

 

  1. برنامه را با استفاده از framework-res.apk دیکامپایل کنید
  2. به مسیر smali/com/sonyericsson/metadatacleanup/util/ بروید
  3. فایل StorageManagerIf.smali را باز کنید
  4. خط 262 را پیدا کنید

app-3.png

 

  1. فایل framework-res.apk خودتان را دیکامپایل کنید
  2. به مسیر res/value/ بروید
  3. فایل Public.xml را باز کنید
  4. طبق StorageManagerIf.smali در خط 262 یک کد مشابه هست
>const-string v2, "storage_internal"
 

 

پس storage_internal را در Public.xml خود جستجو کنید

app-4.png

کد زیر را نیز کپی کنید برای تغییر

>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 خطاهای زیادی ممکن بوجود بیاد باید مثل بالا دنبال فایلها باشید و کدها را تغییر بدید

وقتی تمام شد فایلها را ریکامپایل ساین و ذخیره کنید

 

 

 

لینک در پرتال سایت

لینک ارسال

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

×
×
  • اضافه کردن...