盡管Android Studio已經(jīng)越來越流行了,但很多人還是習(xí)慣于Eclipse或源碼環(huán)境下開發(fā)JNI應(yīng)用。個(gè)人認(rèn)為使用Android Studio作NDK開發(fā)是必然趨勢,所以本文將簡單介紹如何在Android Studio上實(shí)現(xiàn)NDK開發(fā)。
蘭西ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!簡介
JNI
JNI 是Java Native Inteface的縮寫,是Java中定義的一種用于連接Java和C/C++接口的一種實(shí)現(xiàn)方式。
NDK
NDK 是 Native Developmentit的縮寫,是Google在Android開發(fā)中提供的一套用于快速創(chuàng)建native工程的一個(gè)工具。
使用這個(gè)工具可以很方便的編寫和調(diào)試JNI的代碼。
NDK可從官網(wǎng)或jb51.net下載。
Gradle
Gradle 是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化建構(gòu)工具。它使用一種基于Groovy的特定領(lǐng)域語言(DSL)來聲明項(xiàng)目設(shè)置。
以往Android NDK開發(fā)需要在Eclipse或源碼環(huán)境下,建立并配置Android.mk和Application.mk,且還要通過java命令生成.h頭文件,才能編譯生成so庫。但在Android Studio中這些步驟都不需要,因?yàn)镚radle足夠強(qiáng)大,只需配置Gradle即可編譯生成so庫。
gradle-experimental插件
在2015年5月的Google I/O大會(huì)上, Google宣布Android Studio開始支持NDK開發(fā),通過和JetBrains的合作,將Clion整合進(jìn)了Android Studio 1.3,并免費(fèi)支持NDK C++開發(fā)。
同年7月,在Android Studio 1.3版本上添加了gradle-experimental插件,該插件支持NDK開發(fā)和調(diào)試,且?guī)в写a不全和重構(gòu)等高級(jí)功能。
CAVEAT: Note that this plugin is a preview of the plugin for feedback on performance and NDK integration. The Gradle API for the new component model is not final, which means each plugin will only work with a specific version of Gradle.
Additionally, the DSL may also change.
目前這個(gè)插件是預(yù)覽插件,并不是正式的。意味著插件只能運(yùn)行在特定的Gradle版本上。并且DSL(領(lǐng)域特定語言)也要改變。
使用Experimental插件進(jìn)行NDK開發(fā)
使用Experimental插件的必要條件
1、Gradle-2.5或更高版本
2、Android Studio 1.3 RC1或更高版本
3、Android NDK r10e 或更高版本
4、Build Tools 19.0.0 或更高版本
每個(gè)版本的experimental插件需要特定的Gradle版本
Plugin Version | Gradle Version |
---|---|
0.1.0 | 2.5 |
0.2.0 | 2.5 |
0.3.0-alpha3 | 2.6 |
0.4.0 | 2.8 |
0.6.0-alpha1 | 2.8 |
0.6.0-alpha5 | 2.10 |
0.7.0-alpha1 | 2.10 |
NDK開發(fā)步驟
1、新建一個(gè)Android標(biāo)準(zhǔn)工程
2、按F4打開工程配置
3、使用experimental插件需要對(duì)以下三個(gè)文件做修改:
./build.gradle ./app/build.gradle ./gradle/wrapper/gradle-wrapper.properties