1. 程式人生 > >Eclipse下Android NDK開發環境搭建

Eclipse下Android NDK開發環境搭建

第一步,下載ADT和NDK

最新的ADT(Android Development Tool)包含有ADT外掛及NDK外掛,不過對於ADT,官網已經不提供下載了,我們可以到第三方平臺下載,然後在Eclipse中進行安裝。

第二步,開啟Eclipse,點Window->Preferences->Android->NDK,設定NDK路徑,例如路徑:D:\android-ndk-r12b

在android-ndk-r12b目錄下建立一個名為ndk-build的空檔案,重新整理對話方塊再次嘗試,錯誤提示沒了。
image

第三步,新建一個Android工程,在工程上右鍵點選Android Tools->Add Native Support…,然後給即將生成的.so檔案取個名字,例如:hello-ndk

image

點選確定,這時候工程就會多一個jni的資料夾,jni下有Android.mk和hello-ndk.cpp檔案。Android.mk是NDK工程的Makefile,hello-ndk.cpp就是NDK的原始檔。

image

不過這時候,IDE又報了一個錯誤:

[2016-09-23 11:52:14 - Unable to launch cygpath. Is Cygwin on the path?] java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶

解決辦法:工程右鍵,選擇Properties選項,進入C/C++ Build選項:

這裡寫圖片描述

選擇Environment選項,點選Add按鈕,設定環境變數NDKROOT,Value就是你解壓出來的NDK目錄

這裡寫圖片描述

點選確定,最後再去clean工程就不會報錯了。

**** Clean-only build of configuration Default for project Test ****

D:\android-ndk-r12b\ndk-build.cmd clean 
Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 8 in ./AndroidManifest.
xml [arm64-v8a] Clean : hello-ndk [arm64-v8a][arm64-v8a] Clean : stdc++ [arm64-v8a][x86_64] Clean : hello-ndk [x86_64][x86_64] Clean : stdc++ [x86_64][mips64] Clean : hello-ndk [mips64][mips64] Clean : stdc++ [mips64][armeabi-v7a] Clean : hello-ndk [armeabi-v7a][armeabi-v7a] Clean : stdc++ [armeabi-v7a][armeabi] Clean : hello-ndk [armeabi][armeabi] Clean : stdc++ [armeabi][x86] Clean : hello-ndk [x86][x86] Clean : stdc++ [x86][mips] Clean : hello-ndk [mips][mips] Clean : stdc++ [mips] **** Build Finished ****

實際上執行的NDKROOT所對應的目錄下的指令碼檔案ndk-build.cmd。

第四步,編寫JNI檔案

在生成的cpp檔案中輸入一個j然後按Alt + ‘/’,但是沒有提示,這是由於沒有匯入標頭檔案的緣故,那我們就手動匯入標頭檔案吧,右鍵工程專案,進入Properties,選擇C/C++ General選項下的Paths and Symbols,然後點選Add:

這裡寫圖片描述

並一個一個按確定,最後回到編輯器,此時再按Alt + ‘/’就會有提示了。

編寫好hello-ndk.cpp檔案如下:

#include <jni.h>
#include <string.h>

jstring Java_com_example_test_MainActivity_stringJNI(JNIEnv* env,
        jobject thiz) {
    return env->NewStringUTF("Hello NDK");
}

這裡JNI介面的命名規範是:Java_ + 呼叫該方法的包名(包名的點用代替) + + 呼叫該介面的類名 + _ + 方法名。對於例項方法,有兩個引數是必要的,一個JNI的環境指標JNIEnv *,另一個是呼叫該方法的Java例項jobject
hello-ndk.cpp:

專案裡還有一個Android.mk檔案,它是自動生成的,可以不用修改:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-ndk
LOCAL_SRC_FILES := hello-ndk.cpp

include $(BUILD_SHARED_LIBRARY)

最後是Activity類呼叫ndk的程式碼,在MainActivity.java檔案中:

