安卓中如何把普通文件打包进apk并且JNI中能自己读取文件内容

来源:互联网 发布:淘宝大学在哪里进 编辑:程序博客网 时间:2024/05/07 18:43

最近遇到这样的需求,安卓的JNI中需要读某些二进制文件,文件名通过java层传给JNI。之前是把这些文件放在sd卡下,但是最后要给别人安装肯定是要把这些文件都打包再apk中才行。开始尝试把它们放在accest目录,但是这个目录的文件没有一个再c++中能读到的文件名。


解决办法:

1、libs目录里的共享库是会烤到/data/data/<your package name>/lib/下的,于是我们可以把需要再c++中读取的文件名改成lib<文件名>.so,放在安卓工程的libs目录下,然后绝对路径就是/data/data/<your package name>/lib/lib<文件名>.so,这样c++就能读到文件。这是利用了共享库是会单独拷贝出来的,apk中的其他资源文件都会被打包压缩。


2、把文件名后缀改成不被压缩的格式,然后放在res目录。在java层中获得该文件的file pointer,和这个文件的offset和length,传给c++。

0 0
原创粉丝点击