আপনার প্রকল্পে C এবং C++ কোড যোগ করুন

আপনার প্রজেক্ট মডিউলের একটি cpp ডিরেক্টরিতে কোডটি রেখে আপনার Android প্রকল্পে C এবং C++ কোড যোগ করুন। আপনি যখন আপনার প্রকল্পটি তৈরি করেন, তখন এই কোডটি একটি নেটিভ লাইব্রেরিতে সংকলিত হয় যা Gradle আপনার অ্যাপের সাথে প্যাকেজ করতে পারে। আপনার জাভা বা কোটলিন কোড জাভা নেটিভ ইন্টারফেস (জেএনআই) এর মাধ্যমে আপনার নেটিভ লাইব্রেরিতে ফাংশন কল করতে পারে। JNI ফ্রেমওয়ার্ক ব্যবহার সম্পর্কে আরও জানতে, Android এর জন্য JNI টিপস পড়ুন।

অ্যান্ড্রয়েড স্টুডিও CMake সমর্থন করে, যা ক্রস-প্ল্যাটফর্ম প্রকল্পগুলির জন্য দরকারী। অ্যান্ড্রয়েড স্টুডিও ndk-build সমর্থন করে, যা CMake এর চেয়ে দ্রুত হতে পারে কিন্তু শুধুমাত্র Android সমর্থন করে। একই মডিউলে CMake এবং ndk-build উভয়ই ব্যবহার করা বর্তমানে সমর্থিত নয়।

আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে একটি বিদ্যমান ndk-build লাইব্রেরি আমদানি করতে, কীভাবে Gradle কে আপনার নেটিভ লাইব্রেরি প্রকল্পে লিঙ্ক করবেন তা শিখুন।

এই পৃষ্ঠাটি আপনাকে দেখায় যে কীভাবে প্রয়োজনীয় বিল্ড সরঞ্জামগুলির সাথে Android স্টুডিও সেট আপ করবেন , C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করবেন এবং আপনার প্রকল্পে নতুন C/C++ ফাইল যুক্ত করবেন

পরিবর্তে আপনি একটি বিদ্যমান প্রকল্পে নেটিভ কোড যোগ করতে চান, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. নতুন নেটিভ সোর্স ফাইল তৈরি করুন এবং আপনার অ্যান্ড্রয়েড স্টুডিও প্রোজেক্টে ফাইল যোগ করুন।
    • আপনার যদি ইতিমধ্যেই নেটিভ কোড থাকে বা একটি পূর্বনির্মাণ নেটিভ লাইব্রেরি আমদানি করতে চান তবে এই ধাপটি এড়িয়ে যান।
  2. একটি লাইব্রেরিতে আপনার নেটিভ সোর্স কোড তৈরি করতে CMake কনফিগার করুন । আপনি যদি পূর্বনির্মাণ বা প্ল্যাটফর্ম লাইব্রেরির সাথে আমদানি এবং লিঙ্ক করেন তবে এই বিল্ড স্ক্রিপ্টটি প্রয়োজন।
    • আপনার যদি একটি বিদ্যমান নেটিভ লাইব্রেরি থাকে যেখানে ইতিমধ্যেই একটি CMakeLists.txt বিল্ড স্ক্রিপ্ট আছে বা ndk-build ব্যবহার করে এবং একটি Android.mk বিল্ড স্ক্রিপ্ট অন্তর্ভুক্ত করে, এই ধাপটি এড়িয়ে যান।
  3. আপনার CMake বা ndk-build স্ক্রিপ্ট ফাইলে একটি পথ প্রদান করে Gradle কনফিগার করুন । Gradle আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে সোর্স কোড আমদানি করতে এবং অ্যাপে আপনার নেটিভ লাইব্রেরি প্যাকেজ করতে বিল্ড স্ক্রিপ্ট ব্যবহার করে।

একবার আপনি আপনার প্রকল্প কনফিগার করলে, JNI ফ্রেমওয়ার্ক ব্যবহার করে Java বা Kotlin কোড থেকে আপনার নেটিভ ফাংশনগুলি অ্যাক্সেস করুন। আপনার অ্যাপ তৈরি এবং চালাতে, রান ক্লিক করুন রান করুন তারপর মেনু বার থেকে অ্যাপ চালান .

দ্রষ্টব্য: যদি আপনার বিদ্যমান প্রজেক্ট অবচয়িত ndkCompile টুল ব্যবহার করে, তাহলে CMake বা ndk-build ব্যবহার করে মাইগ্রেট করুন।

NDK ডাউনলোড করুন এবং টুল তৈরি করুন

আপনার অ্যাপের জন্য নেটিভ কোড কম্পাইল এবং ডিবাগ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন:

  • অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (NDK) : একটি টুলসেট যা আপনাকে Android এর সাথে C এবং C++ কোড ব্যবহার করতে দেয়। NDK প্ল্যাটফর্ম লাইব্রেরিগুলি সরবরাহ করে যা আপনাকে নেটিভ অ্যাক্টিভিটিগুলি পরিচালনা করতে এবং সেন্সর এবং টাচ ইনপুটের মতো শারীরিক ডিভাইসের উপাদানগুলি অ্যাক্সেস করতে দেয়।
  • CMake : একটি বাহ্যিক বিল্ড টুল যা আপনার নেটিভ লাইব্রেরি তৈরি করতে Gradle এর পাশাপাশি কাজ করে। আপনি যদি শুধুমাত্র ndk-build ব্যবহার করার পরিকল্পনা করেন তবে আপনার এই উপাদানটির প্রয়োজন নেই।
  • এলএলডিবি : অ্যান্ড্রয়েড স্টুডিওতে ডিবাগার যা নেটিভ কোড ডিবাগ করে

এই উপাদানগুলি ইনস্টল করার তথ্যের জন্য, NDK এবং CMake ইনস্টল এবং কনফিগার দেখুন।

