安卓jni不生成lib文件

安卓jni不生成lib文件,第1张

安卓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. 创建一个Android工程,命名为MyLib

2. 进入工程设置选中Is Library

3. 创建另一个Android工程,命名为MyProj

4. 进入工程设置,添加MyLib

5. 在MyProj的AndroidManifest.xml中加入对library中activity的引用

<activity android:name="net.devdiv.mylib.MyLib" />

6. 由于编译后library中的资源和引用它的project资源是合并在一起的,为了避免重名问题,需要对library中资源进行重命名

1). 把main.xml改为mylib.xml,同时修改MyLib.java代码setContentView(R.layout.mylib)

2). strings.xml修改为

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="mylibhello">String fetched from lib!</string>

<string name="mylib_app_name">MyLib</string>

是导入jar包,还是一个工程啊。。。

如果是jar包的话,很简单啊,就拷贝到lib目录下,右键->Add As library就ok了

如果是工程的话,就把工程拷到一个目录下,lib目录,或者是src下建一个目录,然后在项目名右键选择open module setting->在左面板选择modules后,在中间的面板上面有个加号(+)选择你拷贝的这个工程,

然后在module中会有这个项目

然后再在中间面板选择主项目,右边面板下面会有一个加号(+),然后选择第三个module dependence选择你要依赖的项目,ok了


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存