1. 程式人生 > >Android NDK編譯 ndk-build方式

Android NDK編譯 ndk-build方式

因很少使用NDK編譯,每次在涉及到這一塊的時候都會忘記NDK開發的開發的環境配置和開發步驟。

所以今天自己做下筆記記錄下開發步驟:

環境:AndroidStudio2.3,Ubuntu14.0,android-ndk-r14b,java8;

第一步:配置NDK環境,直接上圖:NDK可以自己下載再配置,也可以通過Android sdk->sdk tools 下載。

上面都不用說,使用AS的人都應該懂得,微笑

第二步:在工程的gradle.properties中配置android.useDeprecatedNdk=true,目的是:告訴編譯器使用本地的NDK環境。

第三步:建立Java類生成Jni對應.h標頭檔案


Jni目錄以及標頭檔案生成方式:切換到AS的Terminal終端控制檯下,進入工程的java目錄下按照如下方式可在main目錄下生成Jni目錄及標頭檔案:

[email protected]:~/AndroidStudioProjects/NdkDemoLian1/app/src/main/java$ javah -d ../jni ndklian.lixby.com.ndkdemolian1.NdklianOne

javah -d ../jni :在該目錄的上一級建立jni目錄;

ndklian.lixby.com.ndkdemolian1.NdklianOne:生成這個目錄下對應類的標頭檔案

如圖:


第四步:在build.gradle中配置NDK環境:

defaultConfig {
    applicationId "ndklian.lixby.com.ndkdemolian2"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    //需要配置的地方
ndk{
        moduleName "liantwo"
}

}

moduleName:表示將要生成的so檔案的名稱,不需要新增“lib”。

當然也可以配置其他:如abiFilters "arneabi-v7a",要生成CPU平臺的庫檔案型別。

第五步:在jni目錄下建立LianTwo.c 檔案並關聯生的標頭檔案,並編寫對應的Jni方法函式。

#include "ndklian_lixby_com_ndkdemolian2_LianTwo.h"


第六步:編譯生成so檔案,Rebuild Project 就會進行NDK編譯,並生成so檔案。

so動態庫生成目錄在app/build/intermediates/ndk/debug/lib/ 目錄下。


最後使用時別忘記通過System.loadLibrary("lianone")進行載入。

Over!

相關推薦

Android NDK編譯 ndk-build方式

因很少使用NDK編譯,每次在涉及到這一塊的時候都會忘記NDK開發的開發的環境配置和開發步驟。所以今天自己做下筆記記錄下開發步驟:環境:AndroidStudio2.3,Ubuntu14.0,android-ndk-r14b,java8;第一步:配置NDK環境,直接上圖:NDK

超詳細的安卓ndk編譯的兩種方式ndk-build和cmake)

一、概述         搞安卓的工作中難免需要使用native的方法,高效,安全。。。優點就不說了。以前使用到native方法的時候,都是臨時抓起來一種方式就用了,也沒詳細整理兩種方式的差別和詳細的使用方式,雖然不復雜,但是中間還是有很多小細節需要注意的。雖然ndk-bu

android ndk 編譯的時候指令集的選取

文章 span tag androi ndk 有時 oca class word android ndk在編譯的時候默認生成的是thumb指令(拇指)不是arm(手臂)指令,但是有時候在看反匯編的時候,不太熟悉thumb指令或者說thumb指令看起來更費勁,需要生成arm指

Android】Eclipse自己主動編譯NDK/JNI的三種方法

