Projenize C ve C++ kodu ekleme

C ve C++ kodunu proje modülünüzde bir cpp dizine yerleştirerek Android projenize ekleyin. Projenizi derlediğinizde bu kod, Gradle'ın uygulamanızla paketleyebileceği bir yerel kitaplığa derlenir. Ardından Java veya Kotlin kodunuz, 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'i de destekler. Aynı modülde hem CMake hem de ndk-build kullanımı şu anda desteklenmemektedir.

Mevcut bir ndk-build kitaplığını Android Studio projenize aktarmak için Gradle'i yerel kitaplık projenize nasıl bağlayacağınızı öğrenin.

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ı nasıl ekleyeceğiniz açıklanmaktadır.

Bunun yerine mevcut bir projeye yerel kod eklemek istiyorsanız aşağıdaki adımları uygulayın:

  1. Yeni yerel kaynak dosyaları oluşturun ve dosyaları Android Studio projenize ekleyin.
    • Halihazırda yerel kodunuz varsa veya önceden oluşturulmuş bir yerel kitaplığı içe aktarmak istiyorsanız bu adımı atlayın.
  2. Yerel kaynak kodunuzu kitaplığa derlemek için CMake'i yapılandırın. Önceden derlenmiş veya platform kitaplıklarını içe aktarıyor ve bunlara bağlantı oluşturuyorsanız bu derleme komut dosyası gereklidir.
    • Zaten CMakeLists.txt derleme komut dosyası bulunan veya ndk-build kullanan ve Android.mk derleme komut dosyası içeren mevcut bir yerel kitaplığınız varsa bu adımı atlayın.
  3. CMake veya ndk-build komut dosyası dosyanızı belirterek 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 Java veya Kotlin kodundan yerel işlevlerinize erişin. Uygulamanızı derleyip çalıştırmak için ÇalıştırArdından, menü çubuğundan uygulamayı çalıştırın. tıklayın.

Not: Mevcut projenizde desteği sonlandırılan ndkCompile aracı kullanılıyorsa CMake veya ndk-build'e geçin.

NDK ve derleme araçlarını indirme

Uygulamanızın yerel kodunu derlemek ve hata ayıklamak için 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ç setidir. NDK, yerel etkinlikleri yönetmenize ve sensörler ve dokunmatik giriş gibi fiziksel cihaz bileşenlerine erişmenize olanak tanıyan platform kitaplıkları sunar.
  • CMake: Yerleşik kitaplığınızı derlemek 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ı makaleye bakın.

C/C++ desteğine sahip yeni bir proje oluşturma

Yerel kod desteği olan yeni bir proje oluşturmak için bu süreç herhangi bir Android Studio projesini oluşturmaya benzer ancak ek bir adım vardır:

  1. Sihirbazın Projenizi seçin bölümünde Yerel C++ proje türünü seçin.
  2. İleri'yi tıklayın.
  3. Sihirbazın bir sonraki bölümündeki diğer tüm alanları doldurun.
  4. İleri'yi tıklayın.
  5. Sihirbazın Customize C++ Support (C++ Desteğini Özelleştirme) bölümünde, projenizi C++ Standard alanıyla özelleştirebilirsiniz.
    • Kullanmak istediğiniz C++ standardizasyonunu seçmek için açılır listeyi kullanın. Aracı Zinciri Varsayılan'ı seçtiğinizde varsayılan CMake ayarı kullanılır.
  6. Son'u tıklayın.

Android Studio yeni projenizi oluşturmayı bitirdikten sonra, IDE'nin sol tarafındaki 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:

Şekil 1. Yerel kaynaklarınız ve harici derleme komut dosyalarınız için Android görüntüleme 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 grubunda, projenizin bir parçası olan tüm yerel kaynak dosyalarını, üstbilgileri, CMake veya ndk-build için derleme komut dosyalarını ve önceden derlenmiş kitaplıkları bulabilirsiniz. Android Studio, yeni projeler için native-lib.cpp adlı örnek bir C++ kaynak dosyası oluşturur ve bu dosyayı uygulama modülünüzün src/main/cpp/ dizinine yerleştirir. Bu örnek kodda, "Hello from C++" dizesini döndüren basit bir C++ işlevi (stringFromJNI()) sağlanmaktadır. Yeni yerel kaynak dosyaları oluşturma ile ilgili bölümde projenize nasıl ek kaynak dosyalar ekleyeceğinizi öğrenin.

