NDK相关概念与NDK开发步骤

1.什么是NDK(官方网站:https://developer.android.com/tools/sdk/ndk/index.html)
帮助我们开发C/C++代码编译的工具,这个工具可以将C代码编译成so文件,这个有点类似于百度地图的so文件。

2.什么场景可以用NDK
大型CPU处理计算,(复杂的计算交互)不是很复杂就不要用NDK,完全可以原生。
1.代码的保护(因为apk用JAVA编程的代码容易被反编译,C比较难反编译)
2.大部分开源库都是C/C++编写的,所以NDK调用C/C++比较方便。
3.编译移植。可以写共用的库移植到IOS和Android上。

3.什么是交叉编译
在一个平台生成另一个平台可执行的代码。(例如X86平台--一般为我们的电脑平台,生成在Andorid平台生成的代码执行。)

4.jni是什么
既允许JAVA代码和其它语言的代码进行交互。
jni流程:

5.什么是链接库
1.静态链接库
标准头文件stdio.h,文件大, 把所有依赖都放到这里
2.动态链接库
按需所起,编译的时候按需所取,一般都是动态链接库,但是比较容易缺失文件。

6.make文件介绍
既Android.mk文件:

其中ndk-build表示的是我们的最初编译的时候的命令,ndk-stack命令表示我们可以在调试的时候快速定位到错误的页面,samples文件夹是一些示例文件,例如hello-jni,platforms文件夹里面存放可以编译的文件的sdk版本,docs文件夹是说明文档,如果不清楚的时候直接往这里查看。toolchains文件夹是我们链接库工具箱



NDK开发步骤

步骤:
1.创建一个Android项目
2.在JAVA文件中申明一个含有native的静态方法,例如在MainActivity中添加一行这个方法:

public static native String getStringFromC();

3.新建一个jni文件夹
4.利用javah命令声明.h文件,例如:
其中C:\编程软件\android\adt-bundle-windows-x86-20140702\sdk\platforms\android-19\android.jar表示android.jar文件,在sdk的platforms文件找
javah -classpath bin/classes;C:\编程软件\android\adt-bundle-windows-x86-20140702\sdk\platforms\android-19\android.jar -d jni com.example.ndkdemp.MainActivity
5.在jni文件夹里面创建.c文件,并且导入头文件,一般头文件有:

#include<stdio.h>
#include<stdlib.h>
#include"com_example_ndkdemp_MainActivity.h"

其中com_example_ndkdemp_MainActivity.h表示刚才编译的h文件
6.引入Android.mk文件,一般里面的内容有:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NDKDemo
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

其中NDKDemo表示你的名字,然后hello.c表示你要转编译的c文件
7.利用cmd的ndk-build命令进行编译,其中ndk-build命令需要进入到项目的根目录,(当然,要先配置好)
8.编译完以后在要调用的java文件里面先静态的引用刚才的.c文件:

static{
        System.loadLibrary("NDKDemo");
    }

其中NDKDemo文件表示刚才的名字。
9.直接调用方法,就是第一步里面申明的的方法名字。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值