Dodaj do projektu kod w językach C i C++

Dodaj kod C i C++ do projektu na Androida, umieszczając go w tagu cpp w module projektu. Podczas kompilacji projektu jest skompilowany do natywnej biblioteki, którą Gradle może spakować z Twoją aplikacją. Kod w języku Java lub Kotlin może następnie wywoływać funkcje w bibliotece natywnej za pomocą JNI (Java Native Interface). Aby dowiedzieć się więcej o korzystaniu z JNI przeczytaj wskazówki JNI dotyczące na urządzeniu z Androidem.

Android Studio obsługuje CMake, co jest przydatne w przypadku projektów wieloplatformowych. Android Studio obsługuje też ndk-build, który może być szybszy niż CMake, ale obsługuje tylko Androida. Używanie CMake i ndk-build w tym samym module nie jest obecnie obsługiwane.

Aby zaimportować istniejącą bibliotekę ndk-build do projektu w Android Studio, dowiedz się, jak połączyć Gradle z projektem biblioteki natywnej.

Na tej stronie znajdziesz informacje o tym, jak skonfigurować Android Studio z wymaganymi narzędziami do kompilacji, utworzyć nowy projekt z obsługą języka C/C++, a także dodać do projektu nowe pliki C/C++.

Jeśli chcesz dodać kod natywny do istniejącego projektu, wykonaj te czynności:

  1. Utwórz nowe natywne pliki źródłowe i dodaj je do projektu w Android Studio.
    • Pomiń ten krok, jeśli masz już kod natywny lub chcesz zaimportować gotową bibliotekę natywną.
  2. Skonfiguruj CMake, aby skompilować natywny kod źródłowy w bibliotece. Ten skrypt kompilacji jest wymagany, jeśli importujesz i linkujesz biblioteki wstępnie skompilowane lub platformowe.
    • Jeśli masz już bibliotekę natywną z dołączonym skryptem kompilacji CMakeLists.txt lub używasz biblioteki ndk-build i skryptu kompilacji Android.mk, pomiń ten krok.
  3. Skonfiguruj Gradle, podając ścieżkę do CMake lub ndk-build skrypt. Gradle używa skryptu kompilacji, aby zaimportować kod źródłowy do projektu w Android Studio i zapakować natywną bibliotekę do aplikacji.

Po skonfigurowaniu projektu możesz uzyskać dostęp do natywnych funkcji z kodu Java lub Kotlin za pomocą ram work JNI. Aby skompilować i uruchomić aplikację, kliknij Uruchom uruchom aplikację z paska menu.

Uwaga: jeśli Twój istniejący projekt używa wycofanych plików ndkCompile. Przejdź na CMake lub ndk-build

Pobierz NDK i narzędzia do kompilacji

Aby skompilować i debugować kod natywny aplikacji, potrzebujesz tych elementów: komponenty:

  • Pakiet Native Development Kit (NDK) na Androida: zestaw narzędzi, który umożliwia korzystanie z kodu C i C++ na Androidzie. NDK udostępnia biblioteki platformy, które umożliwiają zarządzanie natywną aktywnością i dostęp do komponentów urządzeń fizycznych, takich jak czujniki i wyświetlacze dotykowe.
  • CMake: zewnętrzne narzędzie do kompilacji, które współpracuje z Gradle w celu kompilowania natywnej biblioteki. Nie potrzebujesz tego komponentu, jeśli zamierzasz używać go tylko ndk-build
  • LLDB: w Android Studio, który debuguje kod natywny.

Informacje o instalowaniu tych komponentów znajdziesz w artykule Instalowanie i konfigurowanie pakietów NDK i CMake.

Tworzenie nowego projektu z obsługą języka C/C++

Aby utworzyć nowy projekt z obsługą kodu natywnego, wykonaj te same czynności co przy tworzeniu dowolnego innego projektu Android Studio, ale z dodatkowym krokiem:

  1. W sekcji kreatora Wybierz projekt wybierz typ projektu Natywny C++.
  2. Kliknij Dalej.
  3. Wypełnij pozostałe pola w następnej sekcji kreatora.
  4. Kliknij Dalej.
  5. W sekcji Dostosowywanie obsługi C++ w kreatorze możesz dostosować swój projekt za pomocą pola Standard C++.
    • Na liście wybierz standard C++, którego chcesz użyć. Wybranie opcji Toolchain Default powoduje użycie domyślnego ustawienia CMake.
  6. Kliknij Zakończ.

Gdy Android Studio zakończy tworzenie nowego projektu, otwórz Panel Projekt po lewej stronie IDE i wybierz Android. Jak widać na ilustracji 1, Android Studio dodaje grupę cpp:

Rysunek 1. Grupy widoku Androida dla natywnych źródeł i zewnętrznych skryptów kompilacji.

Uwaga: to widok nie odzwierciedla rzeczywistej hierarchii plików na dysku, ale grupowanie podobnych plików w celu uproszczenia nawigacji po projekcie.

W grupie cpp znajdują się wszystkie natywne pliki źródłowe, nagłówki, skrypty kompilacji dla CMake lub ndk-build oraz gotowe i biblioteki, które wchodzą w skład projektu. W przypadku nowych projektów Android Studio tworzy przykładowy plik źródłowy C++, native-lib.cpp i umieszcza go w katalogu src/main/cpp/ modułu aplikacji. Ten przykładowy kod zawiera prostą funkcję C++, stringFromJNI(), która zwraca ciąg znaków "Hello from C++". Dowiedz się, jak dodać dodatkowe pliki źródłowe do projektu w sekcji Tworzenie nowych plików źródłowych natywnych.

Podobnie jak pliki build.gradle instruują Gradle, jak kompilować aplikacje CMake i ndk-build wymagają skryptu kompilacji, z biblioteki natywnej. W przypadku nowych projektów Android Studio tworzy kompilację CMake CMakeLists.txt i umieszcza go w katalogu głównym modułu. Aby dowiedzieć się więcej o zawartości tego skryptu kompilacji, przeczytaj Skonfiguruj CMake

Tworzenie i uruchamianie przykładowej aplikacji

Gdy klikniesz Uruchom uruchom, a następnie uruchom aplikację z paska menu, Android Studio skompiluje i uruchomi aplikację, która wyświetli na urządzeniu z Androidem lub w emulatorze tekst „Hello from C++”. Poniżej znajduje się omówienie zdarzeń, które które pojawiają się przy kompilowaniu i uruchamianiu przykładowej aplikacji:

  1. Gradle wywołuje zewnętrzny skrypt kompilacji: CMakeLists.txt.
  2. CMake wykonuje polecenia w skrypcie kompilacji, aby skompilować plik źródłowy C++ (native-lib.cpp) do współdzielonej biblioteki obiektów i nazwać go libnative-lib.so. Gradle pakuje je następnie w aplikację.
  3. W czasie działania interfejs MainActivity aplikacji wczytuje kreację natywną biblioteka za pomocą System.loadLibrary(). natywną funkcję biblioteki, stringFromJNI(), jest teraz dostępna w aplikacji.
  4. MainActivity.onCreate() dzwoni do: stringFromJNI(), , który zwraca "Hello from C++" i używa go do aktualizacji TextView.

Aby sprawdzić, czy Gradle pakuje bibliotekę natywną w aplikacji, użyj narzędzia APK Analyzer:

  1. Wybierz Kompilacja > Pakiety kompilacji / pliki APK > Utwórz pliki APK.
  2. Kliknij Utwórz > Przeanalizuj APK.
  3. Wybierz plik APK lub AAB z katalogu app/build/outputs/ i kliknij OK.
  4. Jak widać na rysunku 2, w oknie Analizy APK w sekcji lib/<ABI>/ możesz zobaczyć libnative-lib.so.

    Rysunek 2. Lokalizowanie biblioteki natywnej za pomocą pliku APK Analizatora.

Wskazówka: jeśli chcesz eksperymentować z innymi aplikacjami na Androida, które używają kodu natywnego, kliknij Plik > Nowy > Importuj przykład i wybierz przykładowy projekt z listy Ndk.

Tworzenie nowych plików źródłowych C/C++

Aby dodać nowe pliki źródłowe C/C++ do istniejącego projektu, wykonaj te czynności:

  1. Jeśli w głównym zbiorze źródeł aplikacji nie ma jeszcze katalogu cpp/, utwórz go w ten sposób:
    1. Otwórz panel Projekt po lewej stronie środowiska IDE i w menu wybierz widok Projekt.
    2. Kliknij your-module > src.
    3. Kliknij prawym przyciskiem myszy katalog główny i wybierz Nowy > Katalog.
    4. Wpisz cpp jako nazwę katalogu i kliknij OK.

  2. Kliknij prawym przyciskiem myszy katalog cpp/ i wybierz Nowy > Plik źródłowy C/C++.
  3. Wpisz nazwę pliku źródłowego, np. native-lib.
  4. W menu Typ wybierz rozszerzenie pliku źródłowego, np. .cpp.
    • Kliknij Edytuj typy plików. , aby dodać do menu inne typy plików, na przykład .cxx lub .hxx. W sekcji Nowe rozszerzenia plików i wybierz inne rozszerzenie pliku. menu Source Extension i Header Extension oraz kliknij OK.
  5. Aby utworzyć plik nagłówka, zaznacz pole wyboru Utwórz powiązany nagłówek.
  6. Kliknij OK.

Po dodaniu do projektu nowych plików w C/C++ musisz jeszcze wykonać te czynności: skonfiguruj CMake, aby pliki z biblioteki natywnej.

Dodatkowe materiały

Aby dowiedzieć się więcej o obsłudze kodu C/C++ w Twojej aplikacji, spróbuj wykonać te czynności: .

Ćwiczenia z programowania