C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করুন

নেটিভ কোডের সমর্থন সহ একটি নতুন প্রকল্প তৈরি করতে, প্রক্রিয়াটি অন্য যেকোন Android স্টুডিও প্রকল্প তৈরি করার মতো, তবে একটি অতিরিক্ত পদক্ষেপের সাথে:

  1. উইজার্ডের আপনার প্রকল্প চয়ন করুন বিভাগে, নেটিভ C++ প্রকল্পের ধরন নির্বাচন করুন।
  2. পরবর্তী ক্লিক করুন.
  3. উইজার্ডের পরবর্তী বিভাগে অন্যান্য সমস্ত ক্ষেত্র সম্পূর্ণ করুন।
  4. পরবর্তী ক্লিক করুন.
  5. উইজার্ডের কাস্টমাইজ C++ সাপোর্ট বিভাগে, আপনি C++ স্ট্যান্ডার্ড ফিল্ডের সাথে আপনার প্রজেক্ট কাস্টমাইজ করতে পারেন।
    • আপনি কোন সি++ ব্যবহার করতে চান তা নির্বাচন করতে ড্রপ-ডাউন তালিকা ব্যবহার করুন। Toolchain ডিফল্ট নির্বাচন করা ডিফল্ট CMake সেটিং ব্যবহার করে।
  6. শেষ ক্লিক করুন.

অ্যান্ড্রয়েড স্টুডিও আপনার নতুন প্রকল্প তৈরি করা শেষ করার পরে, IDE-এর বাম দিক থেকে প্রকল্প ফলকটি খুলুন এবং মেনু থেকে Android ভিউ নির্বাচন করুন। চিত্র 1 এ দেখানো হয়েছে, অ্যান্ড্রয়েড স্টুডিও সিপিপি গ্রুপ যুক্ত করেছে:

চিত্র 1. আপনার নেটিভ সোর্স এবং এক্সটার্নাল বিল্ড স্ক্রিপ্টের জন্য অ্যান্ড্রয়েড ভিউ গ্রুপ।

দ্রষ্টব্য: এই দৃশ্যটি ডিস্কে প্রকৃত ফাইলের শ্রেণিবিন্যাসকে প্রতিফলিত করে না, তবে আপনার প্রকল্পে নেভিগেট করা সহজ করতে অনুরূপ ফাইলগুলিকে গোষ্ঠীভুক্ত করে।

cpp গ্রুপ হল যেখানে আপনি সমস্ত নেটিভ সোর্স ফাইল, হেডার, CMake বা ndk-build এর জন্য স্ক্রিপ্ট তৈরি করতে পারেন এবং আপনার প্রোজেক্টের একটি অংশ প্রি-বিল্ট লাইব্রেরি খুঁজে পেতে পারেন। নতুন প্রকল্পগুলির জন্য, Android স্টুডিও একটি নমুনা C++ উৎস ফাইল তৈরি করে, native-lib.cpp , এবং এটিকে আপনার অ্যাপ মডিউলের src/main/cpp/ ডিরেক্টরিতে রাখে। এই নমুনা কোডটি একটি সাধারণ C++ ফাংশন প্রদান করে, stringFromJNI() , যা "Hello from C++" স্ট্রিং প্রদান করে। কিভাবে নতুন নেটিভ সোর্স ফাইল তৈরি করতে হয় সেই বিভাগে আপনার প্রোজেক্টে কিভাবে অতিরিক্ত সোর্স ফাইল যোগ করবেন তা শিখুন।

build.gradle ফাইলগুলি গ্র্যাডলকে কীভাবে আপনার অ্যাপ তৈরি করতে নির্দেশ দেয় তার অনুরূপ, আপনার নেটিভ লাইব্রেরি কীভাবে তৈরি করবেন তা জানতে CMake এবং ndk-build একটি বিল্ড স্ক্রিপ্ট প্রয়োজন। নতুন প্রকল্পগুলির জন্য, Android স্টুডিও একটি CMake বিল্ড স্ক্রিপ্ট, CMakeLists.txt তৈরি করে এবং এটিকে আপনার মডিউলের রুট ডিরেক্টরিতে রাখে। এই বিল্ড স্ক্রিপ্টের বিষয়বস্তু সম্পর্কে আরও জানতে, CMake কনফিগার করুন পড়ুন।

নমুনা অ্যাপ তৈরি করুন এবং চালান

আপনি রান ক্লিক করলে রান করুন তারপর মেনু বার থেকে অ্যাপ চালান , Android Studio একটি অ্যাপ তৈরি করে এবং লঞ্চ করে যা আপনার Android ডিভাইস বা এমুলেটরে "Hello from C++" পাঠ্য প্রদর্শন করে। নিম্নলিখিত সংক্ষিপ্ত বিবরণটি নমুনা অ্যাপ তৈরি এবং চালানোর জন্য ঘটে এমন ঘটনাগুলি বর্ণনা করে:

  1. Gradle আপনার বাহ্যিক বিল্ড স্ক্রিপ্ট, CMakeLists.txt কল করে।
  2. CMake একটি C++ সোর্স ফাইল, native-lib.cpp , একটি শেয়ার্ড অবজেক্ট লাইব্রেরিতে কম্পাইল করার জন্য বিল্ড স্ক্রিপ্টের কমান্ড অনুসরণ করে এবং এর নাম দেয় libnative-lib.so । Gradle তারপর অ্যাপে প্যাকেজ করে।
  3. রানটাইম চলাকালীন, অ্যাপের MainActivity System.loadLibrary() ব্যবহার করে নেটিভ লাইব্রেরি লোড করে। লাইব্রেরির নেটিভ ফাংশন, stringFromJNI() , এখন অ্যাপে উপলব্ধ।
  4. MainActivity.onCreate() stringFromJNI() কল করে, যা "Hello from C++" রিটার্ন করে এবং TextView আপডেট করতে এটি ব্যবহার করে।

Gradle অ্যাপে নেটিভ লাইব্রেরি প্যাকেজ করে কিনা তা যাচাই করতে, APK অ্যানালাইজার ব্যবহার করুন:

  1. বিল্ড > বিল্ড বান্ডেল (গুলি) / APK(গুলি) > বিল্ড APK(গুলি) নির্বাচন করুন।
  2. বিল্ড > অ্যানালাইজ APK নির্বাচন করুন।
  3. app/build/outputs/ ডিরেক্টরি থেকে APK বা AAB নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  4. চিত্র 2 তে দেখানো হয়েছে, আপনি lib/<ABI>/ এর অধীনে APK বিশ্লেষক উইন্ডোতে libnative-lib.so দেখতে পারেন।

    চিত্র 2. APK বিশ্লেষক ব্যবহার করে একটি নেটিভ লাইব্রেরি সনাক্ত করুন।

টিপ: আপনি যদি নেটিভ কোড ব্যবহার করে এমন অন্যান্য অ্যান্ড্রয়েড অ্যাপগুলির সাথে পরীক্ষা করতে চান, তাহলে ফাইল > নতুন > নমুনা আমদানিতে ক্লিক করুন এবং Ndk তালিকা থেকে একটি নমুনা প্রকল্প নির্বাচন করুন।

নতুন C/C++ সোর্স ফাইল তৈরি করুন

একটি বিদ্যমান প্রকল্পে নতুন C/C++ সোর্স ফাইল যোগ করতে, নিম্নরূপ এগিয়ে যান:

  1. আপনার অ্যাপের মূল উৎস সেটে যদি আপনার কাছে ইতিমধ্যে একটি cpp/ ডিরেক্টরি না থাকে, তাহলে নিম্নরূপ একটি তৈরি করুন:
    1. IDE এর বাম পাশে প্রজেক্ট প্যানটি খুলুন এবং মেনু থেকে প্রজেক্ট ভিউ নির্বাচন করুন।
    2. your-module > src- এ নেভিগেট করুন।
    3. প্রধান ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > ডিরেক্টরি নির্বাচন করুন।
    4. ডিরেক্টরির নাম হিসাবে cpp লিখুন এবং ঠিক আছে ক্লিক করুন।

  2. cpp/ ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > C/C++ সোর্স ফাইল নির্বাচন করুন।
  3. আপনার উৎস ফাইলের জন্য একটি নাম লিখুন, যেমন native-lib
  4. টাইপ মেনু থেকে, আপনার সোর্স ফাইলের জন্য ফাইল এক্সটেনশন নির্বাচন করুন, যেমন .cpp
    • Edit File Types এ ক্লিক করুন মেনুতে অন্যান্য ফাইলের ধরন যোগ করতে, যেমন .cxx বা .hxx । পপ আপ হওয়া নতুন ফাইল এক্সটেনশন ডায়ালগ বক্সে, সোর্স এক্সটেনশন এবং হেডার এক্সটেনশন মেনু থেকে অন্য ফাইল এক্সটেনশন নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  5. একটি হেডার ফাইল তৈরি করতে, একটি সংশ্লিষ্ট হেডার তৈরি করুন চেকবক্স নির্বাচন করুন।
  6. ওকে ক্লিক করুন।

আপনি আপনার প্রজেক্টে নতুন C/C++ ফাইল যোগ করার পরে, আপনাকে এখনও আপনার নেটিভ লাইব্রেরিতে ফাইলগুলি অন্তর্ভুক্ত করতে CMake কনফিগার করতে হবে।

অতিরিক্ত সম্পদ

আপনার অ্যাপে C/C++ কোড সমর্থন করার বিষয়ে আরও জানতে, নিম্নলিখিত সংস্থানটি চেষ্টা করুন।

কোডল্যাব

,

আপনার প্রজেক্ট মডিউলের একটি cpp ডিরেক্টরিতে কোডটি রেখে আপনার Android প্রকল্পে C এবং C++ কোড যোগ করুন। আপনি যখন আপনার প্রকল্পটি তৈরি করেন, তখন এই কোডটি একটি নেটিভ লাইব্রেরিতে সংকলিত হয় যা Gradle আপনার অ্যাপের সাথে প্যাকেজ করতে পারে। আপনার জাভা বা কোটলিন কোড জাভা নেটিভ ইন্টারফেস (জেএনআই) এর মাধ্যমে আপনার নেটিভ লাইব্রেরিতে ফাংশন কল করতে পারে। JNI ফ্রেমওয়ার্ক ব্যবহার সম্পর্কে আরও জানতে, Android এর জন্য JNI টিপস পড়ুন।

অ্যান্ড্রয়েড স্টুডিও CMake সমর্থন করে, যা ক্রস-প্ল্যাটফর্ম প্রকল্পগুলির জন্য দরকারী। অ্যান্ড্রয়েড স্টুডিও ndk-build সমর্থন করে, যা CMake এর চেয়ে দ্রুত হতে পারে কিন্তু শুধুমাত্র Android সমর্থন করে। একই মডিউলে CMake এবং ndk-build উভয়ই ব্যবহার করা বর্তমানে সমর্থিত নয়।

আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে একটি বিদ্যমান ndk-build লাইব্রেরি আমদানি করতে, কীভাবে Gradle কে আপনার নেটিভ লাইব্রেরি প্রকল্পে লিঙ্ক করবেন তা শিখুন।

এই পৃষ্ঠাটি আপনাকে দেখায় যে কীভাবে প্রয়োজনীয় বিল্ড সরঞ্জামগুলির সাথে Android স্টুডিও সেট আপ করবেন , C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করবেন এবং আপনার প্রকল্পে নতুন C/C++ ফাইল যুক্ত করবেন

পরিবর্তে আপনি একটি বিদ্যমান প্রকল্পে নেটিভ কোড যোগ করতে চান, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. নতুন নেটিভ সোর্স ফাইল তৈরি করুন এবং আপনার অ্যান্ড্রয়েড স্টুডিও প্রোজেক্টে ফাইল যোগ করুন।
    • আপনার যদি ইতিমধ্যেই নেটিভ কোড থাকে বা একটি পূর্বনির্মাণ নেটিভ লাইব্রেরি আমদানি করতে চান তবে এই ধাপটি এড়িয়ে যান।
  2. একটি লাইব্রেরিতে আপনার নেটিভ সোর্স কোড তৈরি করতে CMake কনফিগার করুন । আপনি যদি পূর্বনির্মাণ বা প্ল্যাটফর্ম লাইব্রেরির সাথে আমদানি এবং লিঙ্ক করেন তবে এই বিল্ড স্ক্রিপ্টটি প্রয়োজন।
    • আপনার যদি একটি বিদ্যমান নেটিভ লাইব্রেরি থাকে যেখানে ইতিমধ্যেই একটি CMakeLists.txt বিল্ড স্ক্রিপ্ট আছে বা ndk-build ব্যবহার করে এবং একটি Android.mk বিল্ড স্ক্রিপ্ট অন্তর্ভুক্ত করে, এই ধাপটি এড়িয়ে যান।
  3. আপনার CMake বা ndk-build স্ক্রিপ্ট ফাইলে একটি পথ প্রদান করে Gradle কনফিগার করুন । Gradle আপনার অ্যান্ড্রয়েড স্টুডিও প্রোজেক্টে সোর্স কোড আমদানি করতে এবং অ্যাপে আপনার নেটিভ লাইব্রেরি প্যাকেজ করতে বিল্ড স্ক্রিপ্ট ব্যবহার করে।

একবার আপনি আপনার প্রকল্প কনফিগার করলে, JNI ফ্রেমওয়ার্ক ব্যবহার করে Java বা Kotlin কোড থেকে আপনার নেটিভ ফাংশনগুলি অ্যাক্সেস করুন। আপনার অ্যাপ তৈরি এবং চালাতে, রান ক্লিক করুন রান করুন তারপর মেনু বার থেকে অ্যাপ চালান .

দ্রষ্টব্য: যদি আপনার বিদ্যমান প্রজেক্ট অবচয়িত ndkCompile টুল ব্যবহার করে, তাহলে CMake বা ndk-build ব্যবহার করে মাইগ্রেট করুন।

NDK ডাউনলোড করুন এবং টুল তৈরি করুন

আপনার অ্যাপের জন্য নেটিভ কোড কম্পাইল এবং ডিবাগ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন:

  • অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (NDK) : একটি টুলসেট যা আপনাকে Android এর সাথে C এবং C++ কোড ব্যবহার করতে দেয়। NDK প্ল্যাটফর্ম লাইব্রেরিগুলি সরবরাহ করে যা আপনাকে নেটিভ অ্যাক্টিভিটিগুলি পরিচালনা করতে এবং সেন্সর এবং টাচ ইনপুটের মতো শারীরিক ডিভাইসের উপাদানগুলি অ্যাক্সেস করতে দেয়।
  • CMake : একটি বাহ্যিক বিল্ড টুল যা আপনার নেটিভ লাইব্রেরি তৈরি করতে Gradle এর পাশাপাশি কাজ করে। আপনি যদি শুধুমাত্র ndk-build ব্যবহার করার পরিকল্পনা করেন তবে আপনার এই উপাদানটির প্রয়োজন নেই।
  • এলএলডিবি : অ্যান্ড্রয়েড স্টুডিওতে ডিবাগার যা নেটিভ কোড ডিবাগ করে

এই উপাদানগুলি ইনস্টল করার তথ্যের জন্য, NDK এবং CMake ইনস্টল এবং কনফিগার দেখুন।

C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করুন

নেটিভ কোডের সমর্থন সহ একটি নতুন প্রকল্প তৈরি করতে, প্রক্রিয়াটি অন্য যেকোন Android স্টুডিও প্রকল্প তৈরি করার মতো, তবে একটি অতিরিক্ত পদক্ষেপের সাথে:

  1. উইজার্ডের আপনার প্রকল্প চয়ন করুন বিভাগে, নেটিভ C++ প্রকল্পের ধরন নির্বাচন করুন।
  2. পরবর্তী ক্লিক করুন.
  3. উইজার্ডের পরবর্তী বিভাগে অন্যান্য সমস্ত ক্ষেত্র সম্পূর্ণ করুন।
  4. পরবর্তী ক্লিক করুন.
  5. উইজার্ডের কাস্টমাইজ C++ সাপোর্ট বিভাগে, আপনি C++ স্ট্যান্ডার্ড ফিল্ডের সাথে আপনার প্রজেক্ট কাস্টমাইজ করতে পারেন।
    • আপনি কোন সি++ ব্যবহার করতে চান তা নির্বাচন করতে ড্রপ-ডাউন তালিকা ব্যবহার করুন। Toolchain ডিফল্ট নির্বাচন করা ডিফল্ট CMake সেটিং ব্যবহার করে।
  6. শেষ ক্লিক করুন.

অ্যান্ড্রয়েড স্টুডিও আপনার নতুন প্রকল্প তৈরি করা শেষ করার পরে, IDE-এর বাম দিক থেকে প্রকল্প ফলকটি খুলুন এবং মেনু থেকে Android ভিউ নির্বাচন করুন। চিত্র 1 এ দেখানো হয়েছে, অ্যান্ড্রয়েড স্টুডিও সিপিপি গ্রুপ যুক্ত করেছে:

চিত্র 1. আপনার নেটিভ সোর্স এবং এক্সটার্নাল বিল্ড স্ক্রিপ্টের জন্য অ্যান্ড্রয়েড ভিউ গ্রুপ।

দ্রষ্টব্য: এই দৃশ্যটি ডিস্কে প্রকৃত ফাইলের শ্রেণিবিন্যাসকে প্রতিফলিত করে না, তবে আপনার প্রকল্পে নেভিগেট করা সহজ করতে অনুরূপ ফাইলগুলিকে গোষ্ঠীভুক্ত করে।

cpp গ্রুপ হল যেখানে আপনি সমস্ত নেটিভ সোর্স ফাইল, হেডার, CMake বা ndk-build এর জন্য স্ক্রিপ্ট তৈরি করতে পারেন এবং আপনার প্রোজেক্টের একটি অংশ প্রি-বিল্ট লাইব্রেরি খুঁজে পেতে পারেন। নতুন প্রকল্পগুলির জন্য, Android স্টুডিও একটি নমুনা C++ উৎস ফাইল তৈরি করে, native-lib.cpp , এবং এটিকে আপনার অ্যাপ মডিউলের src/main/cpp/ ডিরেক্টরিতে রাখে। এই নমুনা কোডটি একটি সাধারণ C++ ফাংশন প্রদান করে, stringFromJNI() , যা "Hello from C++" স্ট্রিং প্রদান করে। কিভাবে নতুন নেটিভ সোর্স ফাইল তৈরি করতে হয় সেই বিভাগে আপনার প্রোজেক্টে কিভাবে অতিরিক্ত সোর্স ফাইল যোগ করবেন তা শিখুন।

build.gradle ফাইলগুলি গ্র্যাডলকে কীভাবে আপনার অ্যাপ তৈরি করতে নির্দেশ দেয় তার অনুরূপ, আপনার নেটিভ লাইব্রেরি কীভাবে তৈরি করবেন তা জানতে CMake এবং ndk-build একটি বিল্ড স্ক্রিপ্ট প্রয়োজন। নতুন প্রকল্পগুলির জন্য, Android স্টুডিও একটি CMake বিল্ড স্ক্রিপ্ট, CMakeLists.txt তৈরি করে এবং এটিকে আপনার মডিউলের রুট ডিরেক্টরিতে রাখে। এই বিল্ড স্ক্রিপ্টের বিষয়বস্তু সম্পর্কে আরও জানতে, CMake কনফিগার করুন পড়ুন।

নমুনা অ্যাপ তৈরি করুন এবং চালান

আপনি রান ক্লিক করলে রান করুন তারপর মেনু বার থেকে অ্যাপ চালান , Android Studio একটি অ্যাপ তৈরি করে এবং লঞ্চ করে যা আপনার Android ডিভাইস বা এমুলেটরে "Hello from C++" পাঠ্য প্রদর্শন করে। নিম্নলিখিত সংক্ষিপ্ত বিবরণটি নমুনা অ্যাপ তৈরি এবং চালানোর জন্য ঘটে এমন ঘটনাগুলি বর্ণনা করে:

  1. Gradle আপনার বাহ্যিক বিল্ড স্ক্রিপ্ট, CMakeLists.txt কল করে।
  2. CMake একটি C++ সোর্স ফাইল, native-lib.cpp , একটি শেয়ার্ড অবজেক্ট লাইব্রেরিতে কম্পাইল করার জন্য বিল্ড স্ক্রিপ্টের কমান্ড অনুসরণ করে এবং এর নাম দেয় libnative-lib.so । Gradle তারপর অ্যাপে প্যাকেজ করে।
  3. রানটাইম চলাকালীন, অ্যাপের MainActivity System.loadLibrary() ব্যবহার করে নেটিভ লাইব্রেরি লোড করে। লাইব্রেরির নেটিভ ফাংশন, stringFromJNI() , এখন অ্যাপে উপলব্ধ।
  4. MainActivity.onCreate() stringFromJNI() কল করে, যা "Hello from C++" রিটার্ন করে এবং TextView আপডেট করতে এটি ব্যবহার করে।

Gradle অ্যাপে নেটিভ লাইব্রেরি প্যাকেজ করে কিনা তা যাচাই করতে, APK অ্যানালাইজার ব্যবহার করুন:

  1. বিল্ড > বিল্ড বান্ডেল (গুলি) / APK(গুলি) > বিল্ড APK(গুলি) নির্বাচন করুন।
  2. বিল্ড > অ্যানালাইজ APK নির্বাচন করুন।
  3. app/build/outputs/ ডিরেক্টরি থেকে APK বা AAB নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  4. চিত্র 2 তে দেখানো হয়েছে, আপনি lib/<ABI>/ এর অধীনে APK বিশ্লেষক উইন্ডোতে libnative-lib.so দেখতে পারেন।

    চিত্র 2. APK বিশ্লেষক ব্যবহার করে একটি নেটিভ লাইব্রেরি সনাক্ত করুন।

টিপ: আপনি যদি নেটিভ কোড ব্যবহার করে এমন অন্যান্য অ্যান্ড্রয়েড অ্যাপগুলির সাথে পরীক্ষা করতে চান, তাহলে ফাইল > নতুন > নমুনা আমদানিতে ক্লিক করুন এবং Ndk তালিকা থেকে একটি নমুনা প্রকল্প নির্বাচন করুন।

নতুন C/C++ সোর্স ফাইল তৈরি করুন

