Dodaj kod C i C++ do projektu na Androida, umieszczając go w katalogu cpp
w module projektu. Podczas kompilacji projektu jest on skompilowany do postaci natywnej, którą Gradle może spakować w pakiecie z Twoją aplikacją. Kod w Javie lub Kotlinie może następnie wywoływać funkcje z biblioteki natywnej za pomocą JNI (Java Native Interface). Aby dowiedzieć się więcej o korzystaniu z platformy JNI, przeczytaj wskazówki JNI na Androida.
Android Studio obsługuje CMake, co jest przydatne w projektach na wielu platformach.
Android Studio obsługuje też technologię ndk-build
, która może być szybsza niż CMake, ale obsługuje tylko Androida. Obecnie w tym samym module nie można używać zarówno formatu CMake, jak i ndk-build
.
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 dowiesz się, jak skonfigurować Androida Studio za pomocą niezbędnych narzędzi do kompilacji, utworzyć nowy projekt z obsługą języka C/C++ i dodać do niego nowe pliki w tym języku.
Jeśli zamiast tego 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 Android Studio.
- Pomiń ten krok, jeśli masz już kod natywny lub chcesz zaimportować gotową bibliotekę natywną.
-
Skonfiguruj CMake, aby utworzyć natywny kod źródłowy w bibliotece. Ten skrypt kompilacji jest wymagany, jeśli importujesz i łączysz zasoby z gotowych bibliotek lub bibliotek platformy.
- Pomiń ten krok, jeśli masz bibliotekę natywną, która zawiera już skrypt kompilacji
CMakeLists.txt
lub korzysta zndk-build
i zawiera skrypt kompilacjiAndroid.mk
.
- Pomiń ten krok, jeśli masz bibliotekę natywną, która zawiera już skrypt kompilacji
-
Skonfiguruj Gradle, podając ścieżkę do pliku skryptu CMake lub
ndk-build
. Gradle używa skryptu kompilacji, aby zaimportować kod źródłowy do projektu Android Studio i spakować bibliotekę natywną do aplikacji.
Po skonfigurowaniu projektu uzyskaj 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 istniejący projekt używa wycofanego narzędzia ndkCompile
, przejdź na CMake lub ndk-build
.
Pobierz NDK i narzędzia do kompilacji
Aby skompilować i debugować kod natywny aplikacji, potrzebujesz tych komponentów:
- Android Native Development Kit (NDK): zestaw narzędzi umożliwiający korzystanie z kodu w języku C i C++ na Androidzie. NDK udostępnia biblioteki platformy, które umożliwiają zarządzanie działaniami natywnymi i dostęp do fizycznych komponentów urządzenia, takich jak czujniki i dotykowe wprowadzanie danych.
-
CMake: zewnętrzne narzędzie do kompilacji, które współpracuje z Gradle przy tworzeniu biblioteki natywnej. Jeśli zamierzasz używać tylko komponentu
ndk-build
, nie potrzebujesz tego komponentu. - LLDB: debuger 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++
Proces tworzenia nowego projektu z obsługą kodu natywnego jest podobny do tworzenia dowolnego innego projektu Android Studio, ale zawiera dodatkowy krok:
- W kreatorze w sekcji Wybierz projekt wybierz typ projektu Natywny projekt C++.
- Kliknij Dalej.
- Wypełnij wszystkie pozostałe pola w następnej sekcji kreatora.
- Kliknij Dalej.
-
W sekcji Dostosuj obsługę języka C++ kreatora możesz dostosować projekt przy użyciu pola Standard C++ Standard.
- Z listy wybierz standard C++, którego chcesz używać. Wybranie opcji Toolchain default używa 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 z menu widok Androida. Jak widać na ilustracji 1, Android Studio dodaje grupę cpp:
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 gotowe biblioteki, które są częścią Twojego projektu. W przypadku nowych projektów Android Studio tworzy przykładowy plik źródłowy w C++ (native-lib.cpp
) i umieszcza go w katalogu src/main/cpp/
modułu aplikacji. Ten przykładowy kod zawiera prostą funkcję w języku C++ (stringFromJNI()
), która zwraca ciąg znaków "Hello from C++"
. Z sekcji poświęconej tworzeniu nowych natywnych plików źródłowych dowiesz się, jak dodać do projektu kolejne pliki źródłowe.
Podobnie jak pliki build.gradle
instruują Gradle, jak kompilować aplikację, CMake i ndk-build
wymagają skryptu kompilacji, aby dowiedzieć się, jak utworzyć 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 o konfigurowaniu CMake.
Tworzenie i uruchamianie przykładowej aplikacji
Gdy klikniesz Uruchom , Android Studio skompiluje i uruchomi aplikację wyświetlającą na urządzeniu z Androidem lub emulatorze tekst „Hello from C++”. Poniżej omówiliśmy zdarzenia występujące podczas kompilacji i uruchamiania przykładowej aplikacji:
- Gradle wywołuje Twój zewnętrzny skrypt kompilacji (
CMakeLists.txt
). - CMake wykonuje polecenie w skrypcie kompilacji, aby skompilować plik źródłowy C++ (
native-lib.cpp
) do udostępnionej biblioteki obiektów i nadać mu nazwęlibnative-lib.so
. Następnie pakuje je do aplikacji. - W czasie działania interfejs
MainActivity
aplikacji wczytuje bibliotekę natywną za pomocą zasobuSystem.loadLibrary()
. Aplikacja ma teraz dostęp do natywnej funkcji bibliotekistringFromJNI()
. -
Funkcja
MainActivity.onCreate()
wywołujestringFromJNI()
, co zwraca"Hello from C++"
i używa go do zaktualizowaniaTextView
.
Aby sprawdzić, czy Gradle pakuje bibliotekę natywną w aplikacji, użyj Analizatora plików APK:
- Wybierz Kompilacja > Pakiety kompilacji / Pliki APK > Utwórz pliki APK.
- Wybierz Kompilacja > Analiza pliku APK.
- Wybierz pakiet APK lub AAB z katalogu
app/build/outputs/
i kliknij OK. - Jak widać na ilustracji 2, wskaźnik
libnative-lib.so
jest widoczny w oknie Analizatora plików APK w sekcjilib/<ABI>/
.
Wskazówka: jeśli chcesz poeksperymentować z innymi aplikacjami na Androida, które korzystają z kodu natywnego, kliknij Plik > Nowy > Importuj przykład i wybierz przykładowy projekt z listy Ndk.
Utwórz nowe pliki źródłowe w 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ódłowym aplikacji nie masz jeszcze katalogu
cpp/
, utwórz go w ten sposób: - Otwórz panel Projekt po lewej stronie IDE i wybierz z menu 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 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, na przykład
.cpp
.- Kliknij Edytuj typy plików
, aby dodać do menu inne typy plików, na przykład
.cxx
lub.hxx
. W wyświetlonym oknie Nowe rozszerzenia plików wybierz inne rozszerzenie pliku z menu Rozszerzenie źródła i Rozszerzenie nagłówka, a potem kliknij OK.
- Kliknij Edytuj typy plików
, aby dodać do menu inne typy plików, na przykład
- 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 skonfigurować CMake, aby uwzględniać te pliki w bibliotece natywnej.
Dodatkowe materiały
Aby dowiedzieć się więcej o obsłudze kodu C/C++ w swojej aplikacji, zapoznaj się z tymi zasobami.
Ćwiczenia z programowania
- Tworzenie Hello-CMake w Android Studio To ćwiczenie z programowania pokazuje, jak używać szablonu CMake w Android Studio do rozpoczynania pracy nad projektami Android NDK.