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:
-
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 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 bibliotekindk-build
i skryptu kompilacjiAndroid.mk
, pomiń ten krok.
- Jeśli masz już bibliotekę natywną z dołączonym skryptem kompilacji
-
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 .
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:
- W sekcji kreatora Wybierz projekt wybierz typ projektu Natywny C++.
- Kliknij Dalej.
- Wypełnij pozostałe pola w następnej sekcji kreatora.
- Kliknij Dalej.
-
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.
- 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 , 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:
- Gradle wywołuje zewnętrzny skrypt kompilacji:
CMakeLists.txt
. - CMake wykonuje polecenia w skrypcie kompilacji, aby skompilować plik źródłowy C++ (
native-lib.cpp
) do współdzielonej biblioteki obiektów i nazwać golibnative-lib.so
. Gradle pakuje je następnie w aplikację. - 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. -
MainActivity.onCreate()
dzwoni do:stringFromJNI()
, , który zwraca"Hello from C++"
i używa go do aktualizacjiTextView
.
Aby sprawdzić, czy Gradle pakuje bibliotekę natywną w aplikacji, użyj narzędzia APK Analyzer:
- Wybierz Kompilacja > Pakiety kompilacji / pliki APK > Utwórz pliki APK.
- Kliknij Utwórz > Przeanalizuj APK.
- Wybierz plik APK lub AAB z katalogu
app/build/outputs/
i kliknij OK. - 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:
- Jeśli w głównym zbiorze źródeł aplikacji nie ma jeszcze katalogu
cpp/
, utwórz go w ten sposób: - Otwórz panel Projekt po lewej stronie środowiska IDE i w menu wybierz widok Projekt.
- Kliknij your-module > src.
- Kliknij prawym przyciskiem myszy katalog główny i wybierz Nowy > Katalog.
- Wpisz
cpp
jako nazwę katalogu i kliknij OK. - Kliknij prawym przyciskiem myszy katalog
cpp/
i wybierz 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, 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.
- Kliknij Edytuj typy plików.
- Aby utworzyć plik nagłówka, zaznacz pole wyboru Utwórz powiązany nagłówek.
- 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
- Tworzenie Hello-CMake w Android Studio Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak zacząć korzystać z szablonu CMake w Android Studio Tworzenie projektów NDK na Androida.