একটি বিদ্যমান প্রকল্পে নতুন C/C++ সোর্স ফাইল যোগ করতে, নিম্নরূপ এগিয়ে যান:

  1. আপনার অ্যাপের মূল উৎস সেটে যদি আপনার কাছে ইতিমধ্যে একটি cpp/ ডিরেক্টরি না থাকে, তাহলে নিম্নরূপ একটি তৈরি করুন:
    1. IDE এর বাম পাশে প্রজেক্ট প্যানটি খুলুন এবং মেনু থেকে প্রজেক্ট ভিউ নির্বাচন করুন।
    2. your-module > src- এ নেভিগেট করুন।
    3. প্রধান ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > ডিরেক্টরি নির্বাচন করুন।
    4. ডিরেক্টরির নাম হিসাবে cpp লিখুন এবং ঠিক আছে ক্লিক করুন।

  2. cpp/ ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > C/C++ সোর্স ফাইল নির্বাচন করুন।
  3. আপনার উৎস ফাইলের জন্য একটি নাম লিখুন, যেমন native-lib
  4. টাইপ মেনু থেকে, আপনার সোর্স ফাইলের জন্য ফাইল এক্সটেনশন নির্বাচন করুন, যেমন .cpp
    • Edit File Types এ ক্লিক করুন মেনুতে অন্যান্য ফাইলের ধরন যোগ করতে, যেমন .cxx বা .hxx । পপ আপ হওয়া নতুন ফাইল এক্সটেনশন ডায়ালগ বক্সে, সোর্স এক্সটেনশন এবং হেডার এক্সটেনশন মেনু থেকে অন্য ফাইল এক্সটেনশন নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  5. একটি হেডার ফাইল তৈরি করতে, একটি সংশ্লিষ্ট হেডার তৈরি করুন চেকবক্স নির্বাচন করুন।
  6. ওকে ক্লিক করুন।

আপনি আপনার প্রজেক্টে নতুন C/C++ ফাইল যোগ করার পরে, আপনাকে এখনও আপনার নেটিভ লাইব্রেরিতে ফাইলগুলি অন্তর্ভুক্ত করতে CMake কনফিগার করতে হবে।

অতিরিক্ত সম্পদ

আপনার অ্যাপে C/C++ কোড সমর্থন করার বিষয়ে আরও জানতে, নিম্নলিখিত সংস্থানটি চেষ্টা করুন।

কোডল্যাব

,

আপনার প্রজেক্ট মডিউলের একটি cpp ডিরেক্টরিতে কোডটি রেখে আপনার Android প্রকল্পে C এবং C++ কোড যোগ করুন। আপনি যখন আপনার প্রকল্পটি তৈরি করেন, তখন এই কোডটি একটি নেটিভ লাইব্রেরিতে সংকলিত হয় যা Gradle আপনার অ্যাপের সাথে প্যাকেজ করতে পারে। আপনার জাভা বা কোটলিন কোড জাভা নেটিভ ইন্টারফেস (জেএনআই) এর মাধ্যমে আপনার নেটিভ লাইব্রেরিতে ফাংশন কল করতে পারে। JNI ফ্রেমওয়ার্ক ব্যবহার সম্পর্কে আরও জানতে, Android এর জন্য JNI টিপস পড়ুন।

অ্যান্ড্রয়েড স্টুডিও CMake সমর্থন করে, যা ক্রস-প্ল্যাটফর্ম প্রকল্পগুলির জন্য দরকারী। অ্যান্ড্রয়েড স্টুডিও ndk-build সমর্থন করে, যা CMake এর চেয়ে দ্রুত হতে পারে কিন্তু শুধুমাত্র Android সমর্থন করে। একই মডিউলে CMake এবং ndk-build উভয়ই ব্যবহার করা বর্তমানে সমর্থিত নয়।

আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে একটি বিদ্যমান ndk-build লাইব্রেরি আমদানি করতে, কীভাবে Gradle কে আপনার নেটিভ লাইব্রেরি প্রকল্পে লিঙ্ক করবেন তা শিখুন।

এই পৃষ্ঠাটি আপনাকে দেখায় যে কীভাবে প্রয়োজনীয় বিল্ড সরঞ্জামগুলির সাথে Android স্টুডিও সেট আপ করবেন , C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করবেন এবং আপনার প্রকল্পে নতুন C/C++ ফাইল যুক্ত করবেন

পরিবর্তে আপনি একটি বিদ্যমান প্রকল্পে নেটিভ কোড যোগ করতে চান, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. নতুন নেটিভ সোর্স ফাইল তৈরি করুন এবং আপনার অ্যান্ড্রয়েড স্টুডিও প্রোজেক্টে ফাইল যোগ করুন।
    • আপনার যদি ইতিমধ্যেই নেটিভ কোড থাকে বা একটি পূর্বনির্মাণ নেটিভ লাইব্রেরি আমদানি করতে চান তবে এই ধাপটি এড়িয়ে যান।
  2. একটি লাইব্রেরিতে আপনার নেটিভ সোর্স কোড তৈরি করতে CMake কনফিগার করুন । আপনি যদি পূর্বনির্মাণ বা প্ল্যাটফর্ম লাইব্রেরির সাথে আমদানি এবং লিঙ্ক করেন তবে এই বিল্ড স্ক্রিপ্টটি প্রয়োজন।
    • আপনার যদি একটি বিদ্যমান নেটিভ লাইব্রেরি থাকে যেখানে ইতিমধ্যেই একটি CMakeLists.txt বিল্ড স্ক্রিপ্ট আছে বা ndk-build ব্যবহার করে এবং একটি Android.mk বিল্ড স্ক্রিপ্ট অন্তর্ভুক্ত করে, এই ধাপটি এড়িয়ে যান।
  3. আপনার CMake বা ndk-build স্ক্রিপ্ট ফাইলে একটি পথ প্রদান করে Gradle কনফিগার করুন । Gradle আপনার অ্যান্ড্রয়েড স্টুডিও প্রোজেক্টে সোর্স কোড আমদানি করতে এবং অ্যাপে আপনার নেটিভ লাইব্রেরি প্যাকেজ করতে বিল্ড স্ক্রিপ্ট ব্যবহার করে।

