آموزش جاوا و اندروید

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

آموزش جاوا و اندروید

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

طبقه بندی موضوعی

پروگارد

يكشنبه, ۷ دی ۱۳۹۹، ۰۹:۳۴ ب.ظ

پروگارد یه نرم افزار کامند لاینی هست که جز SDK اندروید بوده و باهاش میشه کار minimize، hide و optimize برای کد انجام داد.

اندروید استودیوی جدید از R8 بجای پروگارد استفاده میکنه. برای فعال سازی R8 از کد زیر در گریدل استفاده میشود:

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

minifyEnabled اسامی رو تغییر داده و اسم های کوچیک و خلاصه استفاده میکنه (obfuscate میکنه)، کد رو به هم میریزه، duplicate code ایجاد میکنه، کدهای اضافی (مثلا لایبرری هایی که استفاده نشدن) رو حذف میکنه و همچنین shrink code انجام میده. (فرآیند obfuscate در حقیقت برای جلوگیری از reverse engineering هست)

 

shrinkResources ریسورس های اضافی که استفاده نشدن رو حذف میکنه. (مثلا اگر یه عکسی باشه که استفاده نشده حذف میکنه. دقت شود که این با shrink code فرق داره)

 

سوال: چگونه نتیجه پروگارد رو ببینیم؟ دو تا راه هست که دومی بهتره!

 

راه اول: از طریق منوی build گزینه analyze APK رو میزنیم و فایل classes.dex رو باز میکنیم. اینجا پکیجمون رو انتخاب میکنیم و میبینیم که اسامی تغییر کردن.

 

 

راه دوم: استفاده از java decompiler که آموزشش اینجا هست. این روش بهتریه چون کلاس ها رو کاملا لود میکنه.

 

ریزالت پروگارد:

 

وقتی پروگارد انجام میشه سه تا فایل خروجی میده.

توی فایل mapping.txt نوشته که اسم اصلی فایل ها چی بوده و به چی تغییر یافته.

تیو فایل usage.txt نوشته که کدوم متدها و متغیرها و اینا رو حذف کرده.

نکته: تمامی اسامی که در فایل منیفست وجود دارن obfuscate نمیشن. مثل اسم اکتیویتی ها.

 

 

موافقین ۰ مخالفین ۰ ۹۹/۱۰/۰۷
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی