JNI Debuggable: সহজ ভাষায় বোঝার চেষ্টা করি!

 

JNI Debuggable: সহজ ভাষায় বোঝার চেষ্টা করি!

👉 প্রথমে বুঝি, JNI কী?

JNI (Java Native Interface) হলো এমন একটা ব্রিজ, যা Java এবং Native (C/C++) কোডের মধ্যে সংযোগ তৈরি করে। সহজভাবে বললে, যদি আপনি Android অ্যাপে C/C++ কোড ব্যবহার করতে চান, তাহলে JNI ব্যবহার করতে হবে।

👉 Debuggable কী?

Debuggable সেটিং বলে দেয়, অ্যাপ ডিবাগ মোডে চলবে কি না। যদি android:debuggable="true" সেট করা থাকে, তাহলে আপনি অ্যাপে ডিবাগিং করতে পারবেন


📌 তাহলে "jniDebuggable" কী?

jniDebuggable হলো এমন একটি ফ্ল্যাগ, যা বলে দেয় Native (C/C++) কোড ডিবাগ করা যাবে কি না

👉 কখন দরকার হয়?

যখন আপনি C/C++ কোড ডিবাগ করতে চান, তখন jniDebuggable=true করতে হবে। এটি আপনাকে Native Code (C/C++) তে breakpoints, stack trace, memory analysis করার সুযোগ দেয়।


🎯 ব্যবহার কোথায়?

এটি সাধারণত Android NDK (Native Development Kit) ব্যবহার করা অ্যাপে দরকার হয়, যেখানে C/C++ কোড লেখা হয়।


💡 বাস্তব উদাহরণ

আপনার অ্যাপে যদি C/C++ লাইব্রেরি থাকে (যেমন OpenCV, FFmpeg, বা কোনো Native Image Processing লাইব্রেরি), তাহলে ডিবাগিং করার জন্য jniDebuggable ব্যবহার করা হবে।

Gradle-এ এটি কিভাবে সেট করবেন?

android {
    buildTypes {
        debug {
            jniDebuggable true
        }
    }
}

এটি চালু করলে, LLDB (Low-Level Debugger) ব্যবহার করে Native (C/C++) কোড ডিবাগ করা সম্ভব হবে।


🛑 সতর্কতা

🚨 jniDebuggable=true শুধুমাত্র Debug Build-এ রাখবেন, Release Build-এ নয়!
কারণ, এটি অ্যাপকে হ্যাকিং ও রিভার্স ইঞ্জিনিয়ারিং-এর জন্য দুর্বল করে তুলতে পারে।

Release Build-এ বন্ধ রাখতে চাইলে:

release {
    jniDebuggable false
}

✅ সংক্ষেপে:

  • jniDebuggable বলে দেয় C/C++ কোড ডিবাগ করা যাবে কি না
  • এটি Debug Build-এ রাখা হয়, Release Build-এ নয়
  • এটি Android NDK ও Native Code (C/C++) ডিবাগ করতে সাহায্য করে
  • LLDB বা GDB Debugger ব্যবহার করতে পারবেন
  • হ্যাকিং থেকে বাঁচতে, Release Build-এ false করে রাখুন।

🤔 যদি বুঝতে অসুবিধা হয়?

কোনো নির্দিষ্ট অংশ জটিল মনে হলে বলুন, আমি সহজ করে আবার ব্যাখ্যা করব! 😊

Comments

Popular posts from this blog

AI (Artificial Intelligence) সহজভাবে বোঝার জন্য একদম মস্তিষ্ক-বান্ধব ব্যাখ্যা 🧠🤖

🧠 Regex কী?

Kotlin-এ ভেরিয়েবল ঘোষণা করার দুই উপায়