AndResGuard

AndResGuard هي اداة قام بتطويرها فريق تطوير تطبيق WeChat والتي تعتبر مكمله لاداة ProGuard والتي تفتقد لخاصية تغيير اسماء ملفات الـResources

ويمكن استخدام الاداة عن طريق الطرفيه او طريق تضمينها في المشروع عبر Gradle كما يلي.

اولاً يجب اضافة التالي في ملف app/build.gradle

apply plugin: 'AndResGuard'

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.13'
    }
}
andResGuard {
    mappingFile = null
    use7zip = false
    useSign = true
    keepRoot = false
    whiteList = [
            "R.drawable.icon",
            "R.drawable.ic_*_arrow?",
            "R.menu.*",
    ]

    compressFilePattern = [
            "*.png",
            "*.jpg",
            "*.jpeg",
            "*.gif",
    ]

    finalApkBackupPath = "${project.rootDir}/final.apk"
}

لتعمية جميع الملفات اجعل قيمة mappingFile = null

لأبقاء جميع المسارات كما هي اجعل قيمة المتغير keepRoot = true

وفي حالة اردت استثناء مسارات معينه من التعميه اجعل المتغير mappingFile = file("./mapping.txt")

ثم احفظ المسارات في ملف mapping.txt واجعل محتواه كالتالي

res path mapping:
    old/path -> new/path
    res/drawable -> res/drawable
    res/drawable-xhdpi-v4 -> res/drawable-xhdpi-v4

في حالة كنت تود نشر التطبيق في Google Play فإجعل قيمة use7zip = false بسبب وجود مشكله مع File-by-file patches عند تحديث التطبيق. ماعدا ذلك فيفضل تفعيلها لضغط التطبيق.

لختم التطبيق اجعل قيمة useSign = true.

لاستثناء ملفات معينه اضف الملفات الى مصفوفة whiteList

لتفعيل الضغط على ملفات معينه اضف مسارات الملفات الى مصفوفة compressFilePattern

لتغيير مسار اخراج الملف النهائي قم بوضع المسار في المتغير finalApkBackupPath

وفي حالة عدم اسناد قيمة للمتغير سيتم حفظ الملف النهائي في المسار

app/build/outputs/apk/release/AndResGuard_app-release/

يمكنك في المصفوفتين whiteList و compressFilePattern استخدام العلامات التاليه

  • ? للاشاره لعدد 0 او 1 محارف.
  • * للاشاره لعدد 0 او اكثر محارف.
  • + للاشاره لعدد 1 او اكثر محارف.

ثم ضمن بيانات المفتاح التاليه في المجال android في ملف app/build.gradle مع تغيير اللازم

signingConfigs {
    release {
        storeFile file("/path/to/signing-key.jks")
        storePassword "store-password"
        keyAlias "key-alias"
        keyPassword "key-password"
        v2SigningEnabled true
    }
}

ثم اضف التالي الى المجال buildTypes>release

signingConfig signingConfigs.release

ولاصدار ملف apk موقع

إضغط على gradle في القائمه الجانبيه ثم YourProject>Tasks>andresguard>resguardRelease كما في الصوره التاليه

ستجد الملف في المسار المُعد سابقاً

بالإضافه لملف resource mapping في المسار التالي

app/build/outputs/apk/release/AndResGuard_app-release/

ويحتوي على المسميات القديمه تقابلها المسميات الجديده.