একবার আপনি আপনার প্রকল্প কনফিগার করলে, JNI ফ্রেমওয়ার্ক ব্যবহার করে Java বা Kotlin কোড থেকে আপনার নেটিভ ফাংশনগুলি অ্যাক্সেস করুন। আপনার অ্যাপ তৈরি এবং চালাতে, রান ক্লিক করুন রান করুন তারপর মেনু বার থেকে অ্যাপ চালান .

দ্রষ্টব্য: যদি আপনার বিদ্যমান প্রজেক্ট অবচয়িত ndkCompile টুল ব্যবহার করে, তাহলে CMake বা ndk-build ব্যবহার করে মাইগ্রেট করুন।

NDK ডাউনলোড করুন এবং টুল তৈরি করুন

আপনার অ্যাপের জন্য নেটিভ কোড কম্পাইল এবং ডিবাগ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন:

  • অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (NDK) : একটি টুলসেট যা আপনাকে Android এর সাথে C এবং C++ কোড ব্যবহার করতে দেয়। NDK প্ল্যাটফর্ম লাইব্রেরিগুলি সরবরাহ করে যা আপনাকে নেটিভ অ্যাক্টিভিটিগুলি পরিচালনা করতে এবং সেন্সর এবং টাচ ইনপুটের মতো শারীরিক ডিভাইসের উপাদানগুলি অ্যাক্সেস করতে দেয়।
  • CMake : একটি বাহ্যিক বিল্ড টুল যা আপনার নেটিভ লাইব্রেরি তৈরি করতে Gradle এর পাশাপাশি কাজ করে। আপনি যদি শুধুমাত্র ndk-build ব্যবহার করার পরিকল্পনা করেন তবে আপনার এই উপাদানটির প্রয়োজন নেই।
  • এলএলডিবি : অ্যান্ড্রয়েড স্টুডিওতে ডিবাগার যা নেটিভ কোড ডিবাগ করে

এই উপাদানগুলি ইনস্টল করার তথ্যের জন্য, NDK এবং CMake ইনস্টল এবং কনফিগার করুন দেখুন।

C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করুন

নেটিভ কোডের সমর্থন সহ একটি নতুন প্রকল্প তৈরি করতে, প্রক্রিয়াটি অন্য যেকোন Android স্টুডিও প্রকল্প তৈরি করার মতো, তবে একটি অতিরিক্ত পদক্ষেপের সাথে:

  1. উইজার্ডের আপনার প্রকল্প চয়ন করুন বিভাগে, নেটিভ C++ প্রকল্পের ধরন নির্বাচন করুন।
  2. পরবর্তী ক্লিক করুন.
  3. উইজার্ডের পরবর্তী বিভাগে অন্যান্য সমস্ত ক্ষেত্র সম্পূর্ণ করুন।
  4. পরবর্তী ক্লিক করুন.
  5. উইজার্ডের কাস্টমাইজ C++ সাপোর্ট বিভাগে, আপনি C++ স্ট্যান্ডার্ড ফিল্ডের সাথে আপনার প্রজেক্ট কাস্টমাইজ করতে পারেন।
    • আপনি কোন সি++ ব্যবহার করতে চান তা নির্বাচন করতে ড্রপ-ডাউন তালিকা ব্যবহার করুন। Toolchain ডিফল্ট নির্বাচন করা ডিফল্ট CMake সেটিং ব্যবহার করে।
  6. শেষ ক্লিক করুন.

অ্যান্ড্রয়েড স্টুডিও আপনার নতুন প্রকল্প তৈরি করা শেষ করার পরে, IDE-এর বাম দিক থেকে প্রকল্প ফলকটি খুলুন এবং মেনু থেকে Android ভিউ নির্বাচন করুন। চিত্র 1 এ দেখানো হয়েছে, অ্যান্ড্রয়েড স্টুডিও সিপিপি গ্রুপ যুক্ত করেছে:

চিত্র 1. আপনার নেটিভ সোর্স এবং এক্সটার্নাল বিল্ড স্ক্রিপ্টের জন্য অ্যান্ড্রয়েড ভিউ গ্রুপ।

দ্রষ্টব্য: এই দৃশ্যটি ডিস্কে প্রকৃত ফাইলের শ্রেণিবিন্যাসকে প্রতিফলিত করে না, তবে আপনার প্রকল্পে নেভিগেট করা সহজ করতে অনুরূপ ফাইলগুলিকে গোষ্ঠীভুক্ত করে।

cpp গ্রুপ হল যেখানে আপনি সমস্ত নেটিভ সোর্স ফাইল, হেডার, CMake বা ndk-build এর জন্য স্ক্রিপ্ট তৈরি করতে পারেন এবং আপনার প্রোজেক্টের একটি অংশ প্রি-বিল্ট লাইব্রেরি খুঁজে পেতে পারেন। নতুন প্রকল্পগুলির জন্য, Android স্টুডিও একটি নমুনা C++ উৎস ফাইল তৈরি করে, native-lib.cpp , এবং এটিকে আপনার অ্যাপ মডিউলের src/main/cpp/ ডিরেক্টরিতে রাখে। এই নমুনা কোডটি একটি সাধারণ C++ ফাংশন প্রদান করে, stringFromJNI() , যা "Hello from C++" স্ট্রিং প্রদান করে। কিভাবে নতুন নেটিভ সোর্স ফাইল তৈরি করতে হয় সেই বিভাগে আপনার প্রোজেক্টে কিভাবে অতিরিক্ত সোর্স ফাইল যোগ করবেন তা শিখুন।

