1. 程式人生 > >Android NDK學習起航之路之先買一艘船

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.

add_library(
        # so檔案的名字,最後loadLebrary的時候寫這個
        native
        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        # 寫上需要編譯的CPP檔案路徑
        src/main/cpp/native.cpp)

六.調整gradle檔案。這裡兩塊一定注意,我已經採坑了

第一部分是defaultConfig中的externalNativeBuild,這裡兩個引數

第二部分是android標籤下的externaleNativeBuild標籤

七.使用就可以了

後記。

1.AndroidStudio生成的so檔案目錄和Eclipse不同,Eclipse最後在libs下,AndroidStudio最後生成的路徑在.....\build\intermediates\cmake\debug\obj下面。

2.可以通過build標籤下的Analyze APK功能檢視so檔案最後有沒有打入APK中