本人昨天配置好了环境,今天来尝试jni的helloworld,不幸各种倒地。。下面列举中枪原有,看看你中枪了吗?
1.创建的是一个android 的application,不要以为要用到C/C++你就乱创建工程
2.老老实实一步一步走,别想走捷径,javah 生成.h文件必不可少的,随便你用cygwin还是windows的cmd,注意配置好java的环境变量就能用了,环境变量的配置自己搜
3.javah生成头文件这个,其他网上的教程都很坑,下面来个正版的:
假设创建的android项目在e:\android\hellojni,那么你应该跳转到e:\android\hellojni\src
那些叫你跳转到bin目录下的都是脑子有bin的
然后你执行的命令应该是 javah -classpath . -d ..\jni com.ct.hellojni.MainActivity (假设包名是com.ct.hellojni,类名是MainActivity)
这个要是生成不了.h的自己拍自己。
4.在cygwin中ndk-build,不要小看了这句话,由于你不是在ndk的目录中执行的ndk-build,因此要用$ndk/ndk-build
5.然后创建的.cpp文件中,要include生成那个.h文件,不然会报错No implemenation found for native.....
JNIEXPORT 和JNICALL 这两个东西不知道是干嘛的,求高手解释,貌似要不要都没影响,都能正常运行
有人从.h文件中copy的那个函数声明过来,但是注意,函数声明中的传递的变量是没有的,注意补上
6.第一次运行成功之后,就不必要这么蛋疼了,因为我们可以convert这个项目成为c/c++项目,然后和设置c/c++build环境,从此之后更改原来那个cpp文件就不用手动再在黑窗口中javah以及在cygwin中$ndk/ndk-build了
相关推荐
这是一个完成的jni完整例子,下载可直接运行
android hello jni sample
AS中实战Jni开发 Jni(Java Native Interface )其实是Java平台与C/C++及其他语言交互的接口,基于Android SDK开发的应用用的事java语言,... public native String hellojni(); ##3.生成 .h 文件 命令格式: #操作
android平台下实现进程注入,以libinject为主。
Android Studio 2.2以下实现HelloJni代码(建议旧的还是了解一下)
深度休眠情况下 服务3s自动唤醒一次,实现深度休眠下无人值守的自动唤醒
android通过NDK混合使用java和C/C++代码的简单的Demo,可以用
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。...
Android NDK开发之《HelloJni》-附件资源
你好JNI Java本机接口 环境
2. 编写HelloJni工程,在主Activity(本例:HelloJni.java)里声明native函数: 如下: public native String stringFromJNI(); public native double add(double a, double b); public native double sub...
JNI的一个小例子
简单的jni调用,使用android.mk进行编译,注意事项:app下的gradle,以及编译生成的 .h文件,复制修改为 .cpp时,里面的文件的宏逻辑,最好去掉这个宏(#ifdef _Included_com_play_hellojni_HelloJni //#define _...
这里面都是自己学习时,自己写的代码。供各位初学者及想学习android的人使用。 附里面的代码文件如下 Activity01 Activity02 Activity03 Activity04 ActivityForResult01 ActivityLife ActivityMain AidlService01 ...
后来结合网上说的让后加上自己摸索,终于可以用eclipse + NDK + Cygwin编译出so文件并且能够直接运行helloJNI程序了,现在把我的经验和大家分享,希望对大家有帮助。(想起来了,我的Cygwin是下载到本地然后安装的,...
简单明了的android ndk 开发实例,没有 过多的解释,其实也不用太多解释,本文所举例子比hellojni 稍微复杂那么一点点。
d src/test/jni -force -jni familia.java.util.CMinstdRand0编译 gcc -fPIC -D_REENTRANT -I${JAVA_HOME}/include -I//develop/jdk1.6.0_31/include/linux -shared -o hellojni.so HelloJni.c cl -I "%JAVA_HOME%/...
hellojni”应用程序 Eclipse for Java已安装 用于Android SDK开发的Eclipse ADT插件您应该能够编译并运行eclipse的hello-world项目 已安装Eclipse C ++插件“ CDT” [安装新软件->编程语言] 如何建造 修复项目根目录...
实现了java-c的互调 1.hello-jin-c是linux下的c实现文件。 (使用NDK编译成.so文件,供java层...2.helloJni是java工程。(里面通过JNI调用下面.so中提供的c的实现。) 同理.so里面也可以调用回调java里面实现的文件。