Projenize C ve C++ kodu ekleme

Kodu proje modülünüzdeki bir cpp dizinine yerleştirerek Android projenize C ve C++ kodu ekleyin. Projenizi derlediğinizde bu kod, Gradle'ın uygulamanızla birlikte paketleyebileceği yerel bir kitaplıkta derlenir. Java veya Kotlin kodunuz, Java Yerel Arayüzü (JNI) aracılığıyla yerel kitaplığınızdaki işlevleri çağırabilir. JNI çerçevesini kullanma hakkında daha fazla bilgi için Android için JNI ipuçları başlıklı makaleyi okuyun.

Android Studio, platformlar arası projeler için kullanışlı olan CMake'i destekler. Android Studio, CMake'den daha hızlı olabilen, ancak yalnızca Android'i destekleyen ndk-build'i de destekler. CMake ve ndk-build'nin aynı modülde kullanılması şu anda desteklenmemektedir.

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

Bu sayfada, gerekli derleme araçlarıyla Android Studio'yu ayarlama, C/C++ desteğiyle yeni bir proje oluşturma ve projenize yeni C/C++ dosyaları ekleme işlemlerinin nasıl yapılacağı gösterilmektedir.

Bunun yerine, mevcut bir projeye yerel kod eklemek isterseniz şu adımları uygulayın:

  1. Yeni yerel kaynak dosyalar oluşturun ve dosyaları Android Studio projenize ekleyin.
    • Zaten 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 oluşturulmuş veya platform kitaplıkları için içe aktarma ve bağlantı oluşturma işlemleri gerçekleştiriyorsanız bu derleme komut dosyası gereklidir.
    • Halihazırda CMakeLists.txt derleme komut dosyası içeren 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 dosyanıza bir yol sağlayarak Gradle'ı yapılandırın. Gradle, kaynak kodunu Android Studio projenize aktarmak ve yerel kitaplığınızı uygulamada 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ırçalıştır ve ardından menü çubuğundan uygulamayı çalıştır tıklayın.

Not: Mevcut projenizde kullanımdan kaldırılan ndkCompile aracı kullanılıyorsa CMake veya ndk-build kullanmaya geçin.

NDK'yı indirin ve araçlar oluşturun

Uygulamanız için yerel kod derlemek ve hata ayıklamak için aşağıdaki bileşenlere ihtiyacınız vardır:

  • Android Native Development Kit (NDK): C ve C++ kodunu Android'le kullanmanıza olanak tanıyan bir araç seti. 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: Yerel kitaplığınızı oluşturmak için Gradle ile birlikte çalışan harici bir derleme aracı. 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ğiyle yeni proje oluşturma

Yerel kod desteğiyle yeni bir proje oluşturmak için bu süreç diğer Android Studio projelerini oluşturmaya benzer ancak ek bir adım içerir:

  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 sonraki bölümünde diğer tüm alanları doldurun.
  4. İleri'yi tıklayın.
  5. Sihirbazın C++ Desteğini Özelleştirme bölümünde, projenizi C++ Standart alanıyla özelleştirebilirsiniz.
    • Açılır listeden hangi C++ standartlaştırmayı kullanmak istediğinizi seçin. Araç Zinciri Varsayılanı seçildiğinde, 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ından 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ü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; tüm yerel kaynak dosyalarını, üstbilgileri, CMake veya ndk-build için derleme komut dosyalarını ve projenizin parçası olan ö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, "Hello from C++" dizesini döndüren basit bir C++ işlevi (stringFromJNI()) sağlar. Yeni yerel kaynak dosyaları oluşturma bölümünden projenize nasıl ek kaynak dosyalar ekleyeceğinizi öğrenin.

build.gradle dosyaları Gradle'a uygulamanızı derleme talimatı verdiği gibi, CMake ve ndk-build de yerel kitaplığınızı nasıl oluşturacağınızı öğrenmek için bir derleme komut dosyası gerektirir. Yeni projeler için Android Studio bir CMake derleme komut dosyası (CMakeLists.txt) oluşturur 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 konusunu okuyun.

Örnek uygulamayı derleme ve çalıştırma

Çalıştırçalıştır ve ardından 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ışta, örnek uygulamayı derleyip çalıştırmak için gerçekleşen etkinlikler açıklanmaktadır:

  1. Harici derleme komut dosyanızdaki CMakeLists.txt Gradle çağrıları.
  2. CMake, derleme komut dosyasındaki komutları izleyerek bir C++ kaynak dosyasını (native-lib.cpp) paylaşılan bir nesne kitaplığında derler ve dosyayı libnative-lib.so olarak adlandırır. Daha sonra Gradle bunu uygulamanın içine paketler.
  3. Çalışma zamanında uygulamanın MainActivity öğesi, yerel kitaplığı System.loadLibrary() kullanarak yükler. Kitaplığın yerel işlevi olan stringFromJNI() artık uygulamada kullanılabilir.
  4. MainActivity.onCreate(), stringFromJNI() çağırır; "Hello from C++" değerini döndürür ve TextView sayfasını güncellemek için kullanır.

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

  1. Derleme > Derleme Paketleri / APK'lar > Derleme APK'ları seçeneğini belirleyin.
  2. Derle > APK'yı analiz et'i seçin.
  3. app/build/outputs/ dizininden APK veya AAB'yi seçin ve OK'i (Tamam) tıklayın.
  4. Şekil 2'de gösterildiği gibi libnative-lib.so eklentisini lib/<ABI>/ altındaki APK Analiz Aracı penceresinde görebilirsiniz.

    2. Şekil. APK Analiz Aracı'nı 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 ö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 zaten bir cpp/ dizininiz yoksa aşağıdaki şekilde bir dizin 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 konumuna gidin.
    3. Ana dizini sağ tıklayın ve Yeni > Dizin'i seçin.
    4. Dizin adı olarak cpp girin ve OK (Tamam) düğmesini 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ısı 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 başlık 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 edecek şekilde 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ı