আপনার প্রোজেক্ট মডিউলের একটি cpp ডিরেক্টরিতে কোডটি রেখে আপনার অ্যান্ড্রয়েড প্রোজেক্টে C এবং C++ কোড যোগ করুন। যখন আপনি আপনার প্রোজেক্ট তৈরি করেন, তখন এই কোডটি একটি নেটিভ লাইব্রেরিতে কম্পাইল করা হয় যা Gradle আপনার অ্যাপের সাথে প্যাকেজ করতে পারে। আপনার জাভা বা কোটলিন কোড জাভা নেটিভ ইন্টারফেস (JNI) এর মাধ্যমে আপনার নেটিভ লাইব্রেরিতে ফাংশন কল করতে পারে। JNI ফ্রেমওয়ার্ক ব্যবহার সম্পর্কে আরও জানতে, Android এর জন্য JNI টিপস পড়ুন।
অ্যান্ড্রয়েড স্টুডিও CMake সমর্থন করে, যা ক্রস-প্ল্যাটফর্ম প্রকল্পের জন্য কার্যকর। অ্যান্ড্রয়েড স্টুডিও ndk-build সমর্থন করে, যা CMake এর চেয়ে দ্রুততর হতে পারে তবে কেবল Android সমর্থন করে। একই মডিউলে CMake এবং ndk-build উভয় ব্যবহার বর্তমানে সমর্থিত নয়।
আপনার অ্যান্ড্রয়েড স্টুডিও প্রজেক্টে একটি বিদ্যমান ndk-build লাইব্রেরি আমদানি করতে, Gradle কে আপনার নেটিভ লাইব্রেরি প্রজেক্টের সাথে কীভাবে লিঙ্ক করবেন তা শিখুন।
এই পৃষ্ঠাটি আপনাকে দেখায় কিভাবে প্রয়োজনীয় বিল্ড টুল দিয়ে অ্যান্ড্রয়েড স্টুডিও সেট আপ করবেন , C/C++ সাপোর্ট সহ একটি নতুন প্রকল্প তৈরি করবেন এবং আপনার প্রকল্পে নতুন C/C++ ফাইল যুক্ত করবেন ।
পরিবর্তে যদি আপনি একটি বিদ্যমান প্রকল্পে নেটিভ কোড যোগ করতে চান, তাহলে এই পদক্ষেপগুলি অনুসরণ করুন:
- নতুন নেটিভ সোর্স ফাইল তৈরি করুন এবং আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে ফাইলগুলি যুক্ত করুন।
- যদি আপনার ইতিমধ্যেই নেটিভ কোড থাকে অথবা একটি পূর্বনির্মিত নেটিভ লাইব্রেরি আমদানি করতে চান, তাহলে এই ধাপটি এড়িয়ে যান।
- আপনার নেটিভ সোর্স কোডটি একটি লাইব্রেরিতে তৈরি করতে CMake কনফিগার করুন । আপনি যদি পূর্বনির্মিত বা প্ল্যাটফর্ম লাইব্রেরির সাথে আমদানি এবং লিঙ্ক করেন তবে এই বিল্ড স্ক্রিপ্টটি প্রয়োজন।
- যদি আপনার কাছে এমন কোনও নেটিভ লাইব্রেরি থাকে যার ইতিমধ্যেই একটি
CMakeLists.txtবিল্ড স্ক্রিপ্ট আছে অথবাndk-buildব্যবহার করে এবং একটিAndroid.mkবিল্ড স্ক্রিপ্ট অন্তর্ভুক্ত করে, তাহলে এই ধাপটি এড়িয়ে যান।
- যদি আপনার কাছে এমন কোনও নেটিভ লাইব্রেরি থাকে যার ইতিমধ্যেই একটি
- আপনার CMake অথবা
ndk-buildস্ক্রিপ্ট ফাইলে একটি পাথ প্রদান করে Gradle কনফিগার করুন । Gradle আপনার Android Studio প্রজেক্টে সোর্স কোড আমদানি করতে এবং আপনার নেটিভ লাইব্রেরিটি অ্যাপে প্যাকেজ করতে বিল্ড স্ক্রিপ্ট ব্যবহার করে।
একবার আপনার প্রোজেক্ট কনফিগার করার পরে, JNI ফ্রেমওয়ার্ক ব্যবহার করে জাভা বা কোটলিন কোড থেকে আপনার নেটিভ ফাংশনগুলি অ্যাক্সেস করুন। আপনার অ্যাপ তৈরি এবং রান করতে, Run এ ক্লিক করুন।
.
দ্রষ্টব্য: যদি আপনার বিদ্যমান প্রকল্পটি অবচিত ndkCompile টুল ব্যবহার করে, তাহলে CMake অথবা ndk-build ব্যবহার করে মাইগ্রেট করুন।
NDK এবং বিল্ড টুল ডাউনলোড করুন
আপনার অ্যাপের জন্য নেটিভ কোড কম্পাইল এবং ডিবাগ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন:
- অ্যান্ড্রয়েড নেটিভ ডেভেলপমেন্ট কিট (NDK) : একটি টুলসেট যা আপনাকে অ্যান্ড্রয়েডের সাথে C এবং C++ কোড ব্যবহার করতে দেয়। NDK প্ল্যাটফর্ম লাইব্রেরি প্রদান করে যা আপনাকে স্থানীয় কার্যকলাপ পরিচালনা করতে এবং সেন্সর এবং টাচ ইনপুটের মতো ভৌত ডিভাইস উপাদানগুলি অ্যাক্সেস করতে দেয়।
- CMake : একটি বহিরাগত বিল্ড টুল যা আপনার নেটিভ লাইব্রেরি তৈরি করতে Gradle এর সাথে কাজ করে। যদি আপনি শুধুমাত্র
ndk-buildব্যবহার করার পরিকল্পনা করেন তবে আপনার এই উপাদানটির প্রয়োজন নেই। - LLDB : অ্যান্ড্রয়েড স্টুডিওতে ডিবাগার যা নেটিভ কোড ডিবাগ করে ।
এই উপাদানগুলি ইনস্টল করার বিষয়ে তথ্যের জন্য, NDK এবং CMake ইনস্টল এবং কনফিগার করুন দেখুন।
C/C++ সাপোর্ট সহ একটি নতুন প্রকল্প তৈরি করুন
নেটিভ কোড সমর্থন করে একটি নতুন প্রকল্প তৈরি করার প্রক্রিয়াটি অন্য যেকোনো অ্যান্ড্রয়েড স্টুডিও প্রকল্প তৈরির অনুরূপ, তবে একটি অতিরিক্ত পদক্ষেপ সহ:
- উইজার্ডের " আপনার প্রকল্প নির্বাচন করুন" বিভাগে, নেটিভ C++ প্রকল্পের ধরণটি নির্বাচন করুন।
- পরবর্তী ক্লিক করুন।
- উইজার্ডের পরবর্তী অংশে অন্যান্য সমস্ত ক্ষেত্র পূরণ করুন।
- পরবর্তী ক্লিক করুন।
- উইজার্ডের Customize C++ সাপোর্ট বিভাগে, আপনি C++ স্ট্যান্ডার্ড ফিল্ড ব্যবহার করে আপনার প্রকল্পটি কাস্টমাইজ করতে পারেন।
- আপনি C++ এর কোন স্ট্যান্ডার্ডাইজেশন ব্যবহার করতে চান তা নির্বাচন করতে ড্রপ-ডাউন তালিকাটি ব্যবহার করুন। Toolchain Default নির্বাচন করলে ডিফল্ট CMake সেটিং ব্যবহার করা হয়।
- Finish এ ক্লিক করুন।
অ্যান্ড্রয়েড স্টুডিও আপনার নতুন প্রজেক্ট তৈরি করা শেষ করার পর, IDE এর বাম দিক থেকে প্রজেক্ট প্যানটি খুলুন এবং মেনু থেকে অ্যান্ড্রয়েড ভিউ নির্বাচন করুন। চিত্র ১-এ দেখানো হয়েছে, অ্যান্ড্রয়েড স্টুডিও cpp গ্রুপ যোগ করে:

