A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马欢 黑马帝   /  2012-8-14 15:15  /  2802 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马欢 于 2012-8-15 15:16 编辑

android  jni 调用一个.so,读取其中的A文件,将读取出来的信息通过B文件验证。但是在java方法测试时只要将A文件和B文件放在和src同级目录中即可。我想问,在android上为什么同时放在assets中不能用。在java中B文件时自动检测的。所以在android上不知如何写调用方法。有谁遇到过这种情况或者有什么好的建议?



后来发现是公司给的文件有些问题,调用文件,在哪里调如何调我不是不知道。我的问题是...........我说不清楚了。我的问题是文件再调文件,方法在里边写死了,我不知道往哪里放也不知道如何调用了。







3 个回复

倒序浏览
*res/raw和assets的相同点:

1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。


*res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹



*读取文件资源:

1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作


[java] view plain copy print ?
1.InputStream is = getResources().openRawResource(R.id.filename);  
InputStream is = getResources().openRawResource(R.id.filename);

2.读取assets下的文件资源,通过以下方式获取输入流来进行写操作


[java] view plain copy print ?
1.AssetManager am = null;  
2.am = getAssets();  
3.InputStream is = am.open("filename");  
AssetManager am = null; am = getAssets(); InputStream is = am.open("filename");



补充一下:在未知目录下有哪些文件,该去和获取这些文件的名称并把文件拷贝到目标目录中呢?(用于内置文件但不知道文件名称,需要筛选出想要的文件然后拷贝到目标目录中,推荐内置在assets文件夹中)
1.res/raw目录:
通过反射的方式得到R.java里面raw内部类里面所有的资源ID的名称,然后通过名称获取资源ID的值来读取我们想要的文件。(这个方法我没试过,有用过的同学麻烦发一段代码看看)。
2.assets目录:
getAssets().list("");来获取assets目录下所有文件夹和文件的名称,再通过这些名称再读取我们想要的文件



但愿我的答案对你有用
回复 使用道具 举报
樊占江 发表于 2012-8-14 23:28
*res/raw和assets的相同点:

1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制 ...

你说的是一点不错。不过不知道是我没表达清楚还是你没理解。你说的这些很对,但是和我的情况不一样。
回复 使用道具 举报
马欢 发表于 2012-8-15 15:13
你说的是一点不错。不过不知道是我没表达清楚还是你没理解。你说的这些很对,但是和我的情况不一样。 ...

那应该是我没有理解你的意思吧。抱歉!没帮上你什么忙
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马