comm tro mman gnu tex android項目 syn color ng- 【Android】Eclipse自己主動編譯NDK/JNI的三種方法 SkySeraph Sep. 18th 2014 Email:[email protec

NDK編譯可執行文件在Android 中運行顯示error: only position independent executables (PIE) are supported.失敗問題解決辦法。

Language target 安全 問題 可執行 port ace 知識 基於 由於使用了NDK編譯的可執行文件在應用中調用,在Android 7.0上的運行情況發現,當運行該可執行文件時,報如下錯誤: error: only position independent e

NDK開發使用cMake方式 - 添加其他的預編譯

csdn per highlight 方式 make ati lists sdn jni NDK 開發使用cMake方式,網上能找到不少的教程,這裏推薦一篇博文: http://blog.csdn.net/wl9739/article/details/52607010 關於

NDk編譯opencv for Android,並引用在Unity3d遊戲中的一般步驟

ret app sset cpp unity3d 環境 ptr small var 本文使用:Unity3d + opencv + Android Unity3d中可以調用opencv 編譯好的.so 動態庫,在生成Android apk時可以正常運行。 因為An

AS中ndk-build方式cpp問題集錦

都沒有 strings 添加 重新編譯 經驗 fun nts border for 想用c++代碼在Java中調用,之前也一直OK調用.so庫和jni接口,但不知道為什麽在AS3.0上一直報標準庫找不到;還有一個變動就是AS2.2以後ndk編譯默認采用cmake了,這就導致

關於 D:\BaiduYunDownload\android-ndk-r10d\ndk-build.cmd問題的解決方案

至於opencv 和android環境的配置問題可以參照 http://blog.csdn.net/pwh0996/article/details/8957764 經過一路的配置後,會發現一個問題就是 D:\BaiduYunDownload\android-ndk-r10d\ndk-b

(轉)Android NDK編譯Openssl-1.1.0f靜態庫

https://blog.csdn.net/ljttianqin/article/details/72991869 0 前言 按照原始碼C:\openssl-1.1.0f下的INSTALL檔案中的編譯指導,在Windows中用Cygwin模擬Linux環境順利編譯出libcrypt.a和libs

Android ndk編譯FFMPEG/IJKPlayer報錯 `ndk missing -D__STDC_CONSTANT_MACROS` 解決辦法

本地編譯ijkplayer, 需要除錯ndk, 按照`0003-armv7a-enable-debugging-with-LLDB.patch`所說進行修改. 但是執行時提示: ndk missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONS

protobuf使用(一)android ndk 編譯 protobuf-3.6.x windows

首先建議大家看好版本,環境,有可能因為小的變化會造成編譯有問題:  我的環境是 PC  OS: windows10(沒辦法暫時沒機器); NDK: android-ndk-r17b-windows-x86_64 proto : syntax = "proto

Android開發】:在任意目錄執行NDK編譯

本文以簡單的例子講述如何在任意目錄把自己寫的C程式碼使用NDK提供的交叉編譯該工具來編譯成Android可使用的靜態庫/動態庫。 1. 準備環境 首先,你得安裝了Android的NDK編譯工具,假設你的NDK的根目錄在 /opt/android/ndk . 當然

NDK編譯Android上執行的C可執行程式

大部分講到NDK編譯的都是針對編譯動態靜態庫的,有些特殊的需求需要編譯成可執行檔案,所以在此記錄一下 本文基於win7 首先NDK的目錄需要加到系統路徑中去,這樣ndk-build才能正常呼叫,ndk-build本身是一個指令碼,依賴於jni資料夾,所以你的程式必須放在jn

基於NDK編譯Android平臺的FFmpeg動態庫

需求 FFmpeg在Linux平臺(如Ubuntu)上的支援已經比較完善了,如前述文章介紹 http://blog.csdn.net/ericbar/article/details/73702061,我們很容易就可以基於FFmpeg+SDL實現一個播放器,比

android ndk編譯錯誤

if [ -f $1.org ]; then  sed -e 's!^E:/android/Cygwin/lib!/usr/lib!ig;s! E:/android/Cygwin/lib! /usr/lib!ig;s!^E:/android/Cygwin/bin!/usr/bin!ig;s! E:/andro

clang(llvm)命令呼叫android NDK 編譯C應用

在window下載的android NDK解壓後,可以用如下命令,安裝NDK獨立編譯工具。這樣再用命令時不用帶一把引數了。 "D:\Program Files\python27\python" make_standalone_toolchain.py --arch arm

window環境下使用ndk編譯android studio/Eclipse能使用的ffmpeg動態庫

window環境下使用ndk編譯出android studio 能使用的ffmpeg動態庫 目錄 ffmepg介紹 FFmpeg是一套可以用來記錄、轉換數字音訊、視訊,並能將其轉化為流的開源計算機程式。採用LGPL或GPL許可證。它提供了錄製、轉

Android NDK編譯選項設定

       在Android NDK開發中,有兩個重要的檔案:Android.mk和Application.mk,各盡其責,指導編譯器如何編譯程式,並決定編譯結果是什麼。本文將詳細說明幾個常見的N

在window下用android-ndk編譯android下可執行程式的方法。

環境,win7,與android-ndk-r13b-windows-x86_64,把android-ndk-r13b-windows-x86_64解壓在目當中就可,不用安裝 1,只用gcc工具 D:\android-ndk\android-ndk-r13b\toolcha