NDK中的本地函数要读一个5M左右的txt文件,怎么才能将txt打包进apk,怎么在安装时将txt文件放到sdcard中

解决方案 »

  1.   

    ls的高人,想问下怎么放,读文件的路径怎么写?你是指把txt文件中的数据都写到.c的文件中吗?
      

  2.   

    JAVA层可以获取app安装已有的路径,拼出res的路径,然后jni读取绝对路径
      

  3.   

    5M左右的txt文件,怎么才能将txt打包进apk?牛人们都来看一看啊,崩溃了
      

  4.   

    放到工程的assets目录下,然后在程序中,可以通过下面的函数获取对应文件的流。然后把再把这个流的文件写入到sdcard上面。。InputStream ifs = (InputStream)context.getAssets().open("5M的txt文件名.txt");
      

  5.   

    如果是在 3.x 以上,用 assets 目录是个办法;这个办法的缺点是,在 2.x 的系统下,不能支持超过 1M 字节的文件
      

  6.   

    是,看到“TobyC”的回复,我也上网查了下assets的用法,确实不能支持超过 1M 字节的文件。难道我把文件拆成5、6个文件?还有没有别的方法。
      

  7.   


    最后再问下,如果NDK中的本地函数要读一个5M左右的txt文件,正确的方法都是“安装时将文件写入sdcard中,然后供NDK中的本地函数使用”,是吧??
    期待回复啊
      

  8.   

    一个浪费点空间的简单办法,把 a.txt 修改后缀,比如修改成 liba.txt.so 然后放到 libs/armeabi 目录下,安装之后,这个文件在 /data/data/<package>/lib 目录下,可以直接读取...
      

  9.   

    嗯,这个方法不错,我现在实验一下。
    不过还有问题撒
    假如我把文件放在assets下,在“安装”的时候能将文件写入sdcard中吗?还是在程序第一次“运行”的时候才能将文件写入sdcard中?写入sdcard中后assets下的文件怎么删除呢?我上网查了好像不能删除。
      

  10.   

    按照11楼的方法实现了,但是,确实很费内存5M的.so,软件安装完都10M以上了,太大了,不知道更好的办法是什么???
      

  11.   

    如果是放在assets文件夹中,到时候也不能删除,不过相比11楼的方法能够节省一半的内存,但是,程序启动的时候要花费很多时间。纠结啊
      

  12.   

    11楼说的方法我试了,apk包里面有伪装成SO的txt文件,但安装后的目录下没有看到.是不是编译时对文件格式进行校验了呀?
      

  13.   

    真有大小限制么?这个我不是很确定,可能真有吧,我这边倒是歪打正着弄出了一个解决办法。
           公司开发了一个小项目,是用的2.2的sdk,其中用到一个8M的字体文件,我是将他放在assets下的,不过后来因为要加admob广告,而admob在AndroidManifest.xml配置的时候,其参数却是3.2sdk才有的,没办法,最后只能将版本强制转化为3.2(只是将sdk换成3.2,<uses-sdk android:minSdkVersion="8" />这个还是8),然后,可能是因为没有用到3.2中的新特性,所以程序能在2.2机器上运行,同时8M的字体文件也成功读入程序了- -
          不知道到底是何种原因,希望能帮到楼主
    另求助:http://topic.csdn.net/u/20120821/11/5f51ba07-16df-485e-b9b5-243586aef448.html?98098
      

  14.   

    建立raw文件,然后将File丢进去,获得试用getResource().getRaw();
      

  15.   

    可以这样的,还是放到assets目录下,第一次运行的时候,把文件读出取出来,并写到本机指定目录(因有限制,每次少读取一点,即可),下次从这个目录读出就可以了