增量/差量更新 编译生成so库

本文档基于mac操作

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

连接地址:这里是bzip2-1.0.6.tar.gz的链接地址

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

3、在我们所建的工程的main包下新建一个jin的包,将后缀名为.c和.h的全部拷贝到jin包下(我是带了包名,你也可以不带,主要是为了分类,不然密密麻麻一堆文件),样板图:
增量/差量更新 编译生成so库_第1张图片

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的文件(附:操作和生成的文件)
增量/差量更新 编译生成so库_第2张图片

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

在jni包下,新建一个文件,命名为 com_example_makeso_MainActivity.c(附样板图)
增量/差量更新 编译生成so库_第3张图片

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

增量/差量更新 编译生成so库_第4张图片

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

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

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

解决办法:在jni包下,新建文件,命名为Application.mk,并在里面添加 APP_PLATFORM := android-14(我的是上面显示的错误是14,所以我写成14),样板图
增量/差量更新 编译生成so库_第5张图片

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

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="25"/>

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

增量/差量更新 编译生成so库_第6张图片

你可能感兴趣的:(增量/差量更新 编译生成so库)