android 怎么找.mk文件中调用的lib库

android 怎么找.mk文件中调用的lib库,第1张

这个变量是相应库对应的jar文件的路径,格式是 别名:JAR路径

引用第三方SO文件,在 eclipse工程里编译的时候,如果把so文件放在libs/armeabi/下的话,adt会直接给你自动把SO文件把包进去 。而在命令行下进行的话应该定义LOCAL_JNI_SHARED_LIBRARIES,

LOCAL_JNI_SHARED_LIBRARIES := libBMapApiEngine

这样还不行,这样直接编译会引发错误:找不到out/target/product/***/obj/lib/******.so

这时你需要把你的so文件放到out/target/product/***/obj/lib目录下。

这样再编译就没问题了。

另外在MK中文件中include $(BUILD_PACKAGE)是要编译这个工程,不加这个不会编译,MK文件具体写法请GOOGLE吧,呵呵。

安卓jni不生成lib文件

1、android源码环境下编译so包,编出来的.so的包前面不会自动给添加lib,NDK编译会自动给添加lib,即使Android.mk文件里面LOCAL_MODULE :=名字前面没有lib,NDK也会自动给你添加lib. 所以NDK编译时Android.mk文件编译出来的so包名字可以加lib也可不加,但源码下编译必须加

2、系统应用和用户应用的区别

在package/app下的工程 编译后生成的apk都会在system/app下 将系统 烧录到手机后 这些apk都会作为系统应用,系统应用所使用到的.so库全部在system/lib下面,若没有则会出错。这就是为什么源码下编译jni生成的库会放在out/target/product/xxxxxxxx_xx_m0/system/lib

用户应用会默认到应用的data/data目录的lib文件夹下找.so,如果找不到就会报错误。当前前提是你的系统system/lib下没有同样的so文件.

3、adb push 与 adb install 区别

adb push 能够指定安装目录。比如执行"adb push xxx.apk system/app" 后,xxx.apk被安装到了system/app目录下。 这时候就是系统应用

adb install 用此命令安装的软件位于 data/app 目录,则为user application。

方法1 :

人为建立上面的文件夹并将静态库拷入;

方法2 :

就是通过编译配置来做上面的动作。具体如下:

1. 将动态库的编译部分和静态库的编译部分分开;

2. 在工作目录下建立一个lib文件夹(必须是这个名字),将第三方的静态库拷贝进去,并且增加一个编译配置文件Android.mk,具体内容如下:

Android <wbr>: <wbr>编译动态库时如何引入静态库

这个编译配置文件就是要在obj下生成中间文件,供其他地方使用。

文件列表如下:

Android <wbr>: <wbr>编译动态库时如何引入静态库

3. 在工作目录下建立一个文件夹,并且将生成动态库的相关文件全部拷贝进去。这里我们起的名字是src,当然也可以起其他名字。Android.mk内容如下:

Android <wbr>: <wbr>编译动态库时如何引入静态库

这里只要直接引入第三方库就可以了。

文件列表如下:

Android <wbr>: <wbr>编译动态库时如何引入静态库

third_lib.h是静态库的头文件,test.cpp很简单,就是一个函数里面顺序调了一下静态库里开放的函数,内容如下:

Android <wbr>: <wbr>编译动态库时如何引入静态库

3. 工作目录下增加一个编译配置文件Android.mk,作用就是查找工作目录下所有的子目录中的Android.mk来编译。Android.mk的内容如下:

Android <wbr>: <wbr>编译动态库时如何引入静态库

好,工作都做完了,下面进入工作目录mm -B 试一下,可以顺利编译成功。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11631337.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存