到目前为止我还是不明白Android里面的东西是个怎么回事,因为我还没有看过一点关于Android内部实现的东西。Java也不是很熟悉,也只会用它写个HelloWorld。之前就试着写过一个HelloAndroid。对于SDK和NDK这两个环境有什么关系也不甚理解,要在这样的情况下写NDK的代码没有其他办法,只有看教程,跟着抄代码。Android的java代码跟本地C++和C代码配合其实还是有许多细节的问题要注意的。这两部分要结合需要Java代码,C/C++代码和Android.mk文件,这三个文件都需要规范。

1、注意代码编译的顺序,一般先编译C/C++代码到.so库里然后在Java代码完成时就可以使用最新的本地代码了。

2、注意java路径的设置问题,在NDK中的方法要在函数前添加这个路径作为前缀,比如Java_com_example_SpotifyWidget_stringFromJNI其实在java代码里面就是stringFromJNI,而前面一段是Java类的所在,记得首字母要大写哦。

3、在android.mk文件里面写错了一些标记,导致本地代码编译时文件无法加载,编译出来一个空的库,找不到方法。比如添加本地代码文件LOCAL_SRC_FILES写错了,那所有的c/c++代码文件都找不到了,可是NDK还是可以给你编出一个.os文件,然后放到Android工程里面报警 DalvikJVM No Implementation of native method***或者java.lang.UnsatisfiedLinkError: Native method not found这样无厘头错误。

4、中文字符报错问题Java默认使用的是UTF-8字符编码的文件,包含中文的C代码文件使用的字符编码是GBK这是Eclipse默认的字符编码方式,可以在文件的属性中看到并对其进行修改。如下:



修改后的效果如图所示:


如果没有进行字符编码的修改在程序启动时就会报错logcat的信息栏中显示Fatal error ,Tag 显示libc,也就是C标准库的错误。

希望这几点可以对那些像我一样粗心又不了解NDK的人有用。

更多相关文章

  1. Android 学习日记(二)android studio运行github代码
  2. Android Apk反编译得到Java源代码
  3. Android 通过java代码实现EditText输入限制
  4. android解析XML文件的三方法之SAX
  5. 傻瓜式建立数据库,高效数据库操作代码的编写--android
  6. android文件下载与保存
  7. android 扫描文件(sdcard添加新的音乐文件时候后,可扫描到)
  8. 15个开发者最亲睐的Android代码编辑器

随机推荐

  1. android 牛人必修 ant 编译android工程
  2. Android(安卓)利用 xml 文件实现 ImageVi
  3. Android(安卓)相对布局 RelativeLayout
  4. Android(安卓)智能手机开发概述
  5. Android的消息机制源码分析
  6. android中的数据库操作
  7. android 条码识别软件开发全解析
  8. Android(安卓)传感器概述
  9. android兼容oppo手机刘海屏解决方案
  10. android 工程库及引用