ndk-বিল্ড স্ক্রিপ্ট

ndk-build স্ক্রিপ্ট এমন প্রকল্প তৈরি করে যা NDK-এর মেক-ভিত্তিক বিল্ড সিস্টেম ব্যবহার করে। ndk-build দ্বারা ব্যবহৃত Android.mk এবং Application.mk কনফিগারেশনের জন্য আরও নির্দিষ্ট ডকুমেন্টেশন রয়েছে।

অভ্যন্তরীণ

ndk-build স্ক্রিপ্ট চালানো নিম্নলিখিত কমান্ড চালানোর সমতুল্য:

$GNUMAKE -f <ndk>/build/core/build-local.mk
<parameters>

GNU Make 3.81 বা পরবর্তীতে $GNUMAKE পয়েন্ট, এবং <ndk> আপনার NDK ইনস্টলেশন ডিরেক্টরিতে পয়েন্ট করে। আপনি এই তথ্য ব্যবহার করতে পারেন অন্যান্য শেল স্ক্রিপ্ট থেকে ndk-বিল্ড, এমনকি আপনার নিজের তৈরি ফাইলগুলি থেকে।

কমান্ড লাইন থেকে আহ্বান করুন

ndk-build স্ক্রিপ্টটি শীর্ষ স্তরের NDK ইনস্টলেশন ডিরেক্টরিতে থাকে। কমান্ড লাইন থেকে এটি চালানোর জন্য, আপনার অ্যাপ্লিকেশন প্রজেক্ট ডিরেক্টরিতে বা অধীনে থাকাকালীন এটি চালু করুন। উদাহরণ স্বরূপ:

$ cd <project>
$ <ndk>/ndk-build

এই উদাহরণে, <project> আপনার প্রোজেক্টের রুট ডিরেক্টরি নির্দেশ করে এবং <ndk> হল সেই ডিরেক্টরি যেখানে আপনি NDK ইনস্টল করেছেন।

অপশন

ndk-বিল্ডের সমস্ত পরামিতি সরাসরি অন্তর্নিহিত GNU make কমান্ডে পাঠানো হয় যা NDK বিল্ড স্ক্রিপ্ট চালায়। ndk-build এবং বিকল্পগুলিকে ndk-build <option> আকারে একত্রিত করুন। উদাহরণ স্বরূপ:

$ ndk-build clean

নিম্নলিখিত বিকল্পগুলি উপলব্ধ:

clean
পূর্বে তৈরি করা বাইনারিগুলি সরান।

দ্রষ্টব্য: Mac OS X-এ, উচ্চ সংখ্যক সমান্তরাল এক্সিকিউশন সহ ndk-build clean চালানোর ফলে একটি বিল্ড ত্রুটি হতে পারে যাতে নিম্নলিখিত বার্তাটি অন্তর্ভুক্ত থাকে:

rm: fts_read: No such file or directory

এই সমস্যাটি এড়াতে, -j N সংশোধক ব্যবহার না করা বা N এর জন্য একটি ছোট মান নির্বাচন করার কথা বিবেচনা করুন, যেমন 2।

V=1
বিল্ড চালু করুন এবং বিল্ড কমান্ড প্রদর্শন করুন।
-B
একটি সম্পূর্ণ পুনর্নির্মাণ জোর করুন.
-BV=1
একটি সম্পূর্ণ পুনর্নির্মাণ জোর করুন, এবং বিল্ড কমান্ড প্রদর্শন করুন।
NDK_LOG=1
অভ্যন্তরীণ NDK লগ বার্তাগুলি প্রদর্শন করুন (NDK নিজেই ডিবাগ করার জন্য ব্যবহৃত হয়)।
NDK_DEBUG=1
একটি ডিবাগযোগ্য বিল্ড জোর করে ( সারণী 1 দেখুন)।
NDK_DEBUG=0
একটি রিলিজ বিল্ড জোর করে ( সারণী 1 দেখুন)।
NDK_HOST_32BIT=1
সর্বদা 32-বিট মোডে টুলচেন ব্যবহার করুন।
NDK_APPLICATION_MK=<file>
NDK_APPLICATION_MK ভেরিয়েবল দ্বারা নির্দেশিত একটি নির্দিষ্ট Application.mk ফাইল ব্যবহার করে তৈরি করুন।
-C <project>
<project> এ অবস্থিত প্রকল্প পথের জন্য নেটিভ কোড তৈরি করুন। আপনি আপনার টার্মিনালে এটি cd না চাইলে দরকারী।