চিত্র ১. আপনার নেটিভ সোর্স এবং এক্সটার্নাল বিল্ড স্ক্রিপ্টের জন্য অ্যান্ড্রয়েড ভিউ গ্রুপ।
দ্রষ্টব্য: এই ভিউটি ডিস্কে প্রকৃত ফাইল শ্রেণিবিন্যাস প্রতিফলিত করে না, তবে আপনার প্রকল্পের নেভিগেট সহজ করার জন্য অনুরূপ ফাইলগুলিকে গোষ্ঠীভুক্ত করে।
cpp গ্রুপ হল এমন একটি জায়গা যেখানে আপনি সমস্ত নেটিভ সোর্স ফাইল, হেডার, CMake অথবা ndk-build জন্য বিল্ড স্ক্রিপ্ট এবং আপনার প্রোজেক্টের অংশ হিসেবে ব্যবহৃত প্রি-বিল্ট লাইব্রেরি খুঁজে পাবেন। নতুন প্রোজেক্টের জন্য, Android Studio একটি নমুনা C++ সোর্স ফাইল, native-lib.cpp তৈরি করে এবং এটি আপনার অ্যাপ মডিউলের src/main/cpp/ ডিরেক্টরিতে রাখে। এই নমুনা কোডটি একটি সহজ C++ ফাংশন, stringFromJNI() প্রদান করে, যা "Hello from C++" স্ট্রিংটি ফেরত দেয়। নতুন নেটিভ সোর্স ফাইল তৈরি করার বিভাগ থেকে আপনার প্রোজেক্টে অতিরিক্ত সোর্স ফাইল কীভাবে যুক্ত করবেন তা শিখুন।
build.gradle ফাইলগুলি Gradle কে আপনার অ্যাপ তৈরি করার নির্দেশ দেয়, ঠিক যেমন CMake এবং ndk-build আপনার নেটিভ লাইব্রেরি তৈরি করার জন্য একটি build স্ক্রিপ্ট প্রয়োজন। নতুন প্রকল্পের জন্য, Android Studio একটি CMake build স্ক্রিপ্ট, CMakeLists.txt তৈরি করে এবং এটি আপনার মডিউলের রুট ডিরেক্টরিতে রাখে। এই build স্ক্রিপ্টের বিষয়বস্তু সম্পর্কে আরও জানতে, Configure CMake পড়ুন।
নমুনা অ্যাপ তৈরি করুন এবং চালান
যখন আপনি রান ক্লিক করবেন
, অ্যান্ড্রয়েড স্টুডিও এমন একটি অ্যাপ তৈরি করে এবং চালু করে যা আপনার অ্যান্ড্রয়েড ডিভাইস বা এমুলেটরে "হ্যালো ফ্রম সি++" লেখাটি প্রদর্শন করে। নিম্নলিখিত সারসংক্ষেপে নমুনা অ্যাপ তৈরি এবং চালানোর সময় ঘটে যাওয়া ঘটনাগুলি বর্ণনা করা হয়েছে:
- গ্র্যাডেল আপনার এক্সটার্নাল বিল্ড স্ক্রিপ্ট,
CMakeLists.txt-এ কল করে। - CMake বিল্ড স্ক্রিপ্টের কমান্ড অনুসরণ করে একটি C++ সোর্স ফাইল,
native-lib.cpp, একটি শেয়ার্ড অবজেক্ট লাইব্রেরিতে কম্পাইল করে এবং এর নাম দেয়libnative-lib.so। এরপর Gradle এটিকে অ্যাপে প্যাকেজ করে। - রানটাইম চলাকালীন, অ্যাপের
MainActivitySystem.loadLibrary()ব্যবহার করে নেটিভ লাইব্রেরি লোড করে। লাইব্রেরির নেটিভ ফাংশন,stringFromJNI(), এখন অ্যাপে উপলব্ধ। -
MainActivity.onCreate()stringFromJNI()কল করে, যা"Hello from C++"প্রদান করে এবংTextViewআপডেট করার জন্য এটি ব্যবহার করে।
Gradle অ্যাপের নেটিভ লাইব্রেরি প্যাকেজ করে কিনা তা যাচাই করতে, APK Analyzer ব্যবহার করুন:
- বিল্ড > বিল্ড বান্ডেল (গুলি) / APK (গুলি) > বিল্ড APK (গুলি) নির্বাচন করুন।
- বিল্ড > বিশ্লেষণ APK নির্বাচন করুন।
-
app/build/outputs/ডিরেক্টরি থেকে APK অথবা AAB নির্বাচন করুন এবং OK এ ক্লিক করুন। - চিত্র ২-এ দেখানো হয়েছে, আপনি
lib/<ABI>/অধীনে APK বিশ্লেষক উইন্ডোতেlibnative-lib.soদেখতে পাবেন।
চিত্র ২. APK বিশ্লেষক ব্যবহার করে একটি নেটিভ লাইব্রেরি সনাক্ত করুন।
টিপস: যদি আপনি অন্যান্য অ্যান্ড্রয়েড অ্যাপের সাথে পরীক্ষা করতে চান যা নেটিভ কোড ব্যবহার করে, তাহলে ফাইল > নতুন > নমুনা আমদানি করুন এ ক্লিক করুন এবং Ndk তালিকা থেকে একটি নমুনা প্রকল্প নির্বাচন করুন।
নতুন C/C++ সোর্স ফাইল তৈরি করুন
একটি বিদ্যমান প্রকল্পে নতুন C/C++ সোর্স ফাইল যোগ করতে, নিম্নলিখিত পদ্ধতি অনুসরণ করুন:
- যদি আপনার অ্যাপের মূল উৎস সেটে ইতিমধ্যেই একটি
cpp/ডিরেক্টরি না থাকে, তাহলে নিম্নরূপ একটি তৈরি করুন: - IDE এর বাম দিকের Project প্যানটি খুলুন এবং মেনু থেকে Project view নির্বাচন করুন।
- your-module > src এ নেভিগেট করুন।
- প্রধান ডিরেক্টরিতে ডান-ক্লিক করুন এবং New > Directory নির্বাচন করুন।
- ডিরেক্টরির নাম হিসেবে
cppলিখুন এবং OK ক্লিক করুন। -
cpp/ডিরেক্টরিতে ডান-ক্লিক করুন এবং New > C/C++ Source File নির্বাচন করুন। - আপনার সোর্স ফাইলের জন্য একটি নাম লিখুন, যেমন
native-lib। - টাইপ মেনু থেকে, আপনার সোর্স ফাইলের জন্য ফাইল এক্সটেনশন নির্বাচন করুন, যেমন
.cpp।- ফাইলের ধরণ সম্পাদনা করুন ক্লিক করুন
মেনুতে অন্যান্য ফাইল টাইপ যোগ করতে, যেমন .cxxবা.hxx। পপ আপ হওয়া নতুন ফাইল এক্সটেনশন ডায়ালগ বক্সে, সোর্স এক্সটেনশন এবং হেডার এক্সটেনশন মেনু থেকে অন্য একটি ফাইল এক্সটেনশন নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
- ফাইলের ধরণ সম্পাদনা করুন ক্লিক করুন
- একটি হেডার ফাইল তৈরি করতে, একটি সংশ্লিষ্ট হেডার তৈরি করুন চেকবক্সটি নির্বাচন করুন।
- ঠিক আছে ক্লিক করুন।
আপনার প্রোজেক্টে নতুন C/C++ ফাইল যোগ করার পরেও, আপনার নেটিভ লাইব্রেরিতে ফাইলগুলি অন্তর্ভুক্ত করার জন্য আপনাকে CMake কনফিগার করতে হবে।
অতিরিক্ত সম্পদ
আপনার অ্যাপে C/C++ কোড সাপোর্ট করার বিষয়ে আরও জানতে, নিম্নলিখিত রিসোর্সটি ব্যবহার করে দেখুন।
কোডল্যাব
- অ্যান্ড্রয়েড স্টুডিও দিয়ে হ্যালো-সিমেক তৈরি করুন এই কোডল্যাব আপনাকে দেখায় কিভাবে অ্যান্ড্রয়েড স্টুডিও সিমেক টেমপ্লেট ব্যবহার করে অ্যান্ড্রয়েড এনডিকে প্রকল্প ডেভেলপমেন্ট শুরু করতে হয়।