博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android打包so文件到apk
阅读量:4040 次
发布时间:2019-05-24

本文共 1193 字,大约阅读时间需要 3 分钟。

常用有两种方法:

1、在windows/linux下,首先把so动态库文件 编译出来(通过NDK),然后再 拷贝到android的工程里 libs/armeabi/下,如果libs/armeabi 不存在,那就自己创建,最后用eclipse编译本项目,这样将自动把so文件打包到apk里;eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。

2、在android源码里,使用mm命令编译apk工程。

   在project根目录下创建一个Android.mk,文件内容如:

  1. LOCAL_PATH:= $(call my-dir)   
  2. include $(CLEAR_VARS)   
  3. LOCAL_MODULE_TAGS := user  
  4. LOCAL_SRC_FILES := $(call all-subdir-java-files)   
  5. LOCAL_PACKAGE_NAME := whzgj 
  6. LOCAL_JNI_SHARED_LIBRARIES := libhello-jni  
  7. include $(BUILD_PACKAGE)   
  8. include $(LOCAL_PATH)/jni/Android.mk   
  9. #include $(call all-makefiles-under,$(LOCAL_PATH)) 

LOCAL_JNI_SHARED_LIBRARIES := libtest 就是把so文件放到apk文件里的libs/armeabi里,而include $(LOCAL_PATH)/jni/Android.mk为了编译so文件。

  Jni目录下Android.mk 里添加:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE    := libhello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)

编译出来的 共享库,会自动 添加 一个 .so 后缀,如:libhello-jni.so

在android的java代码里添加:

    static {

        System.loadLibrary("hello-jni");//注意 千万 不要 在 前面  加 lib 后面 加 so
    } 

把工程文件放到android source目录下,然后进入该目录,命令里输入mm,进行该工程的编译,这样编译出来的apk,在libs/armeabi文件夹里面包含so文件。

当 编译的时候 不想 分离 apk的DEX文件,在 编译 系统里 添加 DISABLE_DEXPREOPT:=true

转载地址:http://hipdi.baihongyu.com/

你可能感兴趣的文章
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
交叉编译在x86上调试好的qt程序
查看>>
qt 创建异形窗体
查看>>
可重入函数与不可重入函数
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
wpa_supplicant控制脚本
查看>>
gstreamer相关工具集合
查看>>