admin 管理员组文章数量: 1086866
Android mk方式使用动态库和静态库
centos ndk下载和编译动态库 静态库
Mac使用iTerm2 rz sz和腾讯云互传文件
将libget.a 和 libget.so 添加到ndkdir目录中,并创建Android.mk文件
配置build.gradle
externalNativeBuild {ndkBuild {abiFilters 'armeabi-v7a'// abiFilters 'x86'}}
// 手动写一个mk 的构建方式externalNativeBuild {ndkBuild {path 'src/main/ndkdir/Android.mk'}}ndkVersion = '21.0.6113669'
login.c
#include <jni.h>
#include <android/log.h>// 声明一个函数
extern int get();JNIEXPORT void JNICALL Java_com_hongx_jnitest_MainActivity_getMyLibMethod
(JNIEnv * env, jobject inst) {__android_log_print(ANDROID_LOG_DEBUG, "Hongx", "tesegetMEthod:%d", get());}
Android.mk
# 这里面能够决定编译 Login.c# 1.源文件在的位置。宏函数 my-dir 返回当前目录(包含 Android.mk 文件本身的目录)的路径。
# LOCAL_PATH 其实就是Android.mk文件本身的目录的路径
LOCAL_PATH := $(call my-dir)$(info "LOCAL_PATH:======== ${LOCAL_PATH}")# 2.清理
include $(CLEAR_VARS)# TODO 预编译库的引入 == 提前编译好的库
LOCAL_MODULE := getLOCAL_SRC_FILES := libget.a
# LOCAL_SRC_FILES := libget.so# 预编译共享库的Makeifle脚本
include $(PREBUILT_STATIC_LIBRARY)
#include $(PREBUILT_SHARED_LIBRARY)#引入其他makefile文件。CLEAR_VARS 变量指向特殊 GNU Makefile,可为您清除许多 LOCAL_XXX 变量
#不会清理 LOCAL_PATH 变量
include $(CLEAR_VARS)
# TODO end# 3.指定库名字
#存储您要构建的模块的名称 每个模块名称必须唯一,且不含任何空格
#如果模块名称的开头已是 lib,则构建系统不会附加额外的前缀 lib;而是按原样采用模块名称,并添加 .so 扩展名。
LOCAL_MODULE := MyLoginJar#包含要构建到模块中的 C 和/或 C++ 源文件列表 以空格分开
LOCAL_SRC_FILES := Login.c \
Test.c# TODO 开始链接进来
# 静态库的链接
LOCAL_STATIC_LIBRARIES := get
# 动态库链接
# LOCAL_SHARED_LIBRARIES := get# 导入 log
#LOCAL_LDLIBS := -llog
LOCAL_LDLIBS := -lm -llog# 4.动态库
#构建动态库BUILD_SHARED_LIBRARY 最后要动态库
include $(BUILD_SHARED_LIBRARY)
MainActivity
public class MainActivity extends AppCompatActivity {static {System.loadLibrary("MyLoginJar"); // 加载总库}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getMyLibMethod();;}public native void getMyLibMethod();
}
本文标签: Android mk方式使用动态库和静态库
版权声明:本文标题:Android mk方式使用动态库和静态库 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1693757482a241056.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论