JNI开发的常见错误&&Android.mk文件说明&& jni开发的简便流程
2016-02-27 14:25
537 查看
1.jni开发的常见错误
[1]Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk说明你的jni目录下需要一个Android.mk文件
[2]11-21 02:26:39.995: E/AndroidRuntime(434): Caused by: java.lang.UnsatisfiedLinkError: helloFromC
11-21 02:26:39.995: E/AndroidRuntime(434): at com.itheima.jnierror.MainActivity.helloFromC(Native Method)
11-21 02:26:39.995: E/AndroidRuntime(434): at com.itheima.jnierror.MainActivity.click(MainActivity.java:18)
11-21 02:26:39.995: E/AndroidRuntime(434): … 14 more
说明没有加载 库文件
[3]11-21 02:29:12.358: E/AndroidRuntime(1527): Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load hello: findLibrary returned null
说明你生成库so文件 和你模拟器 的架构不一致
解决方案: 在jni目录下创建一个Application.mk文件 在文件中写下对应的APP_ABI APP_ABI := armeabi-v7a APP_ABI := x86 APP_ABI := mips APP_ABI := armeabi armeabi-v7a x86 mips APP_ABI := all
[4]jni/Hello.c:10:3: error: parameter name omitted
说明你声明的参数遗漏了
[5]jni/Hello.c:9:1: error: unknown type name ‘JNIEXPORT’
说明 你忘记引入 jni.h头文件了
[6]jni/Hello.c:2:20: fatal error: stulib.h: No such file or directory
说明 有可能 引入的头文件 字母写错了
[7]11-21 09:14:36.148: E/dalvikvm(1565): VM aborting
说明你调用的方法写错了
2.Android.mk文件说明
#$()调用函数 获取当前文件的目录 LOCAL_PATH := $(call my-dir) #$清空变量 相当于初始化 include $(CLEAR_VARS) # hello 是生成库文件的名字 会在你写的hello前面自动补上一个lib LOCAL_MODULE := hello # 要编译C的源文件 LOCAL_SRC_FILES := Hello.c #引入 动态库文件 include $(BUILD_SHARED_LIBRARY) #动态库 和 静态库的区别 #动态库一般以.so .dll 命名 动态库的体积小 里面只是包含代码的引用 #静态库一般以.a 结尾 静态库体积大
3. jni开发的简便流程(必须掌握)
[1]在本地声明一个本地方法[2]在eclipse下window 下 配置ndk环境
[3]使用javah生成jni样式的头文件 根据你个人习惯先后我所谓
[4]要添加本地支持 从Androidtools—>add native support
[5]默认生成一个cpp格式文件 把cpp改成c Android.mk配置文件 改一下LOCAL_SRC_FILES := simple.c
[6]实现C代码
[7]给C一锤子 只需要使用一锤子 一锤定音
[8]最后一步 一定要记得 加载库文件 static 静态方法去添加
System.loadLibrary(“simple”);
相关文章推荐
- Android ContentProvider和Uri详解
- 安卓项目集成facebook-android-sdk 4.0版本
- Android Studio 各种快捷键
- PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码
- Android-----declare-styleable
- declare-styleable中format详解
- Android之ListView
- Android Studio快捷键【Android学习入门】
- android popwindow和dialog的取舍
- 第3章 Android Dalvik虚拟机 第三节(下)
- 2016/2/26Android实习笔记(Android签名和aapt)
- Ubuntu下更新android sdk(sdk manager没有Tools选项)
- Android 使用Intent和Bundle传递数据及如何传递enum
- android简单的自定义动画
- Android--自定义视图控件(一)(Android Studio)
- 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
- Android 日期格式化
- Android Studio如何快速生成get,set,tostring,构造函数
- Android上通知栏NotificationManager设置
- android 权限