博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
增量/差量更新 编译生成so库
阅读量:2121 次
发布时间:2019-04-30

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

本文档基于mac操作

1、先下载bzip2-1.0.6.tar.gz

连接地址:

2、我们可以新建一个项目,我取名makeso

3、在我们所建的工程的main包下新建一个jin的包,将后缀名为.c和.h的全部拷贝到jin包下(我是带了包名,你也可以不带,主要是为了分类,不然密密麻麻一堆文件),样板图:

这里写图片描述

4、在这个jni的目录下,再建一个文件,命名为Android.mk,配置如下:(重点操作,我在这里卡了很久,如果解决不了你的问题,请继续google)

#当前路径及android.mk的路径LOCAL_PATH := $(call my-dir)#清除上一个模块编译时候留下的所有LOCAL_变量,以准备给当前模块使用。include $(CLEAR_VARS)#指定那些存在于系统目录下本模块需要连接的库。如果某一个库既有动态库又有静态库,那么在默认情况下是链接的动态库而非静态库。#如果你的Android.mk文件中只有这么一行,那么将会采用动态链接#LOCAL_LDLIBS := -llog#要生成的.so库名,随便取名LOCAL_MODULE    := bsdiff#指定要编译的c文件LOCAL_SRC_FILES := com_example_makeso_MainActivity.c#负责收集自从上次调用 include $(CLEAR_VARS)  后的所有LOCAL_XXX信息。并决定编译为什么。include $(BUILD_SHARED_LIBRARY)#拓展#BUILD_STATIC_LIBRARY:编译为静态库。#BUILD_SHARED_LIBRARY :编译为动态库#BUILD_EXECUTABLE:编译为Native C可执行程序

5、打开终端,输入以下两个命令:

输入命名:cd /Users/gsony/Desktop/MyZLGX/makeso/src/main/java(切换到项目的java目录,这是我的java目录)

再次输入命令:javah -d ../jni com.example.makeso.MainActivity (这步容易出错)

系统会在jni包下生成一个.h的文件(附:操作和生成的文件)

这里写图片描述

6、准备工作做完了,现在就可以编译生成so库了

在jni包下,新建一个文件,命名为 com_example_makeso_MainActivity.c(附样板图)

这里写图片描述

7、在终端输入 ndk-build,,刷新项目就可以看见lib了,(附样板图)

这里写图片描述

!!!!!!!!!!!!!!!!!!!分割线!!!!!!!!!!!!!!!!!!!!!!

其实到这个时候已经完成了,可以拷贝so库使用了,但是看不惯警告的也可以搞定他

上图会看见一个 APP_PLATFORM not set. Defaultin to minimum supported version android-14.

解决办法:在jni包下,新建文件,命名为Application.mk,并在里面添加 APP_PLATFORM := android-14(我的是上面显示的错误是14,所以我写成14),样板图

这里写图片描述

上图还会有警告,如果要去除警告,需要在AndroidManifest.xml加入以下代码(这个不需要附样板图了吧)

最后在ndk-build的时候就很干净了,样板图

这里写图片描述

你可能感兴趣的文章
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
查看>>
Loadrunner之https协议录制回放报错如何解决?(九)
查看>>
python中xrange和range的异同
查看>>
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>