Android Studio NDK開發(fā)環(huán)境搭建

1最住、新建一個(gè)項(xiàng)目钞澳,命名隨意,比如叫NDK_demo涨缚,然后新建一個(gè)類NDKUtil轧粟,在里面加入jni方法:

public class NDKUtil 
{    
public static native String test();
}

2、第一步完成,這時(shí)候會發(fā)現(xiàn)方法名是紅色的兰吟,提示是cannot resolve通惫,不急,接下來混蔼,配置ndk路徑履腋,可以從自己去網(wǎng)上下載,也可以通過Android studio下載拄丰,點(diǎn)擊File-->Project Structure府树,在打開的頁面的Android NDK location中選擇你本地解壓的ndk的目錄。
3料按、修改項(xiàng)目下的build.gradle(不是app目錄下的)奄侠,把之前的這句

classpath 'com.android.tools.build:gradle:2.0.0'

替換成

classpath 'com.android.tools.build:gradle-experimental:0.4.0'

要在Android studio上做ndk開發(fā),需要依賴叫experimental的插件载矿。
4垄潮、修改app目錄下的build.gradle文件,未修改前的樣式如下:

apply plugin: 'com.android.application'
android {    
  compileSdkVersion 24    
  buildToolsVersion "24.0.1"    
  defaultConfig {        
    applicationId "com.dhhuanghui.ndk_demo"        
    minSdkVersion 14        
    targetSdkVersion 24        
    versionCode 1        
    versionName "1.0"    
  }    
  buildTypes {        
    release {            
      minifyEnabled false            
      proguardFiles getDefaultProguardFile('proguard-android.txt'),    'proguard-rules.pro'       
     }    
  }
}
dependencies {   
  compile fileTree(dir: 'libs', include: ['*.jar'])    test
  Compile 'junit:junit:4.12'    
  compile 'com.android.support:appcompat-v7:24.1.1'
}

修改后的樣式:

apply plugin: 'com.android.model.application'
model {    
  android {        
    compileSdkVersion = 23        
    buildToolsVersion = "23.0.2"        
    defaultConfig.with {            
        applicationId = "com.dhhuanghui.ndk_demo"                                                   minSdkVersion.apiLevel = 14            
      targetSdkVersion.apiLevel = 23        
     }        
    tasks.withType(JavaCompile){                sourceCompatibility=JavaVersion.VERSION_1_7            targetCompatibility=JavaVersion.VERSION_1_7       
     }    
}    
/*     * native build settings     */    
android.ndk {        
moduleName = "NdkJniDemo"        
//        cppFlags.add("-fno-rtti")
//        cppFlags.add("-fno-exceptions")
//        ldLibs.addAll(["android", "log"])
//        stl       = "system"
}    
  android.buildTypes {        
    release {            
      minifyEnabled = false            
      proguardFiles.add(file('proguard-rules.txt'))        
    }    
  }    
android.productFlavors {        
// for detailed abiFilter descriptions, refer to "Supported ABIs" @        
// https://developer.android.com/ndk/guides/abis.html#sa        
    create("arm") {            
        ndk.abiFilters.add("armeabi")        
    }        
    create("arm7") {            
        ndk.abiFilters.add("armeabi-v7a")        
    }        
    create("arm8") {            
        ndk.abiFilters.add("arm64-v8a")        
     }        
     create("x86") {            
        ndk.abiFilters.add("x86")        
      }        
      create("x86-64") {            
        ndk.abiFilters.add("x86_64")        
      }       
     create("mips") {            
        ndk.abiFilters.add("mips")        
     }        
    create("mips-64") {            
        ndk.abiFilters.add("mips64")        
    }        
    // To include all cpu architectures, leaves abiFilters empty        
    create("all")    
  }
}
dependencies {    
  compile fileTree(dir: 'libs', include: ['*.jar'])    
  testCompile 'junit:junit:4.12'    
  compile 'com.android.support:appcompat-v7:23.1.1'
}

其中android.ndk中配置的moduleName闷盔,作用如下

static {    
  System.loadLibrary("NdkJniDemo");//之前在build.gradle里面設(shè)置的so名字弯洗,必須一致
}

android.productFlavors配置后,編譯后會在app->build->intermediates->objectFiles下生成so庫逢勾,平臺看自己的需求牡整。
5、接下來我們生成頭文件溺拱,首先選擇Build->make project逃贝,編譯生成class文件,位置在app->build->intermediates->classes->all->debug目錄迫摔,我們直接在studio的terminal中使用cd命令切換到當(dāng)前項(xiàng)目的main目錄沐扳,然后通過如下命令在main目錄下生成jni文件夾以及頭文件

C:\Demo\NDK_demo\app\src\main>javah -d jni -classpath C:\Tools\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-19\android.jar;C:\Demo\NDK_demo\app\build\intermediates\classes\all\debug com.dhhuanghui.ndk_
demo.jni.NDKUtil

這時(shí)候再去編譯項(xiàng)目,發(fā)現(xiàn)第二步提到的紅色錯(cuò)誤已經(jīng)消失了句占。
6沪摄、這時(shí)候我們可以在jni目錄下新建一個(gè)c文件,然后編寫代碼纱烘。
ps:有時(shí)候在頭文件中會出現(xiàn)<jni. h>為紅色的情況杨拐,這時(shí)候需要把gradle-experimental:0.4.0'修改成其他版本,比如0.7.0凹炸,再重新編譯戏阅,錯(cuò)誤就會消失

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啤它,隨后出現(xiàn)的幾起案子奕筐,更是在濱河造成了極大的恐慌舱痘,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件离赫,死亡現(xiàn)場離奇詭異芭逝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渊胸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門旬盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翎猛,你說我怎么就攤上這事胖翰。” “怎么了切厘?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵萨咳,是天一觀的道長。 經(jīng)常有香客問我疫稿,道長培他,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任遗座,我火速辦了婚禮舀凛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘途蒋。我一直安慰自己猛遍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布号坡。 她就那樣靜靜地躺著螃壤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筋帖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天冤馏,我揣著相機(jī)與錄音日麸,去河邊找鬼。 笑死逮光,一個(gè)胖子當(dāng)著我的面吹牛代箭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涕刚,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼嗡综,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杜漠?” 一聲冷哼從身側(cè)響起极景,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤察净,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盼樟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氢卡,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年晨缴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了译秦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡击碗,死狀恐怖筑悴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稍途,我是刑警寧澤阁吝,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晰房,受9級特大地震影響求摇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜殊者,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一与境、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猖吴,春花似錦摔刁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至党窜,卻和暖如春拗引,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幌衣。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工矾削, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豁护。 一個(gè)月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓哼凯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親楚里。 傳聞我的和親對象是個(gè)殘疾皇子断部,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容