`
izuoyan
  • 浏览: 9030522 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用jni接口完成android本地程序的运行--具体的操作

阅读更多

虽然上一篇文章《使用jni接口完成android本地程序的运行》讲述了一些理论上的知识,但是如何具体操作呢?要知道android的java虚拟机与标准的jvm是不一致的,因此肯定会遇到具体操作的问题。实际上,具体操作也不难,只要按照android文档的介绍按部操作即可:
1.在apps目录下拷贝一个最简单的例子,比如hello-jni作为模板,命名为你的应用的名称,然后删除其下的和hello-jni相关的内容;
2.将需要编译的源代码树拷贝到jni目录之下;
3.jni目录下的Android.mk文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS := ...#拷贝所有原始Makefile中的CFLAGS/CPPFLAGS/等等一切命令行标志,包括预编译宏的定义
LOCAL_LDLIBS := ...#拷贝所有的链接时用到的动态库路径,动态库,静态库(-L,-l)
LOCAL_MODULE := ...#最终的供java调用的so名称,省略了lib和.so的
LOCAL_SRC_FILES := ...#所有参与编译的源代码文件
include $(BUILD_SHARED_LIBRARY)
4.在apps的上级目录执行:make APP=XXX 即可
5.注意,不能使用网上著名的打包好的droid-gcc工具来利用-fPIC -shared参数生成动态库,那样的动态库是很难直接使用的,必须做很多后续的工作才可以。其实,ndk的作用也就在于省略了很多所谓的后续工作,它简化了生成动态库的过程

分享到:
评论

相关推荐

    Android Studio3.0开发JNI流程------在Android程序中添加自己的类的native方法

    2. **创建JNI接口** 在Java类中声明native方法,例如: ```java public class JNITest { static { System.loadLibrary("jnitest"); } public native void callNativeMethod(); } ``` `System.loadLibrary...

    android jni demo--helloworld

    2. **生成头文件(.h)**:使用`javah`工具(在Android Studio中通常是通过Gradle任务完成)从Java类生成对应的C/C++头文件,例如`HelloJni.h`。这个头文件包含了Java native方法的C/C++函数原型。 3. **编写C/C++...

    Android应用程序使用JNI调用驱动程序

    5. **在Java中调用JNI**:在Android应用程序运行时,通过`System.loadLibrary("mylibrary")`加载.so库,然后就可以调用之前定义的`callDriver()`方法。 以《Android内核源代码情景分析》第二章的freg实例为例,freg...

    JNI入门Demo3.0

    JNI是一种接口,让Java应用程序能够调用本地(非Java)代码,同时也允许本地代码调用Java方法。在早期,JNI的函数需要静态注册,即在Java类中声明`native`方法,并在对应的C/C++代码中手动定义这些方法。这种方法...

    android通过JNI访问硬件LED

    JNI接口定义了Java和本地代码之间的桥梁,使得开发者可以充分利用本地库的功能,例如操作系统服务、硬件设备访问等。 2. **Android与JNI**: 在Android系统中,JNI被广泛用于提高性能、访问底层硬件和利用已有的C/...

    Android Studio jni 程序

    要在Android Studio中引入JNI程序,你需要在Java代码中声明本地方法。例如,你可以在一个类中定义一个native关键字修饰的方法: ```java public class MainActivity extends AppCompatActivity { static { System...

    Android JNI使用demo

    - 在Android系统中,JNI接口是通过NDK(Native Development Kit)提供的,它是一组工具,用于构建和调试本地库。 2. **创建JNI工程**: - 创建一个新的Android Studio项目,选择包含C++支持的模板。 - 在项目的`...

    Qt调用Jni接口获取Android相册图片列表

    在开发跨平台应用程序时,Qt框架提供了一个强大的工具集,允许开发者使用C++编写代码,同时能在多个操作系统上运行,包括Android。而Android系统中的一些原生功能,如访问相册图片,通常需要通过Java语言来实现。...

    Android JNI 用C函数写本地库读写文件,底层调用小例子

    JNI是Android提供的一种接口,使得Java应用程序可以调用C/C++编写的原生代码。这在需要高性能计算、访问硬件特性或利用已有的C库时特别有用。JNI的核心在于`JNIEnv`指针,它是Java虚拟机与本地代码之间的桥梁,提供...

    android下JNI使用方法

    需要注意的是,使用JNI会降低程序的可移植性,因为本地代码通常与特定操作系统和硬件架构相关。此外,JNI编程需要对C/C++和Java的混合编程有深入理解,这增加了开发的复杂性。 在实际开发中,为了简化JNI的使用,...

    安卓串口Socket通讯USB驱动jni相关-Android调用JNI的简单实例附详细步骤.zip

    在Android应用中,JNI接口通常包含在Java类中,通过`System.loadLibrary("name")`加载对应的本地库。"name"是编译后的`.so`文件名,不需要包含".so"后缀。 3. **JNI开发流程**: - 定义Java类,声明`native`方法...

    Android NDK编程首个程序hello-jni

    《Android NDK编程:探索hello-jni的奥秘》 ...通过深入理解这个示例,开发者可以进一步掌握Android原生编程的技巧,包括JNI接口设计、本地库的构建和加载,以及如何在混合代码环境中调试和优化性能。

    最简单的Android JNI程序

    JNI是Java平台的标准接口,它为Java应用程序提供了调用本地方法的能力。在Android系统中,JNI主要用来桥接Java层与C/C++层,使得开发者可以充分利用C/C++的强大性能和灵活性。 二、创建JNI项目 一个简单的Android ...

    android 使用jni调用c++

    NDK是一组工具,开发者可以用它来编写用C和C++编写的应用程序模块,这些模块可以直接在Android设备上运行。安装NDK后,确保将其路径添加到系统的环境变量中,以便在命令行中能够访问。如果你遇到配置问题,建议查阅...

    Android-jni-test for smart210-led

    通过JNI,开发者可以在Android应用中创建本地方法,这些方法可以调用C/C++编写的函数,而这些函数可以直接访问Linux内核中的驱动程序。这通常涉及定义Java native方法,编写对应的C/C++源码,并使用`javah`工具生成...

    安卓串口Socket通讯USB驱动jni相关-Android通过jni控制LED灯.zip

    可能包含C/C++的源代码,定义了如何通过JNI接口与Java层交互,以及如何操作具体的硬件引脚来控制LED灯的亮灭。 由于描述中提到代码可能需要自行调整才能运行,因此在实际使用这些源码时,开发者需要具备一定的...

    Android JNI多线程编程回调JAVA函数

    - JNI接口包括一系列的函数,如`FindClass`, `GetMethodID`, `NewGlobalRef`等,用于在Java和本地代码之间建立桥梁。 2. **JNI多线程编程**: - 在JNI中创建线程通常有两种方式:直接使用C/C++的线程API,如`...

    Android中JNI测试程序

    总之,Android的JNI测试程序涉及到Java和C/C++之间的交互,这需要理解JNI接口的使用、C++库的编译以及Java层的调用。通过这样的实践,开发者可以更深入地掌握Android系统的底层机制,提升应用程序的性能和功能。

    AndroidStudio加载jni

    NDK是一组工具,开发者可以使用它来编写C、C++代码,并将其编译为本地库,这些库可以在Android设备上运行。NDK的主要用途包括性能敏感的计算、游戏引擎、以及使用现有C/C++库。 在Android Studio中配置NDK的步骤...

    安卓串口Socket通讯USB驱动jni相关-androidJNI进程守护service.rar

    这个压缩包文件“安卓串口Socket通讯USB驱动jni相关-androidJNI进程守护service.rar”显然涉及到的关键技术点是Android中的串口通信、Socket通信、USB驱动以及JNI(Java Native Interface)和Service的使用。...

Global site tag (gtag.js) - Google Analytics