Kodu proje modülünüzdeki bir cpp
dizinine yerleştirerek Android projenize C ve C++ kodu ekleyin. Projenizi oluşturduğunuzda bu kod, Gradle'ın uygulamanızla paketleyebileceği bir yerel kitaplıkta derlenir. Java veya Kotlin kodunuz daha sonra Java Native Interface (JNI) aracılığıyla yerel kitaplığınızdaki işlevleri çağırabilir. JNI çerçevesini kullanma hakkında daha fazla bilgi edinmek için Android için JNI ipuçları başlıklı makaleyi inceleyin.
Android Studio, platformlar arası projeler için yararlı olan CMake'i destekler.
Android Studio, CMake'den daha hızlı olabilen ancak yalnızca Android'i destekleyen ndk-build
'ı da destekler. Aynı modülde hem CMake hem de ndk-build
kullanmak şu anda desteklenmemektedir.
Mevcut bir ndk-build
kitaplığını Android Studio projenize aktarmak için Gradle'ı yerel kitaplık projenize bağlama hakkında bilgi edinin.
Bu sayfada, gerekli derleme araçlarıyla Android Studio'yu nasıl ayarlayacağınız, C/C++ desteğiyle yeni bir proje nasıl oluşturacağınız ve projenize yeni C/C++ dosyalarını nasıl ekleyeceğiniz gösterilmektedir.
Bunun yerine mevcut bir projeye yerel kod eklemek istiyorsanız aşağıdaki adımları uygulayın:
-
Yeni yerel kaynak dosyaları oluşturun ve dosyaları Android Studio projenize ekleyin.
- Yerel kodunuz varsa veya önceden oluşturulmuş bir yerel kitaplığı içe aktarmak istiyorsanız bu adımı atlayın.
-
Yerel kaynak kodunuzu kitaplık olarak oluşturmak için CMake'i yapılandırın. Bu derleme komut dosyası, önceden oluşturulmuş veya platform kitaplıklarını içe aktarıp bunlara bağlama işlemi yapıyorsanız gereklidir.
- Zaten
CMakeLists.txt
derleme komut dosyası içeren veyandk-build
kullanan veAndroid.mk
derleme komut dosyası içeren mevcut bir yerel kitaplığınız varsa bu adımı atlayın.
- Zaten
-
CMake veya
ndk-build
komut dosyası dosyanızın yolunu sağlayarak Gradle'ı yapılandırın. Gradle, kaynak kodu Android Studio projenize aktarmak ve yerel kitaplığınızı uygulamaya paketlemek için derleme komut dosyasını kullanır.
Projenizi yapılandırdıktan sonra JNI çerçevesini kullanarak yerel işlevlerinize Java veya Kotlin kodundan erişin. Uygulamanızı derleyip çalıştırmak için Run'ı (Çalıştır) tıklayın.
Not: Mevcut projeniz, desteği sonlandırılan ndkCompile
aracını kullanıyorsa CMake veya ndk-build
kullanmaya geçin.
NDK'yı ve derleme araçlarını indirme
Uygulamanız için yerel kodu derlemek ve hatalarını ayıklamak üzere aşağıdaki bileşenlere ihtiyacınız vardır:
- Android Native Development Kit (NDK): Android ile C ve C++ kodu kullanmanıza olanak tanıyan bir araç seti. NDK, yerel etkinlikleri yönetmenize ve sensörler ile dokunma girişi gibi fiziksel cihaz bileşenlerine erişmenize olanak tanıyan platform kitaplıkları sağlar.
-
CMake: Yerel kitaplığınızı oluşturmak için Gradle ile birlikte çalışan harici bir derleme aracıdır. Yalnızca
ndk-build
kullanmayı planlıyorsanız bu bileşene ihtiyacınız yoktur. - LLDB: Android Studio'da yerel kodda hata ayıklayan hata ayıklayıcı.
Bu bileşenleri yükleme hakkında bilgi edinmek için NDK ve CMake'i yükleme ve yapılandırma başlıklı makaleyi inceleyin.
C/C++ desteğiyle yeni bir proje oluşturma
Yerel kodu destekleyen yeni bir proje oluşturma süreci, diğer Android Studio projelerini oluşturmaya benzer ancak ek bir adım içerir:
- Sihirbazın Projenizi seçin bölümünde Native C++ proje türünü seçin.
- İleri'yi tıklayın.
- Sihirbazın sonraki bölümündeki diğer tüm alanları tamamlayın.
- İleri'yi tıklayın.
-
Sihirbazın C++ Desteğini Özelleştirin bölümünde, projenizi C++ Standardı alanı ile özelleştirebilirsiniz.
- Açılır listeyi kullanarak hangi C++ standardizasyonunu kullanmak istediğinizi seçin. Toolchain Default (Araç zinciri <0x0A> Varsayılan) seçildiğinde varsayılan CMake ayarı kullanılır.
- Son'u tıklayın.
Android Studio yeni projenizi oluşturmayı tamamladıktan sonra IDE'nin sol tarafındaki Project (Proje) bölmesini açın ve menüden Android görünümünü seçin. Şekil 1'de gösterildiği gibi Android Studio, cpp grubunu ekler:
1.şekil Yerel kaynaklarınız ve harici derleme komut dosyalarınız için Android görünüm grupları.
Not: Bu görünüm, diskteki gerçek dosya hiyerarşisini yansıtmaz ancak projenizde gezinmeyi kolaylaştırmak için benzer dosyaları gruplandırır.
cpp grubu, projenizin bir parçası olan tüm yerel kaynak dosyalarını, başlıkları, CMake veya ndk-build
için derleme komut dosyalarını ve önceden oluşturulmuş kitaplıkları bulabileceğiniz yerdir. Android Studio, yeni projeler için örnek bir C++ kaynak dosyası (native-lib.cpp
) oluşturur ve bunu uygulama modülünüzün src/main/cpp/
dizinine yerleştirir. Bu örnek kod, stringFromJNI()
dizesini döndüren basit bir C++ işlevi olan "Hello from C++"
işlevini sağlar. Yeni doğal kaynak dosyaları oluşturma hakkındaki bölümden projenize nasıl ek kaynak dosyaları ekleyeceğinizi öğrenin.
build.gradle
dosyalarının Gradle'a uygulamanızı nasıl oluşturacağını söylemesine benzer şekilde, CMake ve ndk-build
da yerel kitaplığınızı nasıl oluşturacağını bilmek için bir derleme komut dosyası gerektirir. Android Studio, yeni projeler için bir CMake derleme komut dosyası oluştururCMakeLists.txt
ve bunu modülünüzün kök dizinine yerleştirir.
Bu derleme komut dosyasının içeriği hakkında daha fazla bilgi edinmek için CMake'i yapılandırma başlıklı makaleyi inceleyin.
Örnek uygulamayı derleyip çalıştırma
Çalıştır'ı tıkladığınızda Android Studio, Android cihazınızda veya emülatörünüzde "Hello from C++" metnini gösteren bir uygulama oluşturup başlatır. Aşağıdaki genel bakışta, örnek uygulamanın oluşturulması ve çalıştırılması için gerçekleşen etkinlikler açıklanmaktadır:
- Gradle, harici derleme komut dosyanızı çağırır,
CMakeLists.txt
. - CMake, bir C++ kaynak dosyasını (
native-lib.cpp
) derleyip paylaşılan bir nesne kitaplığına dönüştürmek velibnative-lib.so
olarak adlandırmak için derleme komut dosyasındaki komutları izler. Ardından Gradle, bunu uygulamaya paketler. - Çalışma zamanında uygulamanın
MainActivity
,System.loadLibrary()
kullanarak yerel kitaplığı yükler. Kitaplığın yerel işlevi olanstringFromJNI()
artık uygulamada kullanılabilir. -
MainActivity.onCreate()
,stringFromJNI()
işlevini çağırır. Bu işlev"Hello from C++"
değerini döndürür veTextView
değerini güncellemek için kullanılır.
Gradle'ın yerel kitaplığı uygulamaya paketlediğini doğrulamak için APK Analizcisi'ni kullanın:
- Build > Build Bundles(s) / APK(s) > Build APK(s)'i (Derleme > Paketleri/APK'ları Derle > APK'ları Derle) seçin.
- Build > Analyze APK'yı (Derleme > APK'yı Analiz Et) seçin.
app/build/outputs/
dizininden APK veya AAB'yi seçin ve Tamam'ı tıklayın.- Şekil 2'de gösterildiği gibi,
libnative-lib.so
öğesini APK Analiz Aracı penceresindekilib/<ABI>/
altında görebilirsiniz.Şekil 2. APK Analizcisi'ni kullanarak yerel bir kitaplığı bulun.
İpucu: Yerel kod kullanan diğer Android uygulamalarıyla deneme yapmak istiyorsanız Dosya > Yeni > Örnek İçe Aktar'ı tıklayın ve Ndk listesinden bir örnek proje seçin.
Yeni C/C++ kaynak dosyaları oluşturma
Mevcut bir projeye yeni C/C++ kaynak dosyaları eklemek için aşağıdaki adımları uygulayın:
- Uygulamanızın ana kaynak kümesinde henüz bir
cpp/
dizininiz yoksa aşağıdaki şekilde bir tane oluşturun: - IDE'nin sol tarafındaki Proje bölmesini açın ve menüden Proje görünümünü seçin.
- your-module > src'ye gidin.
- Ana dizini sağ tıklayın ve Yeni > Dizin'i seçin.
- Dizin adı olarak
cpp
girin ve Tamam'ı tıklayın. cpp/
dizinini sağ tıklayın ve Yeni > C/C++ Kaynak Dosyası'nı seçin.- Kaynak dosyanız için
native-lib
gibi bir ad girin. - Tür menüsünden kaynak dosyanızın dosya uzantısını (ör.
.cpp
) seçin.- Menüye Dosya Türlerini Düzenle'yi
tıklayarak
.cxx
veya.hxx
gibi başka dosya türleri ekleyin. Açılan Yeni Dosya Uzantıları iletişim kutusunda, Kaynak Uzantısı ve Başlık Uzantısı menülerinden başka bir dosya uzantısı seçip Tamam'ı tıklayın.
- Menüye Dosya Türlerini Düzenle'yi
- Başlık dosyası oluşturmak için İlişkili bir başlık oluştur onay kutusunu işaretleyin.
- Tamam'ı tıklayın.
Projenize yeni C/C++ dosyaları ekledikten sonra, dosyaları yerel kitaplığınıza dahil etmek için CMake'i yapılandırmanız gerekir.
Ek kaynaklar
Uygulamanızda C/C++ kodunu destekleme hakkında daha fazla bilgi edinmek için aşağıdaki kaynağı inceleyin.
Codelab uygulamaları
- Android Studio ile Hello-CMake oluşturma Bu codelab'de, Android NDK proje geliştirmeye başlamak için Android Studio CMake şablonunun nasıl kullanılacağı gösterilmektedir.