Android studio 使用CMake配置生成so檔案
阿新 • • 發佈:2019-02-11
編寫native類
編寫native類對應的c檔案
使用命令生成標頭檔案.h
1、main-java中:javah 全類名
2、build-intermediates-classes-debug中:javah -classpath . -jni 全類名
在build.gradle的defaultConfig中加入:
externalNativeBuild { cmake { cppFlags "" // abiFilters "arm64-v8a","armeabi-v7a","x86","x86_64" } }
在build.gradle的android中,加入:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
新增CMakeLists.txt檔案到build.gradle檔案同級目錄下:
# For more information about using CMake with Android Studio, read the # documentation: https://d.android.com/studio/projects/add-native-code.html # Sets the minimum version of CMake required to build the native library. cmake_minimum_required(VERSION 3.4.1) # Creates and names a library, sets it as either STATIC # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds them for you. # Gradle automatically packages shared libraries with your APK. add_library( # Sets the name of the library. Hello//生成的so庫名稱 # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/jni/Hello.c )//c檔案路徑 # Searches for a specified prebuilt library and stores the path as a # variable. Because CMake includes system libraries in the search path by # default, you only need to specify the name of the public NDK library # you want to add. CMake verifies that the library exists before # completing its build. find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log ) # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in this # build script, prebuilt third-party libraries, or system libraries. target_link_libraries( # Specifies the target library. Hello # Links the target library to the log library # included in the NDK. ${log-lib} )
點選選單“Build - Make project”生成.so檔案
.so檔案目錄:app-build-intermediates-cmake-debug-obj