با قرار دادن کد در پوشه cpp
در ماژول پروژه، کدهای C و C++ را به پروژه اندروید خود اضافه کنید. هنگامی که پروژه خود را می سازید، این کد در یک کتابخانه بومی کامپایل می شود که Gradle می تواند با برنامه شما بسته بندی کند. کد جاوا یا کاتلین شما سپس می تواند توابع موجود در کتابخانه بومی شما را از طریق رابط بومی جاوا (JNI) فراخوانی کند. برای کسب اطلاعات بیشتر در مورد استفاده از چارچوب JNI، نکات JNI برای Android را بخوانید.
Android Studio از CMake پشتیبانی می کند که برای پروژه های چند پلتفرمی مفید است. Android Studio همچنین از ndk-build
پشتیبانی می کند که می تواند سریعتر از CMake باشد اما فقط از اندروید پشتیبانی می کند. استفاده از CMake و ndk-build
در یک ماژول در حال حاضر پشتیبانی نمی شود.
برای وارد کردن یک کتابخانه ndk-build
موجود به پروژه Android Studio خود، نحوه پیوند Gradle را به پروژه کتابخانه بومی خود بیاموزید.
این صفحه به شما نشان می دهد که چگونه Android Studio را با ابزارهای ساخت لازم راه اندازی کنید ، یک پروژه جدید با پشتیبانی C/C++ ایجاد کنید و فایل های C/C++ جدید را به پروژه خود اضافه کنید .
اگر به جای آن می خواهید کد بومی را به یک پروژه موجود اضافه کنید، این مراحل را دنبال کنید:
- فایل های منبع بومی جدید ایجاد کنید و فایل ها را به پروژه Android Studio خود اضافه کنید.
- اگر از قبل کد بومی دارید یا می خواهید یک کتابخانه بومی از پیش ساخته شده وارد کنید، از این مرحله بگذرید.
- CMake را پیکربندی کنید تا کد منبع بومی شما را در یک کتابخانه بسازد. اگر در حال وارد کردن و پیوند دادن با کتابخانه های از پیش ساخته یا پلتفرم هستید، این اسکریپت ساخت مورد نیاز است.
- اگر یک کتابخانه بومی موجود دارید که از قبل دارای اسکریپت ساخت
CMakeLists.txt
است یا ازndk-build
استفاده می کند و شامل یک اسکریپت ساختAndroid.mk
می باشد، از این مرحله رد شوید.
- اگر یک کتابخانه بومی موجود دارید که از قبل دارای اسکریپت ساخت
- با ارائه مسیری به فایل اسکریپت CMake یا
ndk-build
خود ، Gradle را پیکربندی کنید . Gradle از اسکریپت ساخت برای وارد کردن کد منبع به پروژه Android Studio شما و بسته بندی کتابخانه بومی شما در برنامه استفاده می کند.
هنگامی که پروژه خود را پیکربندی کردید، با استفاده از چارچوب JNI به توابع بومی خود از کد جاوا یا کاتلین دسترسی پیدا کنید. برای ساخت و اجرای برنامه خود، روی Run کلیک کنید .
توجه: اگر پروژه موجود شما از ابزار منسوخ شده ndkCompile
استفاده می کند، به CMake یا ndk-build
بروید.
NDK را دانلود کنید و ابزارهای ساخت را دانلود کنید
برای کامپایل و اشکال زدایی کد بومی برای برنامه خود، به اجزای زیر نیاز دارید:
- Android Native Development Kit (NDK) : مجموعه ابزاری که به شما امکان می دهد از کدهای C و C++ با Android استفاده کنید. NDK کتابخانههای پلتفرمی را فراهم میکند که به شما امکان میدهد فعالیتهای بومی را مدیریت کنید و به اجزای فیزیکی دستگاه مانند حسگرها و ورودی لمسی دسترسی داشته باشید.
- CMake : یک ابزار ساخت خارجی که در کنار Gradle برای ساخت کتابخانه بومی شما کار می کند. اگر فقط قصد استفاده از
ndk-build
را دارید، به این مؤلفه نیازی ندارید. - LLDB : دیباگر در Android Studio که کدهای بومی را اشکال زدایی می کند .
برای اطلاعات در مورد نصب این مؤلفه ها، به نصب و پیکربندی NDK و CMake مراجعه کنید.
یک پروژه جدید با پشتیبانی C/C++ ایجاد کنید
برای ایجاد یک پروژه جدید با پشتیبانی از کد بومی، فرآیند مشابه ایجاد هر پروژه دیگر Android Studio است، اما با یک مرحله اضافی:
- در قسمت Choose your project از ویزارد، نوع پروژه Native C++ را انتخاب کنید.
- روی Next کلیک کنید.
- تمام فیلدهای دیگر را در بخش بعدی ویزارد تکمیل کنید.
- روی Next کلیک کنید.
- در بخش Customize C++ Support جادوگر، می توانید پروژه خود را با فیلد C++ Standard سفارشی کنید.
- از لیست کشویی برای انتخاب استانداردسازی C++ که می خواهید استفاده کنید استفاده کنید. انتخاب Toolchain Default از تنظیمات پیشفرض CMake استفاده میکند.
- روی Finish کلیک کنید.
پس از اتمام ساخت پروژه جدید اندروید استودیو، پنجره Project را از سمت چپ IDE باز کنید و نمای Android را از منو انتخاب کنید. همانطور که در شکل 1 نشان داده شده است، Android Studio گروه 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
به یک اسکریپت ساختنی نیاز دارند تا بدانید چگونه کتابخانه بومی خود را بسازید. برای پروژههای جدید، Android Studio یک اسکریپت ساخت CMake، CMakeLists.txt
ایجاد میکند و آن را در فهرست اصلی ماژول شما قرار میدهد. برای کسب اطلاعات بیشتر در مورد محتویات این اسکریپت ساخت، Configure CMake را بخوانید.
برنامه نمونه را بسازید و اجرا کنید
وقتی روی Run کلیک می کنید ، اندروید استودیو برنامه ای را می سازد و راه اندازی می کند که متن "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 Analyzer استفاده کنید:
- ساخت > ساخت بسته(ها) / APK(ها) > ساخت APK(ها) را انتخاب کنید.
- Build > Analyze APK را انتخاب کنید.
- APK یا AAB را از فهرست
app/build/outputs/
انتخاب کنید و روی OK کلیک کنید. - همانطور که در شکل 2 نشان داده شده است، می توانید
libnative-lib.so
در پنجره APK Analyzer در زیرlib/<ABI>/
ببینید.
نکته: اگر میخواهید با سایر برنامههای اندرویدی که از کد بومی استفاده میکنند آزمایش کنید، روی File > New > Import Sample کلیک کنید و یک پروژه نمونه را از لیست Ndk انتخاب کنید.
فایل های منبع جدید C/C++ ایجاد کنید
برای افزودن فایل های منبع C/C++ جدید به پروژه موجود، به صورت زیر عمل کنید:
- اگر قبلاً یک دایرکتوری
cpp/
در مجموعه منبع اصلی برنامه خود ندارید، یکی را به صورت زیر ایجاد کنید: - پنجره Project را در سمت چپ IDE باز کنید و نمای پروژه را از منو انتخاب کنید.
- به your-module > src بروید.
- روی فهرست اصلی کلیک راست کرده و New > Directory را انتخاب کنید.
-
cpp
به عنوان نام دایرکتوری وارد کنید و روی OK کلیک کنید. - روی فهرست
cpp/
کلیک راست کرده و New > C/C++ Source File را انتخاب کنید. - یک نام برای فایل منبع خود وارد کنید، مانند
native-lib
. - از منوی Type ، پسوند فایل را برای فایل منبع خود انتخاب کنید، مانند
.cpp
.- روی ویرایش انواع فایل کلیک کنید برای افزودن انواع فایل های دیگر به منو، مانند
.cxx
یا.hxx
. در کادر محاورهای New File Extensions که ظاهر میشود، پسوند فایل دیگری را از منوی Source Extension و Header Extension انتخاب کنید و روی OK کلیک کنید.
- روی ویرایش انواع فایل کلیک کنید برای افزودن انواع فایل های دیگر به منو، مانند
- برای ایجاد یک فایل هدر، کادر انتخاب هدر مربوطه را ایجاد کنید.
- روی OK کلیک کنید.
پس از اینکه فایل های C/C++ جدید را به پروژه خود اضافه کردید، همچنان باید CMake را برای گنجاندن فایل ها در کتابخانه اصلی خود پیکربندی کنید .
منابع اضافی
برای کسب اطلاعات بیشتر در مورد پشتیبانی از کد C/C++ در برنامه خود، منبع زیر را امتحان کنید.
Codelabs
- ایجاد Hello-CMake با Android Studio این کد لبه به شما نشان می دهد که چگونه از الگوی Android Studio CMake برای شروع توسعه پروژه Android NDK استفاده کنید.
با قرار دادن کد در پوشه cpp
در ماژول پروژه، کدهای C و C++ را به پروژه اندروید خود اضافه کنید. هنگامی که پروژه خود را می سازید، این کد در یک کتابخانه بومی کامپایل می شود که Gradle می تواند با برنامه شما بسته بندی کند. کد جاوا یا کاتلین شما سپس می تواند توابع موجود در کتابخانه بومی شما را از طریق رابط بومی جاوا (JNI) فراخوانی کند. برای کسب اطلاعات بیشتر در مورد استفاده از چارچوب JNI، نکات JNI برای Android را بخوانید.
Android Studio از CMake پشتیبانی می کند که برای پروژه های چند پلتفرمی مفید است. Android Studio همچنین از ndk-build
پشتیبانی می کند که می تواند سریعتر از CMake باشد اما فقط از اندروید پشتیبانی می کند. استفاده از CMake و ndk-build
در یک ماژول در حال حاضر پشتیبانی نمی شود.
برای وارد کردن یک کتابخانه ndk-build
موجود به پروژه Android Studio خود، نحوه پیوند Gradle را به پروژه کتابخانه بومی خود بیاموزید.
این صفحه به شما نشان می دهد که چگونه Android Studio را با ابزارهای ساخت لازم راه اندازی کنید ، یک پروژه جدید با پشتیبانی C/C++ ایجاد کنید و فایل های C/C++ جدید را به پروژه خود اضافه کنید .
اگر به جای آن می خواهید کد بومی را به یک پروژه موجود اضافه کنید، این مراحل را دنبال کنید:
- فایل های منبع بومی جدید ایجاد کنید و فایل ها را به پروژه Android Studio خود اضافه کنید.
- اگر از قبل کد بومی دارید یا می خواهید یک کتابخانه بومی از پیش ساخته شده وارد کنید، از این مرحله بگذرید.
- CMake را پیکربندی کنید تا کد منبع بومی شما را در یک کتابخانه بسازد. اگر در حال وارد کردن و پیوند دادن با کتابخانه های از پیش ساخته یا پلتفرم هستید، این اسکریپت ساخت مورد نیاز است.
- اگر یک کتابخانه بومی موجود دارید که از قبل دارای اسکریپت ساخت
CMakeLists.txt
است یا ازndk-build
استفاده می کند و شامل یک اسکریپت ساختAndroid.mk
می باشد، از این مرحله رد شوید.
- اگر یک کتابخانه بومی موجود دارید که از قبل دارای اسکریپت ساخت
- با ارائه مسیری به فایل اسکریپت CMake یا
ndk-build
خود ، Gradle را پیکربندی کنید . Gradle از اسکریپت ساخت برای وارد کردن کد منبع به پروژه Android Studio شما و بسته بندی کتابخانه بومی شما در برنامه استفاده می کند.
هنگامی که پروژه خود را پیکربندی کردید، با استفاده از چارچوب JNI به توابع بومی خود از کد جاوا یا کاتلین دسترسی پیدا کنید. برای ساخت و اجرای برنامه خود، روی Run کلیک کنید .
توجه: اگر پروژه موجود شما از ابزار منسوخ شده ndkCompile
استفاده می کند، به CMake یا ndk-build
بروید.
NDK را دانلود کنید و ابزارهای ساخت را دانلود کنید
برای کامپایل و اشکال زدایی کد بومی برای برنامه خود، به اجزای زیر نیاز دارید:
- Android Native Development Kit (NDK) : مجموعه ابزاری که به شما امکان می دهد از کدهای C و C++ با Android استفاده کنید. NDK کتابخانههای پلتفرمی را فراهم میکند که به شما امکان میدهد فعالیتهای بومی را مدیریت کنید و به اجزای فیزیکی دستگاه مانند حسگرها و ورودی لمسی دسترسی داشته باشید.
- CMake : یک ابزار ساخت خارجی که در کنار Gradle برای ساخت کتابخانه بومی شما کار می کند. اگر فقط قصد استفاده از
ndk-build
را دارید، به این مؤلفه نیازی ندارید. - LLDB : دیباگر در Android Studio که کدهای بومی را اشکال زدایی می کند .
برای اطلاعات در مورد نصب این مؤلفه ها، به نصب و پیکربندی NDK و CMake مراجعه کنید.
یک پروژه جدید با پشتیبانی C/C++ ایجاد کنید
برای ایجاد یک پروژه جدید با پشتیبانی از کد بومی، فرآیند مشابه ایجاد هر پروژه دیگر Android Studio است، اما با یک مرحله اضافی:
- در قسمت Choose your project از ویزارد، نوع پروژه Native C++ را انتخاب کنید.
- روی Next کلیک کنید.
- تمام فیلدهای دیگر را در بخش بعدی ویزارد تکمیل کنید.
- روی Next کلیک کنید.
- در بخش Customize C++ Support جادوگر، می توانید پروژه خود را با فیلد C++ Standard سفارشی کنید.
- از لیست کشویی برای انتخاب استانداردسازی C++ که می خواهید استفاده کنید استفاده کنید. انتخاب Toolchain Default از تنظیمات پیشفرض CMake استفاده میکند.
- روی Finish کلیک کنید.
پس از اتمام ساخت پروژه جدید اندروید استودیو، پنجره Project را از سمت چپ IDE باز کنید و نمای Android را از منو انتخاب کنید. همانطور که در شکل 1 نشان داده شده است، Android Studio گروه 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
به یک اسکریپت ساختنی نیاز دارند تا بدانید چگونه کتابخانه بومی خود را بسازید. برای پروژههای جدید، Android Studio یک اسکریپت ساخت CMake، CMakeLists.txt
ایجاد میکند و آن را در فهرست اصلی ماژول شما قرار میدهد. برای کسب اطلاعات بیشتر در مورد محتویات این اسکریپت ساخت، Configure CMake را بخوانید.
برنامه نمونه را بسازید و اجرا کنید
وقتی روی Run کلیک می کنید ، اندروید استودیو برنامه ای را می سازد و راه اندازی می کند که متن "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 Analyzer استفاده کنید:
- ساخت > ساخت بسته(ها) / APK(ها) > ساخت APK(ها) را انتخاب کنید.
- Build > Analyze APK را انتخاب کنید.
- APK یا AAB را از فهرست
app/build/outputs/
انتخاب کنید و روی OK کلیک کنید. - همانطور که در شکل 2 نشان داده شده است، می توانید
libnative-lib.so
در پنجره APK Analyzer در زیرlib/<ABI>/
ببینید.
نکته: اگر میخواهید با سایر برنامههای اندرویدی که از کد بومی استفاده میکنند آزمایش کنید، روی File > New > Import Sample کلیک کنید و یک پروژه نمونه را از لیست Ndk انتخاب کنید.
فایل های منبع جدید C/C++ ایجاد کنید
برای افزودن فایل های منبع C/C++ جدید به پروژه موجود، به صورت زیر عمل کنید:
- اگر قبلاً یک دایرکتوری
cpp/
در مجموعه منبع اصلی برنامه خود ندارید، یکی را به صورت زیر ایجاد کنید: - پنجره Project را در سمت چپ IDE باز کنید و نمای پروژه را از منو انتخاب کنید.
- به your-module > src بروید.
- روی فهرست اصلی کلیک راست کرده و New > Directory را انتخاب کنید.
-
cpp
به عنوان نام دایرکتوری وارد کنید و روی OK کلیک کنید. - روی فهرست
cpp/
کلیک راست کرده و New > C/C++ Source File را انتخاب کنید. - یک نام برای فایل منبع خود وارد کنید، مانند
native-lib
. - از منوی Type ، پسوند فایل را برای فایل منبع خود انتخاب کنید، مانند
.cpp
.- روی ویرایش انواع فایل کلیک کنید برای افزودن انواع فایل های دیگر به منو، مانند
.cxx
یا.hxx
. در کادر محاورهای New File Extensions که ظاهر میشود، پسوند فایل دیگری را از منوی Source Extension و Header Extension انتخاب کنید و روی OK کلیک کنید.
- روی ویرایش انواع فایل کلیک کنید برای افزودن انواع فایل های دیگر به منو، مانند
- برای ایجاد یک فایل هدر، کادر انتخاب هدر مربوطه را ایجاد کنید.
- روی OK کلیک کنید.
پس از اینکه فایل های C/C++ جدید را به پروژه خود اضافه کردید، همچنان باید CMake را برای گنجاندن فایل ها در کتابخانه اصلی خود پیکربندی کنید .
منابع اضافی
برای کسب اطلاعات بیشتر در مورد پشتیبانی از کد C/C++ در برنامه خود، منبع زیر را امتحان کنید.
Codelabs
- ایجاد Hello-CMake با Android Studio این کد لبه به شما نشان می دهد که چگونه از الگوی Android Studio CMake برای شروع توسعه پروژه Android NDK استفاده کنید.