这篇博文写的特别好  http://androgeek.info/?p=275
从Native层 直接读取 Android 工程目录 下 Asserts目录下的文件
具体思路如下:Android工程 会被打包成一个 apk文件,具体存储在  data/app下 
apk文件是一种 类似于 zip的压缩文件,因此,我们需要 用unzip的开源库,调用该库的 api来 读取 apk文件,将apk解压,从而找到 Asserts目录。
具体做法如下:   首先,下载unzip开源库:  http://pan.baidu.com/s/1mg8MfZq   其次,建立jni工程, 默认已经会了   再次,将下载下的unzip文件拷贝到jni目录下:        Android.mk 添加如下语句:    1 LOCAL_STATIC_LIBRARIES : = libzip        2 LOCAL_LDLIBS += -lz    3 include $(call all-makefiles-under, $(LOCAL_PATH))     第一句表示 下载下来的 libzip(unzip开源库)文件夹 下的 源文件 最终会根据 其 Android.mk规定语句编译成 一个 静态库,将这个静态库添加进来   第二句 表示添加 系统的 压缩库, 涉及到文件压缩,图片压缩 一般都会添加它   第三句 表示执行完当前目录 源文件编译后,会继续跟进该目录下的子目录,编译。
 最后, 在jni层写相关读取,代码的语句: 相关 语句如下:
//Read APK Path and unzip the apk    zip *ApkArchive = zip_open(path, 0, NULL);    if (ApkArchive == NULL)    {        return ;    }    //Just for debug, print APK contents    int numFiles = zip_get_num_files(ApkArchive);    LOG_INFO( "ParseText" , " num to parse: %d" , numFiles);    for (int i = 0; i< numFiles; i++)    {       const char *name = zip_get_name(ApkArchive, i, 0);       LOG_INFO("ParseText", "string is assigned by char*");*/       if (name == NULL)       {          return ;       }       LOG_INFO( "ParseText" , "File: %i: %s\n" , i, name);   }


注意 :   以上 zip_open读取的path ,是从 java层传下来的 apk安装在android机上的路径名,有了这个路径名我们才能解压   
 final ApplicationInfo applicationInfo = this.getApplicationInfo();start(applicationInfo.sourceDir);


applicationInfo.sourceDir 即为 apk的安装路径
 读取的结果如下:   之后 就能继续 对 assets下面的  文件进行读取 操作了。             

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. lame音频压缩解码(二)之编译事例Demo
  6. Android(安卓)NDK开发入门实例
  7. ELF文件查看利器之readelf用法
  8. Android(安卓)Studio的(gradle sync failed 问题)
  9. 第二篇:实现uni-app和原生(Android)以及H5项目混编

随机推荐

  1. android 搭建NDK开发环境
  2. Android(安卓)studio 百度地图开发(5)查询
  3. android NumberPicker 全面解析
  4. Android(安卓)settings中SwitchPreferenc
  5. Android设置程序最小运行的堆内存
  6. Android——SharedPreferences数据存储
  7. Android(安卓)kernel Download
  8. Android——httpPost方式网络互通信
  9. Android游戏设计之-------游戏音效的播放
  10. [置顶] Android(安卓)ButterKnife