配置第三方库:
1.首先关注一下目录结构,可以只看红框的目录,其他可以忽略。。
2.针对上面的目录,我们在build.gradle中的配置,主要添加红色的部分:
android {
compileSdkVersion 27
defaultConfig {
applicationId "hanlonglin.com.fmoddemo"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
#需要生成的so的版本
ndk {
abiFilters "x86","arm64-v8a","x86_64","armeabi-v7a"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
ndkBuild {
path file('src/main/cpp/ndk_build/Android.mk')
}
}
}
3.好,最后是我们的核心环节,Android.mk:
LOCAL_PATH := $(call my-dir)
#fmod模块
include $(CLEAR_VARS)
LOCAL_MODULE := fmod
#LOCAL_SRC_FILES := libfmod.so
LOCAL_SRC_FILES := ../../../../libs/${TARGET_ARCH_ABI}/libfmod.so #找到app下libs目录(即上图中上面的红框位置),不写路径会找不到,${TARGET_ARCH_ABI} 表示平台目录
include $(PREBUILT_SHARED_LIBRARY) #PREBUILT_SHARED_LIBRARY表示是预编译的库
#fmodL模块
include $(CLEAR_VARS)
LOCAL_MODULE := fmodL
#LOCAL_SRC_FILES := libfmodL.so
LOCAL_SRC_FILES := ../../../../libs/${TARGET_ARCH_ABI}/libfmodL.so #找到app下libs目录(即上图中上面的红框位置),不写路径会找不到,${TARGET_ARCH_ABI} 表示平台目录
include $(PREBUILT_SHARED_LIBRARY) #PREBUILT_SHARED_LIBRARY表示是预编译的库
#build play_sound
include $(CLEAR_VARS)
LOCAL_MODULE := play_sound
LOCAL_C_INCLUDES+= $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \
./src/main/cpp/fmod_inc
LOCAL_SRC_FILES := play_sound.cpp common_platform.cpp common.cpp
LOCAL_LDLIBS := -lm -llog
LOCAL_SHARED_LIBRARIES :=fmod fmodL #引用预编译库
include $(BUILD_SHARED_LIBRARY)
到此,成功引入了第三方库到我们自己的库中!
生成多个.so:
这个就简单了,比如我想在上面的基础上添加自己的native-lib库
只需要把native-lib.cpp拷贝到ndk_build文件夹中,然后在上面的Android.mk中添加:
#build native-lib
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_C_INCLUDES+= $(NDK_ROOT)/sources/cxx-stl/llvm-libc++/include \
./src/main/cpp/fmod_inc
LOCAL_SRC_FILES := native-lib.cpp
LOCAL_LDLIBS := -lm -llog
include $(BUILD_SHARED_LIBRARY)
编译后发现多了一个libnative-lib.so
我已经分享了四篇ndk配置相关的博客,如果看完这四篇,我想你肯定熟悉了ndk在Android studio中的配置,希望可以帮大家打开ndk的大门。