build.gradle ফাইলগুলি গ্র্যাডলকে কীভাবে আপনার অ্যাপ তৈরি করতে নির্দেশ দেয় তার অনুরূপ, আপনার নেটিভ লাইব্রেরি কীভাবে তৈরি করবেন তা জানতে CMake এবং ndk-build একটি বিল্ড স্ক্রিপ্ট প্রয়োজন। নতুন প্রকল্পগুলির জন্য, Android স্টুডিও একটি CMake বিল্ড স্ক্রিপ্ট, CMakeLists.txt তৈরি করে এবং এটিকে আপনার মডিউলের রুট ডিরেক্টরিতে রাখে। এই বিল্ড স্ক্রিপ্টের বিষয়বস্তু সম্পর্কে আরও জানতে, CMake কনফিগার করুন পড়ুন।

নমুনা অ্যাপ তৈরি করুন এবং চালান

আপনি রান ক্লিক করলে রান করুন তারপর মেনু বার থেকে অ্যাপ চালান , Android Studio একটি অ্যাপ তৈরি করে এবং লঞ্চ করে যা আপনার Android ডিভাইস বা এমুলেটরে "Hello from C++" পাঠ্য প্রদর্শন করে। নিম্নলিখিত সংক্ষিপ্ত বিবরণটি নমুনা অ্যাপ তৈরি এবং চালানোর জন্য ঘটে এমন ঘটনাগুলি বর্ণনা করে:

  1. Gradle আপনার বাহ্যিক বিল্ড স্ক্রিপ্ট, CMakeLists.txt কল করে।
  2. CMake একটি C++ সোর্স ফাইল, native-lib.cpp , একটি শেয়ার্ড অবজেক্ট লাইব্রেরিতে কম্পাইল করার জন্য বিল্ড স্ক্রিপ্টের কমান্ড অনুসরণ করে এবং এর নাম দেয় libnative-lib.so । Gradle তারপর অ্যাপে প্যাকেজ করে।
  3. রানটাইম চলাকালীন, অ্যাপের MainActivity System.loadLibrary() ব্যবহার করে নেটিভ লাইব্রেরি লোড করে। লাইব্রেরির নেটিভ ফাংশন, stringFromJNI() , এখন অ্যাপে উপলব্ধ।
  4. MainActivity.onCreate() stringFromJNI() কল করে, যা "Hello from C++" রিটার্ন করে এবং TextView আপডেট করতে এটি ব্যবহার করে।

Gradle অ্যাপে নেটিভ লাইব্রেরি প্যাকেজ করে কিনা তা যাচাই করতে, APK অ্যানালাইজার ব্যবহার করুন:

  1. বিল্ড > বিল্ড বান্ডেল (গুলি) / APK(গুলি) > বিল্ড APK(গুলি) নির্বাচন করুন।
  2. বিল্ড > অ্যানালাইজ APK নির্বাচন করুন।
  3. app/build/outputs/ ডিরেক্টরি থেকে APK বা AAB নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  4. চিত্র 2 তে দেখানো হয়েছে, আপনি lib/<ABI>/ এর অধীনে APK বিশ্লেষক উইন্ডোতে libnative-lib.so দেখতে পারেন।

    চিত্র 2. APK বিশ্লেষক ব্যবহার করে একটি নেটিভ লাইব্রেরি সনাক্ত করুন।

টিপ: আপনি যদি নেটিভ কোড ব্যবহার করে এমন অন্যান্য অ্যান্ড্রয়েড অ্যাপগুলির সাথে পরীক্ষা করতে চান, তাহলে ফাইল > নতুন > নমুনা আমদানিতে ক্লিক করুন এবং Ndk তালিকা থেকে একটি নমুনা প্রকল্প নির্বাচন করুন।

নতুন C/C++ সোর্স ফাইল তৈরি করুন

একটি বিদ্যমান প্রকল্পে নতুন C/C++ সোর্স ফাইল যোগ করতে, নিম্নরূপ এগিয়ে যান:

  1. আপনার অ্যাপের মূল উৎস সেটে যদি আপনার কাছে ইতিমধ্যে একটি cpp/ ডিরেক্টরি না থাকে, তাহলে নিম্নরূপ একটি তৈরি করুন:
    1. IDE এর বাম পাশে প্রজেক্ট প্যানটি খুলুন এবং মেনু থেকে প্রজেক্ট ভিউ নির্বাচন করুন।
    2. your-module > src- এ নেভিগেট করুন।
    3. প্রধান ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > ডিরেক্টরি নির্বাচন করুন।
    4. ডিরেক্টরির নাম হিসাবে cpp লিখুন এবং ঠিক আছে ক্লিক করুন।

  2. cpp/ ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > C/C++ সোর্স ফাইল নির্বাচন করুন।
  3. আপনার উৎস ফাইলের জন্য একটি নাম লিখুন, যেমন native-lib
  4. টাইপ মেনু থেকে, আপনার সোর্স ফাইলের জন্য ফাইল এক্সটেনশন নির্বাচন করুন, যেমন .cpp
    • Edit File Types এ ক্লিক করুন মেনুতে অন্যান্য ফাইলের ধরন যোগ করতে, যেমন .cxx বা .hxx । পপ আপ হওয়া নতুন ফাইল এক্সটেনশন ডায়ালগ বক্সে, সোর্স এক্সটেনশন এবং হেডার এক্সটেনশন মেনু থেকে অন্য ফাইল এক্সটেনশন নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
  5. একটি হেডার ফাইল তৈরি করতে, একটি সংশ্লিষ্ট হেডার তৈরি করুন চেকবক্স নির্বাচন করুন।
  6. ওকে ক্লিক করুন।

আপনি আপনার প্রজেক্টে নতুন C/C++ ফাইল যোগ করার পরে, আপনাকে এখনও আপনার নেটিভ লাইব্রেরিতে ফাইলগুলি অন্তর্ভুক্ত করতে CMake কনফিগার করতে হবে।

অতিরিক্ত সম্পদ

আপনার অ্যাপে C/C++ কোড সমর্থন করার বিষয়ে আরও জানতে, নিম্নলিখিত সংস্থানটি চেষ্টা করুন।

কোডল্যাব