随笔记录使用DNK时遇到的几个问题
ndk教程点击打开链接
第一个问题:没有找到jni下的Android.mk文件,console下提示如下
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 11 in ./AndroidManifest.xml <Ps:此处警告可以无视>
Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk
E:/job/ndk/android-ndk-r10/build/core/add-application.mk:209: *** Android NDK: Aborting... . Stop.
错误的原因是,我将 jni 文件加名称写成 jnk 了,相当无语,尽然纠结了很久才发现
修正之后,console下的输出为:
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 11 in ./AndroidManifest.xml
[armeabi] Compile thumb : hello-jni <= hello-jni.c
[armeabi] SharedLibrary : libhello-jni.so
[armeabi] Install : libhello-jni.so => libs/armeabi/libhello-jni.so
此时项目下会多出来一些文件加及文件,截图如下
第二个问题:C文件中的函数命名错误,错误日志如下:
03-06 14:18:04.868: E/AndroidRuntime(18613): FATAL EXCEPTION: main
03-06 14:18:04.868: E/AndroidRuntime(18613): java.lang.UnsatisfiedLinkError: Native method not found: com.ex.testndk.HelloJni.stringFromJNI:()Ljava/lang/String;
03-06 14:18:04.868: E/AndroidRuntime(18613): at com.ex.testndk.HelloJni.stringFromJNI(Native Method)
03-06 14:18:04.868: E/AndroidRuntime(18613): at com.ex.testndk.HelloJni.onCreate(HelloJni.java:36)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.Activity.performCreate(Activity.java:5109)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2247)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.ActivityThread.access$600(ActivityThread.java:148)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.os.Handler.dispatchMessage(Handler.java:99)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.os.Looper.loop(Looper.java:137)
03-06 14:18:04.868: E/AndroidRuntime(18613): at android.app.ActivityThread.main(ActivityThread.java:5138)
03-06 14:18:04.868: E/AndroidRuntime(18613): at java.lang.reflect.Method.invokeNative(Native Method)
03-06 14:18:04.868: E/AndroidRuntime(18613): at java.lang.reflect.Method.invoke(Method.java:511)
03-06 14:18:04.868: E/AndroidRuntime(18613): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-06 14:18:04.868: E/AndroidRuntime(18613): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-06 14:18:04.868: E/AndroidRuntime(18613): at dalvik.system.NativeStart.main(Native Method)
问题截图
此处的命名应该是对应java源码文件目录的(com.ex.testndk),正确写法是:Java_com_ex_testndk_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )【此处开头的Java必须要是大写】,一下为正确截图:
好了,这样就OK了,对项目Run As,结果如下:
第三: 友情来接 其它一些常见问题
随笔记录使用DNK时遇到的几个问题相关推荐
- MySQL 当记录不存在时insert,当记录存在时update
MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的 ...
- mysql插入实现存在更新_mysql 记录不存在时插入 记录存在则更新的实现方法
mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...
- mysql 主机不存在_MySQL 当记录不存在时插入,当记录存在时更新
MySQL 当记录不存在时插入,当记录存在时更新 2012-1-30 17:58 Monday 分类:MySQL 评论(71) 浏览(21592) MySQL 当记录不存在时插入,当记录存在时更新 网 ...
- MySQL 当记录不存在时insert,当记录存在时update(ON DUPLICATE KEY UPDATE, REPLACE语句)...
MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种:示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语 ...
- 【原创】微信支付遇到的各种坑及解决方案随笔记录,invalid signature, “errMsg“:“chooseWXPay:fail“
[原创]微信支付遇到的各种坑及解决方案随笔记录,invalid signature, "errMsg":"chooseWXPay:fail" 参考文章: (1) ...
- 记录--Spyder打开时出现“An error occurred while starting the kernel“
记录–Spyder打开时出现"An error occurred while starting the kernel" 使用Spyder时出现"An error occu ...
- 记录版本更新安装时解析包报错
记录版本更新安装时解析包报错 2020-07-09 17:05:52.785 24157-24213/? W/OPInstallStaging: Error staging apk from cont ...
- 谷粒商城P85问题记录—发布商品时规格参数不显示-2022/4/8
谷粒商城P85问题记录-发布商品时规格参数不显示 这一p有2个问题,折腾了很久 问题1 :数据库表中不存在 valueType这个键 但是接口文档里是需要提供这个键(而且是不能为null) 所以需要: ...
- 自己初学时的随笔记录
如果富文本编辑器 jsp....文件可以找到但是就是显示不出来,可能是Controller控制器中@RequestMapping后边没有写路径 ---------------------------- ...
- 小记~随笔[记录一个Matlab的中的一个错误]
记录一个Matlab的错误 导语 : 今天打开了Matlab , 在初始化完毕后出现了一个报错 , 通过回忆之前的操作我解决了这个问题. 并产生了一些思考. 这篇属于随笔类的文章 , 文笔散乱 , 想 ...
最新文章
- 如何在Fragment中使用findViewById
- 面试题编程题06-python 输入一个字符串,反转输出
- 用gojs写的流程图demo
- a href=# 与 a href=javascript:void(0) 的区别
- Java8 List<对象> 转 Set、Map(高级)、排序、分组、统计
- postgres触发器使用
- Google Kick Start 2018 Round C Planet Distance
- .net中Windows窗体间的数据交互
- 编译OpenJDK8:OpenJDK8与OpenJDK8u运行结果相差很大
- Word如何插入分数
- 不懂zencart该如何找出路-新手soho建站指南
- java毕业设计——基于Java+AI的五子棋游戏设计与实现(毕业论文+程序源码)——五子棋游戏
- 我是如何录制技术视频教程的?
- [ZJOI2015] 幻想乡战略游戏——树链剖分
- 拼接两条有重叠区域的核酸序列
- 被冲击的2022届普通毕业生
- 小伙熬夜用C++开发泡泡堂游戏,网友直呼:666!
- 抢火车票软件推荐哪个好?
- BUUCTF之Had a bad day
- 软件测试理论基础知识详解(新手入门必看)
热门文章
- c1xx : warning C4199: C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase-
- Gramine(原graphene-sgx)软件栈
- 投票男神女神公众号投票系统_男神女神投票 v5.5.21版本
- php配置 验证码无法显示,PHP验证码无法显示的原因及解决办法
- CSS揭秘--笔记--滚动提示
- 如何在vue中插入语音提示
- 分享几个边玩儿边学的游戏App,学习从未如此轻松有趣
- [转载] 百家讲坛——郦波评说曾国藩家训上部 01 谁来拯救笨小孩
- iptables中DNAT、SNAT和MASQUERADE的原理
- 路在何方 路在脚下 -- !!