package com.example.test;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {
    static {
        System.loadLibrary("hello-ndk");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public native String stringJNI();
}

這裡要注意,使用ndk庫時必須在static程式碼塊裡面用System.loadLaibrary載入.so庫

第五步,執行程式碼

執行之前先編譯NDK,然後在編譯JAVA程式碼,我們選擇專案,右鍵Build Project,編譯成功會生成相應的so庫檔案:

這裡寫圖片描述

最後執行,成功,這是因為我本地顯示的是c專案:

這裡寫圖片描述

倘若是C++檔案,執行時會崩潰,遇到java.lang.UnsatisfiedLinkError: stringFromJNI錯誤,此時需要在C++檔案函式定義前加上extern “C”的修飾,表示從C語言匯出,編譯器會按C語言的方式編譯和連線。

#include <jni.h>
#include <string.h>

extern "C" {
jstring Java_com_example_test_MainActivity_stringJNI(JNIEnv* env,
        jobject thiz) {
    return env->NewStringUTF("Hello NDK");
}
}

因為在C語言中,函式編譯之後函式名與C++函式編譯之後不同。例如foo(int x, int y),C可能會編譯成_foo的名字,而C++因為支援過載,所以會編譯成像_foo_int_int這種帶引數的函式名。如果是按照C語言的編譯方式,呼叫foo函式是找不到_foo的函式名的,這時就會報出函式名找不到的錯誤,所以要新增extern “C”修飾。

相關推薦

EclipseAndroid NDK開發環境搭建

第一步,下載ADT和NDK 最新的ADT(Android Development Tool)包含有ADT外掛及NDK外掛,不過對於ADT,官網已經不提供下載了,我們可以到第三方平臺下載,然後在Eclipse中進行安裝。 第二步,開啟Eclipse,點Wi

windowsAndroid NDK開發環境搭建

Android NDK是Android Native Developement kit的縮寫。 Android程式執行在Dalvik虛擬機器中,NDK允許使用者使用類似C / C++之類的原生程式碼語言執行部分程式。 Android 應用開發中,可以通過Android ND

android NDK 開發環境搭建

1.下載android ndk 推薦版本為:android-ndk64-r10b-windows-x86_64 2.配置NDK,點Window->Preferences->Android->NDK,設定NDK路徑。 3.為eclipse 配置生成jni呼叫標頭檔案的命令工具,具體設定如下:

UbuntuAndroid Studio開發環境搭建

Ubuntu下Android開發環境搭建 Ubuntu系統下Android開發環境搭建,Google提出新的開發工具Android Studio,這裡就搭建Android Studio開發環境搭建。 一、Ubuntu下JDK處理 首先,需要安裝JDK,Ubuntu系統上Op

android NDK開發環境搭建(新)

 使用最新ndk,直接拋棄cygwin,以前做Android的專案要用到NDK就必須要下載NDK,下載安裝Cygwin(模擬Linux環境用的),下載CDT(Eclipse C/C++開發外掛),還要配置編譯器,環境變數,特別麻煩,新版就不需要了 1.Android官網下載

android NDK開發環境搭建

轉自: http://blog.chinaunix.net/uid-26524139-id-3206370.html 基於 Android NDK 的學習之旅-----環境搭建 工欲善其事必先利其器 , 下面介紹下 Eclipse SDK NDK Cygwin CD

Windows作業系統Android SDK開發環境搭建

2、從網址http://www.eclipse.org/downloads/下載eclipse,最好是下載Eclipse IDE for Java Developers,而不是Eclipse IDE for Java EE Developers(好像其後某安裝步驟失敗)。

windowsAndroid studio開發環境搭建教程

一、準備工作 此處有幾點需要提醒: 1、Android studio要求JDK版本為JDK7及更高版本 2、確認自己電腦作業系統是32位還是64位,一定下載對應的JDK版本:“Windows x86”–對應Windows 32位機器,還是“W

android NDK 開發環境搭建r10免編譯器安裝版

1)開啟Android開發者的官網 http://developer.android.com/ 找到Develop點選。如果頁面打不開,通過代理來訪問。 2)進入後再點選Tools 3)進入後在左側找到NDK點選,可以見到各種平臺的NDK r10。 選擇

蘋果mac系統cocos2d android和ios含NDK開發環境搭建 安裝說明20161129

mac系統上搭建android cocos2d環境 包括NDK等 一、工具 不能用中文路徑或放在中文路徑下 1.這不用下載:android sdk映象 https://dsx.bugly.qq.com/repository/1 更新android sdk 4.4.2

android -------- EclipseNDK配置環境

AR 註意 OS inf clip and per https Go NDK 全稱是Native Development Kit,是一個讓開發人員在Android應用中嵌入使用本地代碼編寫的組件的工具集 原生開發工具包 (NDK) 是一組可讓您在 Android 應用中利用

Android Studio NDK開發環境搭建

com mce 添加 library 功能 安裝 def 配置 art 一、 下載安裝Android studio 和 NDK 二、 在Android studio中配置NDK(和SDK配置一樣) 三、 用Android studio建立一個工程,打開proje

ubuntu14.04搭建Android-NDK開發環境

1.建立Android平臺工作空間 mkdir AndroidWorkSpace 2.進入Android平臺工作空間,建立NDK工具目錄 cd AndroidWorkSpace mkdir NDK_Tools 3.獲取android-ndk-r10b 下載:wget ht

開源BI報表及OLAP多維分析平臺OPENI(二)—搭建Eclipse的Openi開發環境

接著上節的demo來看如何在Eclipse下搭建Openi的開發及除錯環境. 一.下載openi-1.3.0-RELEASE-src 二.新建web project 在MyEclipse下新建web project:openi 1.openi-1.3.0-RELE

AndroidNDK開發環境搭建

搭建Android 及 NDK 開發環境 一, 準備工作 二, Eclipse的配置 1, eclipse下安裝Android外掛 (1) 開啟Eclipse, 在選單欄上選擇 help->Install New Sof

Mac os x環境配置 Android ndk 開發環境eclipse篇)

1.請確保安卓環境已經存在 3. 配置 .bash_profile 開啟終端,輸入命令 pico .bash_profile 首先 export PATH=${PATH}:/Users/Malone/Documents/android-ndk-r13b

Android Studio的NDK開發環境搭建

目標 由於要涉及到音視訊的開發,所以要用到JNI,之前一直用AS2.0的,發現用這個做NDK開發太麻煩了,後來看到動腦學院老師的一個教學視訊,android studio的NDK開發配置,做了一個學習筆記,視訊可以百度搜索的到。 配置要求 Android

Win7 OpenCV+Qt開發環境搭建

tro enc 銷毀 vid 使用 detect ack text [] 1、所需軟件工具: (1)OpenCV開發庫,2.4.9版;包括源文件(source文件夾)和編譯後的文件(build文件夾),但最好自己使用CMake又一次編譯。否則easy出錯。 (2

Android Studio安裝部署系列】二、Android Studio開發環境搭建

alt nand inf ima str php span 開發環境搭建 index.php 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 Android Studio開發環境安裝步驟 下載Android Studio 下載地址: http://ww

Android原始碼開發環境搭建

轉自:http://gityuan.com/2016/08/13/android-os-env/ 一. 準備 本文介紹採用Android Studio來搭建原始碼除錯環境 1.1 下載Android Studio **調整記憶體大小: ** Android Studio需要大量的記憶