Android NDK学习起航之路之先买一艘船

      感觉Android写了这么久了, 也该学点装逼的技能了。所以我把目光放在了NDK和C++上,只要玩转了这两个, 我就能去玩OpenCV和TensorFlow了,想想就美滋滋。今天先来基础配置一个最简单的NDK环境。基于AndroidStudio 3.2,使用Cmake

第一步,先安装环境吧。把这三个都先安装好

第二步,给工程配置好NDK环境

File----Project Structure,配置好箭头所指的NDK

三.写一个Java的native方法,传入两个数字,返回求和结果

public class TestJNI {
    public static native int getString(int num1,int num2);
}

(前提是要先配置好JDK环境)

根据native生成头文件,进入到src/main/java的路径下,然后执行javah -d ../cpp com.xiaonan.learntemp.TestJNI   生成完毕就会有头文件产生

四.写CPP实现文件

复制.h文件内容,更改为.cpp后缀,然后实现方法。记得include头文件

五.编写CMakeLists.txt文件,这个文件和mk文件一样,只是语法不同

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

set( CMAKE_CXX_FLAGS "-std=c++11" )
#设置编译so名字
set(PROJECT_NAME native)
#设置编译路径
set(SRC_DIR src/main/cpp)
#设置编译文件列表
file(GLOB_RECURSE cpp_src "${SRC_DIR}/*.cpp")#指定当前目录下的所有.cpp文件(包括子目录)
#三个参数分别为(so名称,类型,cpp路径)
add_library( ${PROJECT_NAME} SHARED ${cpp_src})


六.调整gradle文件。这里两块一定注意,我已经采坑了

第一部分是defaultConfig中的externalNativeBuild,这里两个参数

第二部分是android标签下的externaleNativeBuild标签

七.使用就可以了

后记。

1.AndroidStudio生成的so文件目录和Eclipse不同,Eclipse最后在libs下,AndroidStudio最后生成的路径在.....\build\intermediates\cmake\debug\obj下面。

2.可以通过build标签下的Analyze APK功能查看so文件最后有没有打入APK中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值