شارك المقالة

كيف تحافظ على سرية كود Flutter وتقلل حجم التطبيق في نفس الوقت

سر خطير في Flutter قد ينقذ تطبيقك من الاختراق

عند نشر تطبيقات Flutter للإنتاج، يسعى المطورون دائمًا إلى تحسين الأداء وزيادة الأمان. ومن بين الأدوات المفيدة لتحقيق هذا الهدف، نجد خيارَين مهمين في الأمر flutter build:

–obfuscate
–split-debug-info=build/debug-info

في هذا المقال، سنستعرض كل خيار بالتفصيل، بما في ذلك كيفية استخدامه، أهميته، والفوائد التي يقدمها للمطور والمستخدم النهائي.

ما هو الـ Obfuscation (إخفاء الكود)؟

الـ Obfuscation أو “إخفاء الكود” هو عملية تحويل الكود البرمجي القابل للقراءة إلى كود غير قابل للفهم بسهولة من قبل البشر، دون التأثير على تنفيذه. هذه العملية تُستخدم غالبًا لأسباب أمنية وحماية الملكية الفكرية.

كيف يعمل في Flutter؟

عند استخدام الخيار –obfuscate أثناء عملية البناء، يقوم Flutter بتغيير أسماء المتغيرات، الدوال، الكلاسات، وأحيانًا حتى السلاسل 
النصية (Strings) إلى أسماء غير ذات معنى مثل a, b, c, إلخ.

مثال بدون Obfuscation


class UserService {
  String getUsername(int id) {
    return 'User$id';
  }
}

مثال مع Obfuscation
class a {}
String b(int c) {
  return 'User$c';
}

لماذا نستخدمه؟
🛡️ زيادة الأمان : يجعل من الصعب على الهاكرز تحليل الكود.
📦 تقليل حجم التطبيق : قد يؤدي إلى تقليل طفيف في حجم الكود.
👀 منع القرصنة : يحمي الأجزاء الحساسة من التطبيق مثل الترخيص أو الدفع.

ما هو –split-debug-info؟

الخيار –split-debug-info يسمح لك بفصل معلومات التصحيح (Debug Info) عن الكود التنفيذي عند بناء الإصدار النهائي من التطبيق. يتم تخزين هذه المعلومات في ملفات خارجية بدلاً من تضمينها داخل التطبيق نفسه.

flutter build –split-debug-info=build/debug-info


هذا الأمر سيقوم بحفظ ملفات .symbols في مجلد build/debug-info.

فوائده:
🧠 تسهيل تحليل الأعطال (Crash logs) : يمكنك استخدام هذه الملفات لفك تشفير تتبع الأخطاء.
📉 تقليل حجم APK/IPA : لأن معلومات التصحيح لا تُدمج مع التطبيق النهائي.
🛡️ تحسين الخصوصية والأمان : عدم وجود معلومات تحليلية داخل التطبيق يقلل من فرص اختراقه.

متى يجب استخدام Obfuscation في Flutter؟

عند رغبتك في تقليل حجم التطبيق.
عندما تحتاج إلى مراجعة الأخطاء بعد النشر بدون وضع معلومات التصحيح داخل التطبيق.

خطوات استرجاع الأخطاء بعد استخدام –split-debug-info

بعد استخدام هذا الخيار، فإن تتبع الأخطاء (Stack traces) سيكون بصيغة مشفرة. لكن يمكنك فكها باستخدام أدوات مثل:

في Android:
استخدام flutter symbolize:

flutter symbolize -i <input-file> -d build/debug-info/


في iOS:
يمكنك استخدام أداة atos مع ملف .symbols:

atos -o App.framework/App -arch arm64 -l 0x100000000 -f build/debug-info/vm_outline_1.symbols


 أمثلة عملية واستخدامات حقيقية
حالة استخدام رقم 1: تطبيق مدفوع
تحتوي على نظام اشتراكات وترخيص داخلي، ويجب حماية الكود من التحليل.

flutter build –release –obfuscate –split-debug-info=build/debug-info


كيفيه استخراج نسخ Apk مع استخدام Obfuscate

flutter build apk –release –flavor pos -t lib/main.dart –obfuscate –split-debug-info=build/debug-info


كيفيه استخراج نسخ AAB مع استخدام Obfuscate

flutter build appbundle –release –flavor pos -t lib/main.dart –obfuscate –split-debug-info=build/debug-info


شاهد أيضًا
مقالات ذات صلة
امكانية عمل قراءة المزيد للنص في اندرويد ستوديو – Expandable Text View

امكانية عمل قراءة المزيد للنص في اندرويد ستوديو – Expandable Text Viewفي هذا المقال نشارك…

عمل انتقال للصور مع animation بسيط لتحسين عملية نقل البيانات

  عمل انتقال للصور مع animation بسيط لتحسين عملية نقل البياناتالانميشن اصبح امر مرغوب به…

كود برولوج لضرب عددين – multiply two number prolog code

  تعتبر لغة prolog او logic واحده من اهم اللغات التي يجب ان يهتم لها…

🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع