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 kompilowany 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 projektach na wielu platformach. Android Studio obsługuje też technologię ndk-build, która może być szybszy niż CMake, ale obsługuje tylko Androida. Korzystanie zarówno z CMake, Funkcja ndk-build w tym samym module nie jest obecnie obsługiwana.

Importowanie istniejącej biblioteki ndk-build do Android Studio projekt, dowiedz się, Połącz Gradle z projektem biblioteki natywnej.

W tym artykule znajdziesz informacje o tym, jak skonfigurować Androida Studio, niezbędnych narzędzi do kompilacji, utwórz nowy projekt w języku C/C++. i dodaj nowe pliki C/C++ do projektu.

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

  1. Utwórz nowe natywne pliki źródłowe i dodaj do nich plik do projektu w Android Studio.
    • Pomiń ten krok, jeśli masz już kod natywny lub chcesz zaimportować gotową bibliotekę natywną.
  2. Skonfiguruj CMake: natywny kod źródłowy w bibliotece. Ten skrypt kompilacji jest wymagany jeśli importujesz i łączysz elementy przy użyciu gotowej lub platformy biblioteki.
    • Jeśli masz bibliotekę natywną, w której znajduje się już CMakeLists.txt skrypt kompilacji lub używa ndk-build i zawiera Android.mk pomiń ten krok.
  3. Skonfiguruj Gradle, podając ścieżkę do CMake lub ndk-build skrypt. Gradle używa skryptu kompilacji do zaimportowania kodu źródłowego projekt w Android Studio i zapakować bibliotekę natywną do aplikacji.

Po skonfigurowaniu projektu możesz uzyskać dostęp do funkcji natywnych z poziomu Kod w języku Java lub Kotlin korzystający z platformy JNI. Aby skompilować i uruchomić aplikację: kliknij Uruchom uruchom, a następnie 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:

  • Android Native Development Kit (NDK): zestaw narzędzi umożliwiający używanie kodu w językach C i C++ na urządzeniu z Androidem. NDK udostępnia biblioteki platformy, które umożliwiają zarządzanie aktywności i dostępu do fizycznych komponentów urządzenia, takich jak czujniki czy dotyk dane wejściowe.
  • CMake: zewnętrzne narzędzie do kompilacji, które działa razem z Gradle przy tworzeniu bibliotece. 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++

Proces tworzenia nowego projektu z obsługą kodu natywnego przebiega podobnie jak utworzenie innych aplikacji na Androida, projektu Studio, ale z dodatkowym krokiem:

  1. W kreatorze w sekcji Choose your project (Wybierz projekt) wybierz typ projektu Natywny projekt C++.
  2. Kliknij Dalej.
  3. Wypełnij wszystkie pozostałe pola w następnej sekcji kreatora.
  4. Kliknij Dalej.
  5. W sekcji Dostosuj obsługę języka C++ w kreatorze możesz dostosować swojego projektu, wpisując w polu C++ Standard.
    • Użyj listy, aby wybierz standard C++, którego chcesz używać. Wybieranie Toolchain Domyślny używa 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 widoków Androida dotyczące źródeł natywnych i zewnętrzne skrypty 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 znajdują się wszystkie natywne pliki źródłowe, nagłówki, skrypty kompilacji dla CMake lub ndk-build oraz gotowe bibliotekach, 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 fragment udostępnia prostą funkcję w C++ (stringFromJNI()), która zwraca ciąg "Hello from C++". Dowiedz się, jak dodać więcej plików źródłowych do projektu w sekcji dotyczącej utworzyć nowe natywne pliki źródłowe.

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 tworzy i uruchamia aplikację, która wyświetla tekst „Hello from C++”. na urządzenie z Androidem lub emulator, 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ć kod źródłowy w języku C++ native-lib.cpp, do współdzielonej biblioteki obiektów oraz nazw libnative-lib.so. Następnie pakuje je do aplikacji.
  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 Analizator plików APK:

  1. Wybierz Kompilacja > Pakiety kompilacji / pliki APK > Utwórz pliki APK.
  2. Wybierz Kompilacja > Przeanalizuj pakiet APK.
  3. Wybierz plik APK lub AAB z katalogu app/build/outputs/ i kliknij OK.
  4. Jak widać na ilustracji 2, libnative-lib.so w Okno Analizatora plików APK w katalogu lib/<ABI>/.

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

Wskazówka: jeśli chcesz poeksperymentować z innymi aplikacjami na Androida, które użyj kodu natywnego, kliknij Plik > Nowe > Importuj próbkę 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:

  1. Jeśli w głównym źródle nie masz jeszcze katalogu cpp/ aplikacji, utwórz taki:
    1. Otwórz panel Projekt po lewej stronie IDE. W menu wybierz widok Projekt.
    2. Otwórz 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 New > (Nowy >) Plik źródłowy C/C++.
  3. Wpisz nazwę pliku źródłowego, np. native-lib.
  4. W menu Typ wybierz rozszerzenie pliku. dla 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, wybierz opcję Utwórz powiązanego nagłówka.
  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