ডিবাগযোগ্য বনাম রিলিজ বিল্ড

NDK_DEBUG বিকল্পটি ব্যবহার করুন এবং কিছু ক্ষেত্রে, AndroidManifest.xml ডিবাগ বা রিলিজ বিল্ড, অপ্টিমাইজেশান-সম্পর্কিত আচরণ এবং চিহ্নগুলির অন্তর্ভুক্তি নির্দিষ্ট করতে। সারণী 1 সেটিংসের প্রতিটি সম্ভাব্য সমন্বয়ের ফলাফল দেখায়।

সারণী 1. NDK_DEBUG (কমান্ড লাইন) এবং android:debuggable (manifest) সমন্বয়ের ফলাফল।

ম্যানিফেস্ট সেটিং NDK_DEBUG=0 NDK_DEBUG=1 NDK_DEBUG নির্দিষ্ট করা নেই
android:debuggable="true" ডিবাগ; প্রতীক; অপ্টিমাইজ করা*১ ডিবাগ; প্রতীক; অপ্টিমাইজ করা হয়নি*2 (NDK_DEBUG=1 এর মতো)
android:debuggable="false" মুক্তি; প্রতীক; অপ্টিমাইজ করা হয়েছে মুক্তি; প্রতীক; অপ্টিমাইজ করা হয়নি মুক্তি; কোন চিহ্ন নেই; অপ্টিমাইজ করা *3
*1: প্রোফাইলিংয়ের জন্য দরকারী।
*2: ndk-gdb চালানোর জন্য ডিফল্ট।
*3: ডিফল্ট মোড।

দ্রষ্টব্য: `NDK_DEBUG=0` হল `APP_OPTIM=রিলিজ` এর সমতুল্য, এবং `-O2` এর সাথে কম্পাইল করে। `NDK_DEBUG=1` হল `Application.mk`-এ `APP_OPTIM=debug` এর সমতুল্য, এবং `-O0` এর সাথে কম্পাইল করে। `APP_OPTIM` সম্পর্কে আরও তথ্যের জন্য, Application.mk দেখুন।

কমান্ড লাইনের সিনট্যাক্স হল, উদাহরণস্বরূপ:

$ ndk-build NDK_DEBUG=1

প্রয়োজনীয়তা

সাধারণভাবে ndk-build বা NDK ব্যবহার করতে আপনার GNU Make 4 প্রয়োজন। NDK-তে GNU Make-এর নিজস্ব অনুলিপি অন্তর্ভুক্ত রয়েছে এবং এটি ব্যবহার করবে যদি না আপনি $GNUMAKE এনভায়রনমেন্ট ভেরিয়েবল সেট না করেন একটি অনুপযুক্ত মেক নির্দেশ করার জন্য।

JSON সংকলন ডাটাবেস

NDK r18 এবং নতুনটিতে, ndk-build একটি JSON সংকলন ডাটাবেস তৈরি করতে পারে।

আপনি হয় ndk-build compile_commands.json ব্যবহার করতে পারেন আপনার কোড তৈরি না করেই ডাটাবেস তৈরি করতে, অথবা ndk-build GEN_COMPILE_COMMANDS_DB=true ব্যবহার করতে পারেন যদি আপনি ডাটাবেসটিকে পার্শ্ব-প্রতিক্রিয়া হিসেবে তৈরি করতে এবং তৈরি করতে চান।