আপনার প্রজেক্ট মডিউলের একটি cpp
ডিরেক্টরিতে কোডটি রেখে আপনার Android প্রকল্পে C এবং C++ কোড যোগ করুন। আপনি যখন আপনার প্রকল্পটি তৈরি করেন, তখন এই কোডটি একটি নেটিভ লাইব্রেরিতে সংকলিত হয় যা Gradle আপনার অ্যাপের সাথে প্যাকেজ করতে পারে। আপনার জাভা বা কোটলিন কোড জাভা নেটিভ ইন্টারফেস (জেএনআই) এর মাধ্যমে আপনার নেটিভ লাইব্রেরিতে ফাংশন কল করতে পারে। JNI ফ্রেমওয়ার্ক ব্যবহার সম্পর্কে আরও জানতে, Android এর জন্য JNI টিপস পড়ুন।
অ্যান্ড্রয়েড স্টুডিও CMake সমর্থন করে, যা ক্রস-প্ল্যাটফর্ম প্রকল্পগুলির জন্য দরকারী। অ্যান্ড্রয়েড স্টুডিও ndk-build
সমর্থন করে, যা CMake এর চেয়ে দ্রুত হতে পারে কিন্তু শুধুমাত্র Android সমর্থন করে। একই মডিউলে CMake এবং ndk-build
উভয়ই ব্যবহার করা বর্তমানে সমর্থিত নয়।
আপনার অ্যান্ড্রয়েড স্টুডিও প্রকল্পে একটি বিদ্যমান ndk-build
লাইব্রেরি আমদানি করতে, কীভাবে Gradle কে আপনার নেটিভ লাইব্রেরি প্রকল্পে লিঙ্ক করবেন তা শিখুন।
এই পৃষ্ঠাটি আপনাকে দেখায় যে কীভাবে প্রয়োজনীয় বিল্ড সরঞ্জামগুলির সাথে Android স্টুডিও সেট আপ করবেন , C/C++ সমর্থন সহ একটি নতুন প্রকল্প তৈরি করবেন এবং আপনার প্রকল্পে নতুন C/C++ ফাইল যুক্ত করবেন ।
পরিবর্তে আপনি একটি বিদ্যমান প্রকল্পে নেটিভ কোড যোগ করতে চান, এই পদক্ষেপগুলি অনুসরণ করুন:
- নতুন নেটিভ সোর্স ফাইল তৈরি করুন এবং আপনার অ্যান্ড্রয়েড স্টুডিও প্রোজেক্টে ফাইল যোগ করুন।
- আপনার যদি ইতিমধ্যেই নেটিভ কোড থাকে বা একটি পূর্বনির্মাণ নেটিভ লাইব্রেরি আমদানি করতে চান তবে এই ধাপটি এড়িয়ে যান।
- একটি লাইব্রেরিতে আপনার নেটিভ সোর্স কোড তৈরি করতে CMake কনফিগার করুন । আপনি যদি পূর্বনির্মাণ বা প্ল্যাটফর্ম লাইব্রেরিগুলির সাথে আমদানি এবং লিঙ্ক করেন তবে এই বিল্ড স্ক্রিপ্টটি প্রয়োজন৷
- আপনার যদি একটি বিদ্যমান নেটিভ লাইব্রেরি থাকে যেখানে ইতিমধ্যেই একটি
CMakeLists.txt
বিল্ড স্ক্রিপ্ট আছে বাndk-build
ব্যবহার করে এবং একটিAndroid.mk
বিল্ড স্ক্রিপ্ট অন্তর্ভুক্ত করে, এই ধাপটি এড়িয়ে যান।
- আপনার যদি একটি বিদ্যমান নেটিভ লাইব্রেরি থাকে যেখানে ইতিমধ্যেই একটি
- আপনার 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 স্টুডিও প্রকল্প তৈরি করার মতো, তবে একটি অতিরিক্ত পদক্ষেপের সাথে:
- উইজার্ডের আপনার প্রকল্প চয়ন করুন বিভাগে, নেটিভ C++ প্রকল্পের ধরন নির্বাচন করুন।
- পরবর্তী ক্লিক করুন.
- উইজার্ডের পরবর্তী বিভাগে অন্যান্য সমস্ত ক্ষেত্র সম্পূর্ণ করুন।
- পরবর্তী ক্লিক করুন.
- উইজার্ডের কাস্টমাইজ C++ সাপোর্ট বিভাগে, আপনি C++ স্ট্যান্ডার্ড ফিল্ডের সাথে আপনার প্রজেক্ট কাস্টমাইজ করতে পারেন।
- আপনি কোন সি++ ব্যবহার করতে চান তা নির্বাচন করতে ড্রপ-ডাউন তালিকা ব্যবহার করুন। Toolchain ডিফল্ট নির্বাচন করা ডিফল্ট CMake সেটিং ব্যবহার করে।
- শেষ ক্লিক করুন.
অ্যান্ড্রয়েড স্টুডিও আপনার নতুন প্রকল্প তৈরি করা শেষ করার পরে, IDE-এর বাম দিক থেকে প্রকল্প ফলকটি খুলুন এবং মেনু থেকে Android ভিউ নির্বাচন করুন। চিত্র 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++" পাঠ্য প্রদর্শন করে। নিম্নলিখিত সংক্ষিপ্ত বিবরণটি নমুনা অ্যাপ তৈরি এবং চালানোর জন্য ঘটে এমন ঘটনাগুলি বর্ণনা করে:
- Gradle আপনার বাহ্যিক বিল্ড স্ক্রিপ্ট,
CMakeLists.txt
কল করে। - CMake একটি C++ সোর্স ফাইল,
native-lib.cpp
, একটি শেয়ার্ড অবজেক্ট লাইব্রেরিতে কম্পাইল করার জন্য বিল্ড স্ক্রিপ্টের কমান্ড অনুসরণ করে এবং এর নাম দেয়libnative-lib.so
। Gradle তারপর অ্যাপে প্যাকেজ করে। - রানটাইম চলাকালীন, অ্যাপের
MainActivity
System.loadLibrary()
ব্যবহার করে নেটিভ লাইব্রেরি লোড করে। লাইব্রেরির নেটিভ ফাংশন,stringFromJNI()
, এখন অ্যাপে উপলব্ধ। -
MainActivity.onCreate()
stringFromJNI()
কল করে, যা"Hello from C++"
রিটার্ন করে এবংTextView
আপডেট করতে এটি ব্যবহার করে।
Gradle অ্যাপে নেটিভ লাইব্রেরি প্যাকেজ করে কিনা তা যাচাই করতে, APK অ্যানালাইজার ব্যবহার করুন:
- বিল্ড > বিল্ড বান্ডেল (গুলি) / APK(গুলি) > বিল্ড APK(গুলি) নির্বাচন করুন।
- বিল্ড > অ্যানালাইজ APK নির্বাচন করুন।
-
app/build/outputs/
ডিরেক্টরি থেকে APK বা AAB নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন। - চিত্র 2 তে দেখানো হয়েছে, আপনি
lib/<ABI>/
অধীনে APK বিশ্লেষক উইন্ডোতেlibnative-lib.so
দেখতে পারেন।
টিপ: আপনি যদি নেটিভ কোড ব্যবহার করে এমন অন্যান্য অ্যান্ড্রয়েড অ্যাপগুলির সাথে পরীক্ষা করতে চান, তাহলে ফাইল > নতুন > নমুনা আমদানিতে ক্লিক করুন এবং Ndk তালিকা থেকে একটি নমুনা প্রকল্প নির্বাচন করুন।
নতুন C/C++ সোর্স ফাইল তৈরি করুন
একটি বিদ্যমান প্রকল্পে নতুন C/C++ সোর্স ফাইল যোগ করতে, নিম্নরূপ এগিয়ে যান:
- আপনার অ্যাপের মূল উৎস সেটে যদি আপনার কাছে ইতিমধ্যে একটি
cpp/
ডিরেক্টরি না থাকে, তাহলে নিম্নরূপ একটি তৈরি করুন: - IDE এর বাম পাশে প্রজেক্ট প্যানটি খুলুন এবং মেনু থেকে প্রজেক্ট ভিউ নির্বাচন করুন।
- your-module > src- এ নেভিগেট করুন।
- প্রধান ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > ডিরেক্টরি নির্বাচন করুন।
- ডিরেক্টরির নাম হিসাবে
cpp
লিখুন এবং ঠিক আছে ক্লিক করুন। -
cpp/
ডিরেক্টরিতে ডান-ক্লিক করুন এবং নতুন > C/C++ সোর্স ফাইল নির্বাচন করুন। - আপনার উৎস ফাইলের জন্য একটি নাম লিখুন, যেমন
native-lib
। - টাইপ মেনু থেকে, আপনার সোর্স ফাইলের জন্য ফাইল এক্সটেনশন নির্বাচন করুন, যেমন
.cpp
।- Edit File Types এ ক্লিক করুন মেনুতে অন্যান্য ফাইলের ধরন যোগ করতে, যেমন
.cxx
বা.hxx
। পপ আপ হওয়া নতুন ফাইল এক্সটেনশন ডায়ালগ বক্সে, সোর্স এক্সটেনশন এবং হেডার এক্সটেনশন মেনু থেকে অন্য ফাইল এক্সটেনশন নির্বাচন করুন এবং ঠিক আছে ক্লিক করুন।
- Edit File Types এ ক্লিক করুন মেনুতে অন্যান্য ফাইলের ধরন যোগ করতে, যেমন
- একটি হেডার ফাইল তৈরি করতে, একটি সংশ্লিষ্ট হেডার তৈরি করুন চেকবক্স নির্বাচন করুন।
- ওকে ক্লিক করুন।
আপনি আপনার প্রজেক্টে নতুন C/C++ ফাইল যোগ করার পরে, আপনাকে এখনও আপনার নেটিভ লাইব্রেরিতে ফাইলগুলি অন্তর্ভুক্ত করতে CMake কনফিগার করতে হবে।
অতিরিক্ত সম্পদ
আপনার অ্যাপে C/C++ কোড সমর্থন করার বিষয়ে আরও জানতে, নিম্নলিখিত সংস্থানটি চেষ্টা করুন।
কোডল্যাব
- অ্যান্ড্রয়েড স্টুডিও দিয়ে হ্যালো-সিমেক তৈরি করুন এই কোডল্যাবটি আপনাকে দেখায় কিভাবে অ্যান্ড্রয়েড এনডিকে প্রোজেক্ট ডেভেলপমেন্ট শুরু করতে অ্যান্ড্রয়েড স্টুডিও সিমেক টেমপ্লেট ব্যবহার করতে হয়।