build.gradle dosyalarının Gradle'e uygulamanızı nasıl derleyeceğini bildirmesine benzer şekilde, CMake ve ndk-build'ün de yerel kitaplığınızı nasıl derleyeceğini bilmesi için bir derleme komut dosyası gerekir. Android Studio, yeni projeler için bir CMake derleme komut dosyasıCMakeLists.txt oluşturur ve bu dosyayı 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 okuyun.

Örnek uygulamayı derleyip çalıştırma

Çalıştırçalıştırıp menü çubuğundan uygulamayı çalıştır tıkladığınızda Android Studio, Android cihazınızda veya emülatörünüzde "C++'tan merhaba" metnini görüntüleyen bir uygulama oluşturur ve başlatır. Aşağıdaki genel bakış, örnek uygulamayı oluşturmak ve çalıştırmak için gerçekleşen etkinlikleri açıklar:

  1. Gradle, harici derleme komut dosyanızı çağırır: CMakeLists.txt.
  2. CMake, C++ kaynak dosyasını (native-lib.cpp) paylaşılan bir nesne kitaplığında derlemek için derleme komut dosyasındaki komutları izler ve bu dosyayı libnative-lib.so olarak adlandırır. Ardından Gradle, bu dosyayı uygulamaya paketler.
  3. Çalışma zamanında, uygulamanın MainActivity, System.loadLibrary() kullanarak yerel kitaplığı yükler. Kitaplığın yerel işlevi olan stringFromJNI() artık uygulamada kullanılabilir.
  4. MainActivity.onCreate(), stringFromJNI()'u çağırır. Bu işlev "Hello from C++" değerini döndürür ve TextView değerini güncellemek için kullanır.

Gradle'in yerel kitaplığı uygulamaya paketlediğini doğrulamak için APK Analizcisi'ni kullanın:

  1. Derleme > Paketleri/APK'ları Derle > APK'ları Derle'yi seçin.
  2. Derle > APK'yı Analiz Et'i seçin.
  3. app/build/outputs/ dizininden APK veya AAB'yi seçin ve Tamam'ı tıklayın.
  4. Şekil 2'de gösterildiği gibi, APK Analiz Aracı penceresinde lib/<ABI>/ altında libnative-lib.so'ü 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 > Örneği İç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:

  1. Uygulamanızın ana kaynak grubunda cpp/ dizini yoksa aşağıdaki adımları uygulayarak bir tane oluşturun:
    1. IDE'nin sol tarafındaki Proje bölmesini açın ve menüden Proje görünümünü seçin.
    2. your-module > src bölümüne gidin.
    3. Ana dizini sağ tıklayın ve Yeni > Dizin'i seçin.
    4. Dizin adı olarak cpp girin ve Tamam'ı tıklayın.

  2. cpp/ dizinini sağ tıklayın ve Yeni > C/C++ Kaynak Dosyası'nı seçin.
  3. Kaynak dosyanız için native-lib gibi bir ad girin.
  4. Tür menüsünden kaynak dosyanızın dosya uzantısını (ör. .cpp) seçin.
    • Menüye .cxx veya .hxx gibi başka dosya türleri eklemek için Dosya Türlerini Düzenle'yi tıklayın. Açılan Yeni Dosya Uzantıları iletişim kutusunda, Kaynak Uzantı ve Başlık Uzantısı menülerinden başka bir dosya uzantısı seçin ve Tamam'ı tıklayın.
  5. Üstbilgi dosyası oluşturmak için İlişkili bir üstbilgi oluştur onay kutusunu işaretleyin.
  6. Tamam'ı tıklayın.

Projenize yeni C/C++ dosyaları ekledikten sonra da 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ğı deneyin.

Codelab uygulamaları