`
jxw3042
  • 浏览: 20177 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

NDK 学习笔记

jni 
阅读更多
1,创建jni的java类自动生成jni头文件
a)新建Jni接口类
package com.bb_sz.skyjni.jni;

/**
 * Created by Administrator on 2016/7/7.
 */
public class JniInterface {
    static {
        System.loadLibrary("JniTest");
    }

    public native String getStringFromNative();
}

b)在终端执行命令:
javah -d D:\Android\Client\SkyJni\app\src\main\jni -classpath D:\Android\sdk\platforms\android-19\android.jar;D:\Android\Client
\SkyJni\app\build\intermediates\classes\debug com.bb_sz.skyjni.jni.JniInterface


c)生成了com_bb_sz_skyjni_jni_JniInterface.h头文件
d)javah的用法:
D:\Android\Client\SkyJni>javah -help
用法:
  javah [options] <classes>
其中, [options] 包括:
  -o <file>                输出文件 (只能使用 -d 或 -o 之一)
  -d <dir>                 输出目录
  -v  -verbose             启用详细输出
  -h  --help  -?           输出此消息
  -version                 输出版本信息
  -jni                     生成 JNI 样式的标头文件 (默认值)
  -force                   始终写入输出文件
  -classpath <path>        从中加载类的路径
  -bootclasspath <path>    从中加载引导类的路径
<classes> 是使用其全限定名称指定的
(例如, java.lang.Object)。

2,在jni目录下新建JniInterface.c文件
a)实现代码
//
// Created by Administrator on 2016/7/7.
//
#include <jni.h>
#include <android/log.h>

#ifndef LOG_TAG
#define LOG_TAG "ANDROID_LAB"
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#endif


#ifdef __cplusplus
extern "C" {
#endif


JNIEXPORT jstring JNICALL Java_com_bb_1sz_skyjni_jni_JniInterface_getStringFromNative
        (JNIEnv * env, jobject jObj){
//    LOGE("log string from ndk.");
    return (*env)->NewStringUTF(env,"Hello From JNI!");
}

#ifdef __cplusplus
}
#ifdef __cplusplus
}
#endif
#endif

b)Ctrl +F9执行Make Project命令
c)在app\build\intermediates\ndk目录下找到Android.mk文件
d)拷贝Android.mk文件到jni目录下
e)在jni目录下执行ndk-build生成.so库
f)将.so库拷贝到Android项目中去.
分享到:
评论

相关推荐

    AndroidNDK学习笔记.pdf

    AndroidNDK学习笔记.pdf

    android-ndk 学习笔记

    本笔记主要探讨了Android NDK的使用、安装、配置以及在Android应用开发中的实践。 一、Android NDK简介 NDK为开发者提供了在Android平台上进行原生代码编程的能力,这包括对底层硬件的直接访问和优化,比如图形处理...

    BlogApp:志哥博客《OpenGL.ES在Android上的简单实践》《NDK学习笔记》专栏demo工程

    **NDK学习笔记** NDK(Native Development Kit)是Android开发的一部分,它允许开发者使用C和C++编写原生代码。这在需要高性能计算、利用硬件加速或复用现有C/C++库时特别有用。例如,游戏引擎、音频/视频处理库...

    一个简单的Jni工程包括个人学习笔记

    这个压缩包的“NDK学习笔记”可能涵盖了这些内容,包括如何设置开发环境、创建和调用本地方法、处理不同类型的数据(如数组、对象等)、以及在Android中使用NDK的特定细节,如Android.mk或CMakeLists.txt构建文件的...

    ndk相关笔记

    ** “ndk相关笔记”这一标题明确指向了Android Native Development Kit(NDK)的相关内容,而描述“自己学ndk开发时的一些总结,希望对你有帮助”则暗示了这些笔记是基于个人学习和实践经验的总结,旨在分享对NDK的...

    ndk入门笔记

    这篇入门笔记将通过Android自带的示例程序hello-jni来引导我们了解如何使用NDK进行开发。 首先,使用NDK的主要动机包括: 1. **代码保护**:与Java代码相比,C/C++编写的库更难以被反编译,从而提供了一定的代码...

    Android NDK编程入门笔记

    ### Android NDK编程入门知识点详解 #### 一、Android NDK简介及应用场景 ...通过以上知识点的学习,开发者可以逐步掌握Android NDK的使用,从而在需要高性能或特定硬件访问的应用开发中发挥重要作用。

    ffmpeg学习笔记3 编译fdk-aac(Win10+android-ndk-r22)生成的arm64-v8a动、静态库

    ffmpeg学习笔记3 编译fdk-aac(Win10+android-ndk-r22)生成的arm64-v8a动、静态库 https://blog.csdn.net/aggs1990/article/details/124577004 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者...

    Android_ NDK编程入门笔记

    #### 二、Android NDK入门学习过程 ##### 1. 开发环境的搭建 - **Linux环境**:由于需要生成能在ARM架构设备上运行的.so动态链接库文件,这通常需要通过交叉编译来实现,而交叉编译器通常在Linux环境下更为成熟...

    ffmpeg学习笔记2 编译x265(Win10+android-ndk-r22)生成的arm64-v8a动、静态库

    ffmpeg学习笔记2 编译x265(Win10+android-ndk-r22)生成的arm64-v8a动、静态库 https://blog.csdn.net/aggs1990/article/details/124576351 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者...

    ffmpeg学习笔记1 编译x264(Win10+android-ndk-r22)生成的arm64-v8a动、静态库

    ffmpeg学习笔记1 编译x264(Win10+android-ndk-r22)生成的arm64-v8a动、静态库 https://blog.csdn.net/aggs1990/article/details/124575758 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者...

    ffmpeg学习笔记4 编译libmp3lame(Win10+android-ndk-r22)生成的arm64-v8a静态库

    ffmpeg学习笔记4 编译libmp3lame(Win10+android-ndk-r22)生成的arm64-v8a静态库 https://blog.csdn.net/aggs1990/article/details/124577449 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下 仅供相关爱好者...

    ndk_launcher.zip学习

    launcher.zip学习"进一步强调了这是一个关于实际操作的学习过程,可能包括阅读文档(如`配置NDK集成开发环境全过程第一版.doc`)、研究理论知识(如`Android底层开发平台[1].pdf`)和实践示例(如`Android%20NDK编程...

    Android ROM定制学习笔记

    Android ROM 定制学习笔记 Android ROM 定制学习笔记是一份详细的学习笔记,旨在指导读者如何安装和配置 Android 的底层开发环境,并编译官方的 Android 源代码和 Linux 内核源代码。该笔记还将指导读者如何将编译...

    NDK_DEMO:CC ++开发学习笔记

    《NDK_DEMO:CC++开发学习笔记》 在Android应用开发中,NDK(Native Development Kit)是一个不可或缺的工具,它允许开发者使用C和C++编写底层代码,以实现高性能、低级别的系统操作和硬件访问。这篇学习笔记将深入...

    cocos2dx学习笔记

    这篇学习笔记将引导你了解如何配置Cocos2d-x的开发环境以及基础的使用方法。 ### 一、COCOS2D-X 下载与安装 1.1 **开发环境的安装与环境变量的设置** - **JDK的安装与路径设置**:首先,你需要安装Java ...

    Cocos2d-android-1学习笔记

    【Cocos2d-android-1学习笔记】 Cocos2d是一个开源的游戏开发框架,它为开发者提供了构建2D游戏、动态应用以及各种图形交互式体验的工具。在Android平台上,Cocos2d-x是一个非常流行的分支,它用C++编写,并且支持...

Global site tag (gtag.js) - Google Analytics