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/

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

تحديث Android Studio يدوياً

اذا كنت مثلي او كمعظم اليمنيين تعاني من ضعف اتصال الانترنت واردت تحديث اصدار Android Studio فالتحديث التلقائي غير مجدي نظراً لتقطع الانترنت بشكل متكرر ومزعج.

وفي هذه الحالة دائماً ما الجئ الى الطرق التقليدية.

كتبت كود PHP يقوم بجلب رابط اخر باتش متوافق مع اصدار Android Studio لديك

اولاً قم بأخذ اصدار Android Studio الحالي من Help > About
لتظهر لك نافذة كالتالي

اصدار Android Studio لدي هو 173.4819257

لذلك سأنفذ الامر بالشكل التالي

curl -s https://raw.githubusercontent.com/731MY/AndroidStudioPatchGenerator/master/run.php | php -f /dev/stdin 173.4819257

سيطبع لك رابط لتنزيل الباتش قم بتنزيل الباتش ولتثبيته نفذ الامر التالي

java -classpath /path/to/patch.jar com.intellij.updater.Runner install /path/to/android-studio/

وانتظر بعض الوقت ريثما يقوم بالتثبيت.