Во-первых, я хочу поблагодарить всех парней выше, без вашего вдохновения, я не могу получить этот ответ.
Я записываю этот ответ НЕ , потому что эти ответы неверны, я просто хочучтобы помочь таким новичкам, как я, setp by step, со всеми подробностями, должен знать.
Этот ответ был подтвержден в Android Studio 3.2.1 с CMake 3.4.1 ,я трижды проверил.
Теперь, если вы создаете новый проект с поддержкой C ++ , нажмите «Далее» полностью, вы получите CMakeLists.txt
, который должен выглядеть следующим образом:
cmake_minimum_required(VERSION 3.4.1)
add_library(
native-lib
SHARED
src/main/cpp/native-lib.cpp)
find_library(
log-lib
log)
target_link_libraries(
native-lib
${log-lib})
Изменить SHARED на STATIC не будет выводить любой файл .a
, вы ничего не получите, даже файл .so
не будет (конечно, естьв этом файле не будет добавлена библиотека SHARED ).
Это Gradle / Android Studio"ошибка", ответы выше уже упоминали ее, если вы используете CMake один, вы определенно получите файл .a
.
ОК, теперь мой TRICK :
У нас уже естьБиблиотека dd SHARED, затем мы добавляем библиотеку STATIC, которая использует тот же исходный файл.Добавьте ниже в CMakeLists.txt
:
add_library(
native-lib-static
STATIC
src/main/cpp/native-lib.cpp
)
«native-lib-static» можно заменить любым именем, кроме «native-lib», поскольку оно используется для версии SHARED.
Измените target_link_libraries
следующим образом:
target_link_libraries(
native-lib
native-lib-static
${log-lib})
Gradle-> app-> build-> assemblyDebug / assemblyRelease
Тогда вы получите libnative-lib-static.a
, в
app\.externalNativeBuild\cmake\debug(release)\<abi>\libnative-lib-static.a
Этот путь установлен в app\build.gradle
:
android{
defaultConfig{
externalNativeBuild{
CMake{
Банкомат. Я не уверен, изменит ли его Google вбудущее, но вы всегда можете найти в папке проекта файлы *.a
.
Не думаю, что на этот раз я что-то упустил.
Все заслуги @Michael @Dan Albert @AlexКон @ шижень