1. 程式人生 > >使用Android Studio與Eclipse開發NDK的對比

使用Android Studio與Eclipse開發NDK的對比

最近開發的一個專案中用到了JNI,所以針對Android的兩大IDE開發NDK做了一下對比。

Android Studio開發NDK的配置

我使用的是穩定版的2.0的外掛,預設情況下它是不支援NDK的,即如果你在build.gradle中配置了ndk屬性是無法別識別的。

這個時候我們只需要在gradle.properties中配置以下屬性即可

android.useDeprecatedNdk=true

當我第一次配置時,android studio報錯無法識別前邊提到的ndk屬性,提示在gradle.properties檔案中新增上面的屬性。

網上有很多文章提到使用試驗版的外掛以支援ndk,我覺得這樣費事費力,而且遷移專案時容易遇到麻煩,畢竟使用穩定版外掛的還是大多數。

從建立專案到一步一步新增實現JNI的整個流程網上有很多,這裡就不再贅述,這裡邊貼一個連結 - 用Android Studio 執行ndk 程式

Eclipse開發NDK的配置

兩者的區別

編譯配置

編譯配置主要包括3個部分:library的名字,支援的cpu架構,需要編譯的原始碼

以android官方提供的例子”HelloJNI”為例,這些配置在兩個檔案中:Android.mk與Application.mk

Android.mk檔案內容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE
:= hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY)

Application.mk檔案內容如下:

APP_ABI := all

由上可以很方便的看出來,library的名字和哪些原始碼需要編譯一般在Android.mk檔案中配置,而Application.mk檔案一般負責指定支援哪些cpu架構。

如果我們使用Eclipse,則上面的配置檔案必不可少,否則IDE無法編譯c/c++程式碼。
但是到了Android Studio,這兩個檔案則被build.gradle中的ndk屬性取代了。

下面是在Android Studio中等價的配置

ndk {
      moduleName "hello-jni"
      // adbFilters "armeabi", "armeabi-v7a", "x86"
        }

如果要指定支援的cpu架構,則可以取消上面的註釋,否則則會生成所有支援的cpu架構的libraries

其實ndk屬性的配置只是對Android.mk的配置做了一層封裝,如果你觀察仔細的話,會在目錄build/intermediates/ndk/debug中發現IDE自動幫你生成了Android.mk檔案,內容如下

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := jni-util
LOCAL_LDFLAGS := -Wl,--build-id
LOCAL_SRC_FILES := \
    /XXX/HelloJNI/src/main/jni/hello-jni.c \

LOCAL_C_INCLUDES += /XXX/HelloJNI/src/main/jni
LOCAL_C_INCLUDES += /XXX/HelloJNI/src/debug/jni

include $(BUILD_SHARED_LIBRARY)

可以看到,與Eclipse版本里的Android.mk檔案內容基本一致。

C++編碼支援

在這個方面,Android Studio甘拜下風,在它裡邊寫程式碼就像在記事本里邊寫一樣,沒有任何程式碼提示。
在Eclipse中可以在專案屬性中的”C/C++ general”->”Paths and Symbols”裡配置開發使用到的標頭檔案,配置好之後就有程式碼提示和跳轉功能了,配合Eclipse平臺上的CDT外掛,編寫C++程式碼還是比較方便的。

Native除錯

Android Studio倒是除錯成功了,不過需要在build.gradle中新增以下配置,參考 build type isn’t jni debuggable error

debug {
         debuggable = true
         jniDebuggable = true
}

總結

如果要編寫比較多的C++程式碼,那麼還是不要用Android Studio了,畢竟記事本的效率大家可想而知。
其它的比如編譯、除錯Android Studio支援的還不錯,相信以後的版本會支援的更好,包括寫C++程式碼。

相關推薦

使用Android StudioEclipse開發NDK對比

最近開發的一個專案中用到了JNI,所以針對Android的兩大IDE開發NDK做了一下對比。 Android Studio開發NDK的配置 我使用的是穩定版的2.0的外掛,預設情況下它是不支援NDK的,即如果你在build.gradle中配置了ndk屬性

Android annotations快速開發框架使用,Android StudioEclipse配置

Androidannotations框架是目前最火的Andorid端快速開發框架,通過註解方式挺高開發效率,減少重複編寫沒有技術含量的程式碼。       使用AndoridAnnotations框架的理由:      

Android Studio Eclipse 快捷鍵對照及AS常用快捷鍵

Ctrl+D: 集合了複製和貼上兩個操作,如果有選中的部分就複製選中的部分,並在選中部分的後面 Ctrl+空格: 輸入程式碼時按此組合鍵會列出與之相匹配的類、方法名、成員變數等,起智慧提示的作用 Ctrl+向下箭頭 或Ctrl+向上箭頭:在有自動匹配下拉列表時,此快捷鍵會自動關掉下拉列表,游標移動到下/上一

Android Studio配置CMake開發NDK

1.在SDK Tools中勾選安裝CMake、LLDB、NDK 2.配置一些快捷方式 引數講解 javah 用於生成標頭檔案 Program:$JDKPath$/bin/javah Parameters:-d

Android Studio夜神模擬器開發除錯-初學者

