android studio ndk参数,android studio配置ndk开发

网上很多资料都比较旧,我查了一些资料,并且试了一下,总结了一个最简单的配置ndk开发的方法,步骤如下:

1. 在SDK Tools中勾选安装CMake、LLDB、NDK

df92692f245c

image.png

2. 配置External Tools,省去了自己敲命令

参数讲解

javah 用于生成头文件

Program:$JDKPath$/bin/javah

Parameters:-d ../jni -jni $FileClass$

Working directory:$SourcepathEntry$\..\java

ndk-build 用于构建so包

注意:MAC/Linux用ndk-build,没有.cmd后缀

Program:D:\adt\sdk\ndk-bundle\ndk-build.cmd

Parameters:什么都不用填

Working directory:$ModuleFileDir$\src\main

df92692f245c

image.png

我的javah配置是

Program:/usr/bin/javah

Parameters:-d ../jni -jni $FileClass$

Working directory:$SourcepathEntry$/../java

df92692f245c

image.png

我的ndk-build配置是

Program:$ANDROID_HOME/ndk-bundle/ndk-build

Working directory:$ModuleFileDir$/src/main

3. 在工程的local.properties文件中配置NDK的目录

ndk.dir=/Users/user/Library/Android/sdk/ndk-bundle

sdk.dir=/Users/user/Library/Android/sdk

4. 创建CMakeLists.txt

#定义cmake支持的最小版本号

cmake_minimum_required(VERSION 3.4.1)

add_library( # 设置生成so库的文件名称,例如此处生成的so库文件名称应该为:native-lib.so

native-lib

# 设置生成的so库类型,类型只包含两种:

# STATIC:静态库,为目标文件的归档文件,在链接其他目标的时候使用

# SHARED:动态库,会被动态链接,在运行时被加载

SHARED

# 设置源文件的位置,可以是很多个源文件,都要添加进来,注意相对位置

src/main/jni/hello.cpp )

# 从系统里查找依赖库,可添加多个

find_library( # 例如查找系统中的log库liblog.so

log-lib

# liblog.so库指定的名称即为log,如同上面指定生成的libnative-lib.so库名称为native-lib一样

log )

# 配置目标库的链接,即相互依赖关系

target_link_libraries( # 目标库(最终生成的库)

native-lib

# 依赖于log库,一般情况下,如果依赖的是系统中的库,需要加 ${} 进行引用,

# 如果是第三方库,可以直接引用库名,例如:

# 引用第三方库libthird.a,引用时直接写成third;注意,引用时,每一行只能引用一个库

${log-lib} )

文件中的native-lib是我生成的so文件的名字,

src/main/jni/hello.cpp是我实现的native方法所在的类,注意路径不要写错,我的文件所在路径是这样的

df92692f245c

image.png

5. 在模块的build.gradle文件中添加

android {

compileSdkVersion 26

buildToolsVersion "26.0.0"

defaultConfig {

externalNativeBuild {

cmake {

cppFlags ""

}

}

}

externalNativeBuild {

cmake {

path "CMakeLists.txt"

}

}

}

6. 创建native方法

package com.test;

public class NativeHelper {

static {

System.loadLibrary("native-lib");

}

public native String stringFromJNI();

}

7. 编写cpp文件

#include "stdio.h"

#include "jni.h"

#include "string"

extern "C"

JNIEXPORT jstring JNICALL Java_com_test_NativeHelper_stringFromJNI

(JNIEnv *env,

jobject jobject1){

return env->NewStringUTF("hello world from cpp");

}

然后项目就可以运行了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值