Dodaj kod C i C++ do projektu na Androida, umieszczając go w katalogu cpp w module projektu. Podczas kompilowania projektu ten kod jest kompilowany do biblioteki natywnej, którą Gradle może spakować z aplikacją. Kod Java lub Kotlin może następnie wywoływać funkcje w bibliotece natywnej za pomocą interfejsu Java Native Interface (JNI). Więcej informacji o korzystaniu z platformy JNI znajdziesz w artykule Wskazówki dotyczące JNI na Androidzie.
Android Studio obsługuje CMake, co jest przydatne w przypadku projektów wieloplatformowych.
Android Studio obsługuje też ndk-build, które może działać szybciej niż CMake, ale obsługuje tylko Androida. Używanie w tym samym module zarówno CMake, jak i ndk-build nie jest obecnie obsługiwane.
Aby zaimportować istniejącą ndk-build bibliotekę do projektu w Android Studio, dowiedz się, jak połączyć Gradle z projektem biblioteki natywnej.
Na tej stronie dowiesz się, jak skonfigurować Android Studio za pomocą niezbędnych narzędzi do kompilacji, utworzyć nowy projekt z obsługą C/C++ i dodać do projektu nowe pliki C/C++.
Jeśli chcesz dodać kod natywny do istniejącego projektu, wykonaj te czynności:
-
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ą.
-
Skonfiguruj CMake, aby utworzyć bibliotekę z natywnego kodu źródłowego. Ten skrypt kompilacji jest wymagany, jeśli importujesz wstępnie skompilowane biblioteki lub biblioteki platformy i łączysz się z nimi.
- Jeśli masz już bibliotekę natywną, która ma
CMakeLists.txtskrypt kompilacji lub korzysta zndk-buildi zawiera skrypt kompilacjiAndroid.mk, pomiń ten krok.
- Jeśli masz już bibliotekę natywną, która ma
-
Skonfiguruj Gradle, podając ścieżkę do pliku skryptu CMake lub
ndk-build. Gradle używa skryptu kompilacji do importowania kodu źródłowego do projektu Android Studio i pakowania biblioteki natywnej w aplikacji.
Po skonfigurowaniu projektu możesz uzyskać dostęp do funkcji natywnych z kodu Java lub Kotlin za pomocą platformy JNI. Aby skompilować i uruchomić aplikację, kliknij Uruchom
.
Uwaga: jeśli Twój obecny projekt korzysta z narzędzia ndkCompile, które zostało wycofane, przejdź na CMake lub ndk-build.
Pobieranie NDK i narzędzi do kompilacji
Aby skompilować i debugować kod natywny aplikacji, potrzebujesz tych komponentów:
- Pakiet Android Native Development Kit (NDK): zestaw narzędzi, który umożliwia używanie kodu w językach C i C++ na Androidzie. NDK udostępnia biblioteki platformy, które umożliwiają zarządzanie aktywnościami natywnymi i dostęp do komponentów urządzenia fizycznego, takich jak czujniki i ekran dotykowy.
-
CMake: zewnętrzne narzędzie do kompilacji, które współpracuje z Gradle przy kompilowaniu biblioteki natywnej. Jeśli planujesz używać tylko ikony
ndk-build, nie potrzebujesz tego komponentu. - LLDB: debugger w Android Studio, który debuguje kod natywny.
Informacje o instalowaniu tych komponentów znajdziesz w artykule Instalowanie i konfigurowanie pakietu NDK i CMake.
Tworzenie nowego projektu z obsługą C/C++
Aby utworzyć nowy projekt z obsługą kodu natywnego, wykonaj podobne czynności jak w przypadku tworzenia dowolnego innego projektu w Android Studio, ale z dodatkowym krokiem:
- W sekcji Wybierz projekt kreatora wybierz typ projektu Native C++.
- Kliknij Dalej.
- Wypełnij wszystkie pozostałe pola w następnej sekcji kreatora.
- Kliknij Dalej.
-
W sekcji Dostosowywanie obsługi C++ kreatora możesz dostosować projekt za pomocą pola Standard C++.
- Z menu wybierz standard C++, którego chcesz użyć. Wybranie opcji Toolchain Default (Łańcuch narzędzi – domyślny) powoduje użycie domyślnego ustawienia CMake.
- Kliknij Zakończ.
Gdy Android Studio zakończy tworzenie nowego projektu, otwórz panel Projekt po lewej stronie IDE i z menu wybierz widok Android. Jak widać na rysunku 1, Android Studio dodaje grupę cpp:
Rysunek 1. grupy widoków Androida dla źródeł natywnych i zewnętrznych skryptów kompilacji.
Uwaga: ten widok nie odzwierciedla rzeczywistej hierarchii plików na dysku, ale grupuje podobne pliki, aby ułatwić poruszanie się po projekcie.
W grupie cpp znajdziesz wszystkie natywne pliki źródłowe, nagłówki, skrypty kompilacji dla CMake lub ndk-build oraz wstępnie skompilowane biblioteki, które są częścią Twojego 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ę w C++, stringFromJNI(), która zwraca ciąg znaków "Hello from C++". Więcej informacji o dodawaniu dodatkowych plików źródłowych do projektu znajdziesz w sekcji dotyczącej tworzenia nowych natywnych plików źródłowych.
Podobnie jak pliki build.gradle instruują Gradle, jak tworzyć aplikację, CMake i ndk-build wymagają skryptu kompilacji, aby wiedzieć, jak tworzyć bibliotekę natywną. W przypadku nowych projektów Android Studio tworzy skrypt kompilacji CMakeCMakeLists.txt i umieszcza go w katalogu głównym modułu.
Więcej informacji o zawartości tego skryptu kompilacji znajdziesz w artykule Konfigurowanie CMake.
Kompilowanie i uruchamianie przykładowej aplikacji
Gdy klikniesz Uruchom
, Android Studio skompiluje i uruchomi aplikację, która wyświetli tekst „Hello from C++” na urządzeniu z Androidem lub w emulatorze. Poniżej znajdziesz opis zdarzeń, które występują podczas tworzenia i uruchamiania aplikacji próbnej:
- Gradle wywołuje zewnętrzny skrypt kompilacji,
CMakeLists.txt. - CMake wykonuje polecenia w skrypcie kompilacji, aby skompilować plik źródłowy C++
native-lib.cppdo biblioteki obiektów współdzielonych i nadać jej nazwęlibnative-lib.so. Gradle pakuje go następnie w aplikacji. - Podczas działania aplikacji jej
MainActivitywczytuje bibliotekę natywną za pomocą funkcjiSystem.loadLibrary(). Funkcja natywna biblioteki,stringFromJNI(), jest teraz dostępna w aplikacji. -
MainActivity.onCreate()wywołujestringFromJNI(), która zwraca"Hello from C++"i używa go do zaktualizowaniaTextView.
Aby sprawdzić, czy Gradle pakuje bibliotekę natywną w aplikacji, użyj Analizatora APK:
- Kliknij Build > Build Bundles(s) / APK(s) > Build APK(s) (Utwórz > Utwórz pakiety / pliki APK > Utwórz pliki APK).
- Wybierz Build > Analyze APK (Utwórz > Przeanalizuj pakiet APK).
- Wybierz plik APK lub AAB z katalogu
app/build/outputs/i kliknij OK. - Jak widać na rysunku 2, w oknie Analizator APK w sekcji
lib/<ABI>/możesz zobaczyćlibnative-lib.so.
Rysunek 2. Znajdź bibliotekę natywną za pomocą narzędzia do analizy plików APK.
Wskazówka: jeśli chcesz wypróbować inne aplikacje na Androida, które korzystają z 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:
- Jeśli w głównym zestawie źródeł aplikacji nie masz jeszcze katalogu
cpp/, utwórz go w ten sposób: - Otwórz panel Projekt po lewej stronie IDE i wybierz widok Projekt w menu.
- Otwórz your-module > src.
- Kliknij prawym przyciskiem myszy katalog main i wybierz New (Nowy) > Directory (Katalog).
- Wpisz
cppjako nazwę katalogu i kliknij OK. - Kliknij prawym przyciskiem myszy katalog
cpp/i wybierz New > C/C++ Source File (Nowy > Plik źródłowy C/C++). - Wpisz nazwę pliku źródłowego, np.
native-lib. - W menu Typ wybierz rozszerzenie pliku źródłowego, np.
.cpp.- Kliknij Edytuj typy plików
, aby dodać do menu inne typy plików, np.
.cxxlub.hxx. W wyświetlonym oknie dialogowym Nowe rozszerzenia plików wybierz inne rozszerzenie pliku z menu Rozszerzenie źródłowe i Rozszerzenie nagłówka, a następnie kliknij OK.
- Kliknij Edytuj typy plików
- Aby utworzyć plik nagłówkowy, zaznacz pole wyboru Utwórz powiązany plik nagłówkowy.
- Kliknij OK.
Po dodaniu nowych plików C/C++ do projektu musisz jeszcze skonfigurować CMake, aby uwzględnić te pliki w bibliotece natywnej.
Dodatkowe materiały
Więcej informacji o obsłudze kodu C/C++ w aplikacji znajdziesz w tym artykule.
Codelabs
- Tworzenie projektu Hello-CMake w Android Studio W tym laboratorium kodowania dowiesz się, jak używać szablonu CMake w Android Studio, aby rozpocząć tworzenie projektu NDK na Androida.