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 paketleyebileceği yerel bir kitaplıkta derlenir. Böylece, 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ını okuyun.

Android Studio, platformlar arası projeler için kullanışlı olan CMake'i destekler. Android Studio, ndk-build'i de destekler. CMake'den daha hızlı olabilir ancak yalnızca Android'i destekler. CMake ve ndk-build'in 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.
    • Yerel kodunuz zaten varsa veya önceden oluşturulmuş yerel bir kitaplığı içe aktarmak istiyorsanız bu adımı atlayın.
  2. Yerel kaynak kodunuzu kitaplıkta derlemek için CMake'i yapılandırın. Önceden oluşturulmuş veya platform kitaplıklarına ait içe aktarma ve bağlantı oluşturma işlemlerini yapıyorsanız bu derleme komut dosyası gereklidir.
    • CMakeLists.txt derleme komut dosyası içeren veya ndk-build kullanan ya da 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ıza bir yol 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 Java veya Kotlin kodundan yerel işlevlerinize erişin. Uygulamanızı derlemek ve çalıştırmak için Çalıştıruygulamayı çalıştırıp 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'e geçiş yapın.

NDK'yi indirin ve araçları derleyin

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): Android ile C ve C++ kodunu kullanmanıza olanak tanıyan araç seti. NDK, yerel etkinlikleri yönetmenize ve sensörler ile dokunmatik giriş 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üklemeyle ilgili 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şturun

Yerel kod desteği olan yeni bir proje oluşturmak için bu işlem başka bir Android Studio projesi 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ı tamamlayın.
  4. İleri'yi tıklayın.
  5. Sihirbazın C++ Desteğini Özelleştirme bölümünde, projenizi C++ Standard alanıyla özelleştirebilirsiniz.
    • Açılır listeyi kullanarak hangi C++ standartlaştırmayı kullanmak istediğinizi seçin. Araç Zinciri Varsayılan seçeneği belirlendiğ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ı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:

1. Şekil. 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 tüm yerel kaynak dosyaları, üst bilgileri, CMake veya ndk-build için derleme komut dosyalarını ve projenizin parçası olan önceden oluşturulmuş kitaplıkları bulabilirsiniz. Android Studio, yeni projeler için örnek bir C++ kaynak dosyası (native-lib.cpp) oluşturur ve bu dosyayı 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 hakkındaki bölümde projenize ek kaynak dosyaları nasıl ekleyeceğinizi öğrenin.

build.gradle dosyalarının Gradle'a uygulamanızı derleme talimatına benzer şekilde, CMake ve ndk-build de yerel kitaplığınızı nasıl oluşturacağınızı öğrenmek için bir derleme komut dosyası gerektirir. Android Studio, yeni projeler için 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 bölümünü okuyun.

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

Çalıştıruygulamayı ç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ış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, C++ kaynak dosyasını (native-lib.cpp) paylaşılan bir nesne kitaplığında derleyip bunu libnative-lib.so olarak adlandırmak için derleme komut dosyasındaki komutları takip eder. Daha sonra Gradle bunu uygulamaya paketler.
  3. Çalışma sırasında uygulamanın MainActivity öğesi, System.loadLibrary() kullanarak yerel kitaplığı yükler. Kitaplığın yerel işlevi stringFromJNI(), artık uygulamada kullanılabilir.
  4. MainActivity.onCreate(), stringFromJNI() işlevini çağırır. Bu işlem "Hello from C++" değerini döndürür ve TextView öğesini 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ı'nı seçin.
  2. Oluştur > APK'yı analiz et'i seçin.
  3. app/build/outputs/ dizininden APK'yı veya AAB'yi seçin ve Tamam'ı tıklayın.
  4. Şekil 2'de gösterildiği gibi libnative-lib.so eklentisini lib/<ABI>/ altındaki APK Analiz penceresinde görebilirsiniz.

    2. Şekil. APK Analiz Aracı'nı kullanarak yerel 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 şu adımları uygulayın:

  1. Uygulamanızın ana kaynak grubunda 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'i (Tamam) tıklayın.

  2. cpp/ dizinini sağ tıklayın ve New (Yeni) > C/C++ Source File'ı (Yeni > C/C++ Kaynak Dosya) 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. Başlık dosyası oluşturmak için İlişkili bir başlık oluştur onay kutusunu işaretleyin.
  6. OK (Tamam) seçeneğini tıklayın.

Projenize yeni C/C++ dosyaları ekledikten sonra yine de 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ı