使用NDK下获取文件目录

哥很纠结,时至今天NDK R8仍然没有修复这个BUG,从android_main(struct android_app* state)传入参数,state中获取ANativeActivity对象里面internalDataPath;  externalDataPath;两个字段在android 2.3上面运行常为0,正确应该都是路径字符串,目前只有3.0以上的系统修复了,但哥的手机很悲剧的是2.3.5版的系统,不想刷机,只好换个方法实现了。

哥一直以为JNI只是JAVA搞C的道具,如今发现C也可以通过JNI搞JAVA,而且我发现这种方式获取程序运行路径是最好的,网上很多人说通过/data/data/+获取程序运行名的方式搞,而在Imagination Technologies提供他的芯片开源图形库里面也是按这种方式搞,但哥说这种方式不靠谱,一些没ROOT的机压根就进不去系统目录,用c获取的路径全是空的,因为没有权限,ANDROID上面只允许受权的程序搞那个,但很悲剧C/C++搞NDK的时候并没有JAVA搞SDK那样方便得到授权。程序总不能只跑在破解了的系统上面,只好用JNI了。

准确来说NDK搞的C/C++代码也并非纯纯的C/C++代码,即使现在NDK的库已经支持可以一句JAVA也不写就能跑起来,这些程序还是受JVM的管理的,所以也不用太在意什么C调JAVA的事情了。

关键性的代码贴上分享下:

void
android_main(struct android_app* state)
{
  struct stOsContextEngine engine;

  //

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值