`
cb269267
  • 浏览: 25367 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

自己动手hellojni的各种细节

 
阅读更多

本人昨天配置好了环境,今天来尝试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了

分享到:
评论

相关推荐

    HelloJni-demo

    【HelloJni-demo】是一个基于Android平台的JNI(Java Native Interface)示例项目,它提供了一个全面的教程,...通过实际操作和研究这个项目,你可以熟练掌握将Java和C/C++结合使用的技巧,提升自己的Android开发能力。

    HelloJni.tar.gz

    1. **Android进程注入**:在Android系统中,每个应用程序都运行在自己的进程中,以保证安全性和隔离性。然而,有时我们需要跨进程通信(IPC)或直接操作其他进程,这就涉及到了进程注入。进程注入通常通过系统权限...

    HelloJni_android开发_源码

    "HelloJni"通常是一个简单的示例项目,用于介绍如何在Android应用中使用JNI技术。在这个项目中,开发者可能会遇到如何在深度休眠状态下让服务每3秒自动唤醒的问题,这对于实现无人值守的自动功能至关重要。 首先,...

    HelloJni.zip

    《Android NDK与Java混合编程:HelloJni.zip解析》 在移动开发领域,Android NDK(Native Development Kit)提供了一种方式,让开发者能够利用C/C++原生代码来编写部分应用程序,从而提高性能或者利用已有的C/C++库...

    Android Studio 2.2以下实现HelloJni代码(建议旧的还是了解一下)

    本篇文章将详细讲解如何在Android Studio 2.2及以下版本中实现一个简单的HelloJni项目,以帮助开发者对旧版Android Studio的JNI集成有更深入的理解。 首先,我们需要创建一个新的Android项目,并在项目中添加C/C++...

    hello-jni_jni_android_

    标题“hello-jni_jni_android_”提示我们这是一个关于Android平台下使用JNI(Java Native Interface)的示例项目。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。这个“hello-jni”项目很...

    HelloJni:Jni演示

    AS中实战Jni开发 Jni(Java Native Interface )其实是Java平台与C/C++及其他语言交互的接口,基于Android SDK开发的应用用的事java语言,... public native String hellojni(); ##3.生成 .h 文件 命令格式: #操作

    hello-jni.tgz

    JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。...

    HelloJNI:Java本机接口

    10. **字符串和数组处理**:JNI提供了处理Java字符串和数组的API,例如`GetStringUTFChars()`获取字符串的UTF-8编码,`GetArrayLength()`获取数组长度,以及各种数组元素的读写操作。 11. **回调Java方法**:通过`...

    Android NDK开发之《HelloJni》-附件资源

    Android NDK开发之《HelloJni》-附件资源

    用javah导出类的头文件常见的错误及正确的使用方法.docx

    D:\buffer\hellojni\HelloJNI\bin\classes\test\hellojni>javah test.hellojni.HelloJNIActivity 错误: 找不到 'test.hellojni.HelloJNIActivity' 的类文件。 ``` **解决方法**: - 确保当前工作目录或类...

    LINUX调用JNI动态库.txt

    ### Linux平台调用JNI动态库知识点详解 ...需要注意的是,在实际开发过程中,可能还需要考虑更多细节问题,例如错误处理、数据类型转换等。 以上就是在Linux平台上调用JNI动态库的完整过程,希望对大家有所帮助。

    JAVA 调用C++程序

    头文件(HelloJni.h)中的内容大致如下,定义了`Java_HelloJni_displayHelloJni`函数,该函数将在C++中实现: ```c++ #include ... JNIEXPORT void JNICALL Java_HelloJni_displayHelloJni(JNIEnv *, jobject); ``...

    Android NDK 开发教程三

    - `hellojni.txt`: 通常用于存放项目的简单介绍或注意事项。 - `jni`: 存放 C/C++ 源文件及相关构建脚本的目录。 - `Android.mk`: 用来定义编译规则的 Makefile 文件。 - `hello-jni.c`: 包含了被 Java 代码调用...

    JNI开发入门1

    `System.loadLibrary("hellojni")`这行代码告诉JVM加载名为`hellojni`的本地库。 ##### 2. 生成Class文件 生成Class文件有两种方式: - **使用命令行工具**:进入Java源码所在目录,使用`javac`命令编译Java文件...

    JNI之Hello-JNI进阶

    2. 编写HelloJni工程,在主Activity(本例:HelloJni.java)里声明native函数: 如下: public native String stringFromJNI(); public native double add(double a, double b); public native double sub...

    JNI调用C++代码和C++层回调java层 demo

    例如,我们可以创建一个名为`HelloJni`的Java类,包含一个`sayHelloFromCpp`的native方法: ```java public class HelloJni { static { System.loadLibrary("hello-jni"); // 加载本地库 } public native void...

    ubuntu上面使用jni例子

    gcc -shared -o libfirstjni.so -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux HelloJNI.c ``` 这会生成一个名为`libfirstjni.so`的动态链接库。 6. **运行...

    jni的Hello demo

    - 创建一个Android Studio项目,包含一个简单的Java类,例如`HelloJni`,该类将声明本地方法,这些方法将在C/C++代码中实现。 3. **设置JNI目录结构** - 在项目的`src/main/jni`目录下,创建头文件(`.h`),声明...

Global site tag (gtag.js) - Google Analytics