使用Android Studio與夜神模擬器開發除錯 1.1 啟動android studio 1.2 啟動夜神模擬器 1.2.1 cmd開啟命令列視窗 1.2.3 執行命令連線模擬器 “D:\Program Files\Nox\bin”\nox_

Android Studio:如何使用Android Studio夜神模擬器開發除錯

1、什麼是夜神模擬器?     夜神模擬器是北京多點線上科技有限公司開發的一款Android手機遊戲模擬器,執行速度快,使用方便,是一款PC平臺玩手遊,助攻Android開發的利器,樣子如下所示:

android studio 2.3 cmake ndk開發第一個專案執行

勾選support c++的ndk配置 建立專案 新增 defaultConfig {             ndk{             moduleName "HelloJni" //so檔案: lib+moduleName+.so             ab

打造你的開發神器——Android Studio外掛合體

1. Android Parcelable code generator 顧名思義,這是個生成實現了Parcelable介面的程式碼的外掛。 在你的類中,按下alt + insert鍵彈出插入程式碼的上下文選單,你會看到在下面有一個Parcelable,如下所示。選擇

Android studiogithub的使用(多人開發原始碼同步問題)

之前和朋友一起寫一個Android APP,程式碼不算難,只是要我們一起寫,這就出了一些程式碼合併上以及同步的問題。 今天講的主要是GitHub上分支保持與主幹原始碼同步的問題。 之前使用的時候就是專案掛在筆者的GitHub上,別人修改的程式碼提交一個pull reque

如何將Android Studio華為軟體開發雲程式碼倉庫無縫對接(一)

隨著智慧手機的出現和普及,手機在改變時代的同時,也帶動著許多行業的發展。隨著移動端的火熱,越來越多的人開始投身於APP開發的浪潮中。 而Android Studio作為谷歌官方Android開發工具,在移動端開發中佔了舉足輕重的地位。今天我們就來簡單介紹下,如何將And

如何將Android Studio華為軟體開發雲程式碼倉庫無縫對接(二)

上一章講了,如何用Android Studio以軟體開發雲程式碼倉庫為基礎,新建一個專案。接下來,這一章繼續講建好專案後,如何通過Android Studio去對華為軟體開發雲程式碼倉庫進行更新、上傳程式碼等操作。 首先,開啟Android Studio,將上一章通過

Android StudioEclipse的項目作為module的依賴庫

oid 編譯 依賴 default mpi 當前 build port key 情形: 我們現在有一個eclipse的項目,我們想把這個項目作為android studio的module的一個依賴庫。 以前我們在eclipse的時候常常是在一個工作區裏面把一個A工

關於mac android studio svn 解除關聯後 無法再次share (Subversion) 的解決辦法

pre lac lan n) con oid directory ppi files Android studio 把工程share 到 svn 上面,可是一不小心忘了 ignore files 的設置,結果沒辦法,把svn 上的刪掉再重新share 一次,先接觸本地代碼與

android studio 手機連接調試

too 連接方式 找到 other 手機屏幕 以及 網上 platform ngs android studio 版本不同 連接手機方式有細微的不同,主要方式相似。介紹主要分手機和電腦兩部分介紹。 一、手機部分 1、手機端下載一個“一鍵root權限獲取“,在安裝的過程中需要

android studio使用CMake和NDK,實現應用自身被卸載時打開某一網址

licensed 項目 右鍵 ava 開發工具 not per 2.0 idt 實現應用自身被卸載時打開某一網址的c代碼 MyActivity: public class MyActivity extends Activity { /** * Calle

Android Studio多Module開發需要註意的問題

CI 完成 xen icon and schema In tools targe 多module開發,其中的一個為入口module,其他module為獨立的“應用”(library) 1.在原有的項目導入另外個項目的module為主項目的次module,即在A項目

Android studio 下 JNI 開發實例

ndk create void 上層 執行效率 約束 添加 src 傳輸協議 在AS中進行 NDK 開發之前,我們先來簡單的介紹幾個大家都容易搞懵的概念: 到底什麽是JNI,什麽是NDK? 何為“交叉編譯”? 先看什麽是 JNI?JNI 的全稱就是

Idea常用快捷鍵,IdeaEclipse快捷鍵對比

編輯 方法調用 相同 dea 內容 窗口 取消 eclips The 操作EclipseIDEA 刪除一行 Ctrl+D Ctrl+Y 關閉當前窗口 Ctrl+W Ctrl+F4 上移、下移一行 Alt+↑、↓ Ctrl+Alt+↑、↓ 回退操作 C

Android Studio夜神模擬器的連結教程

1. 什麼是夜神模擬器?    夜神模擬器是北京多點線上科技有限公司開發的一款Android手機遊戲模擬器,    執行速度快,使用方便,是一款PC平臺玩手遊,助攻Android開發的利器 2. 使用Android Studio與夜神模擬器開發

Android studio 下 JNI 開發例項

 在AS中進行 NDK 開發之前,我們先來簡單的介紹幾個大家都容易搞懵的概念:  到底什麼是JNI,什麼是NDK?  何為“交叉編譯”?     先看什麼是 JNI?JNI 的全稱就是 Java Native Interface,即java本地開發介面。可能大家和我一樣,一聽到介面什麼的就犯懵:“