androidstudio下NDK正確姿勢(shì)

用androidstudio開(kāi)發(fā)的小伙伴,應(yīng)該知道自身的ndk自動(dòng)編譯就是雞肋!
這里說(shuō)2種方法:
1> 進(jìn)入到工程jni目錄運(yùn)行ndk-build 如何快速?gòu)?fù)制jni路徑

jni路徑

右鍵Copy Path或者按快捷鍵Ctrl+Shift+C

cd /home/wangxiong/Documents/Github/libraries/blur/src/main/jni~/Soft/android-ndk-r10e/ndk-build

編譯完成就會(huì)在libs生成各個(gè)平臺(tái)的so文件

2> 第2種方式,腳本配置首先要把a(bǔ)s自動(dòng)編譯關(guān)掉

import org.apache.tools.ant.taskdefs.condition.Os
//導(dǎo)入Os包,方便下面判斷系統(tǒng)平臺(tái)Linux \ windows
apply plugin: 'com.android.library'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
}


def getNdkBuildName() {//NDK編譯工具名稱,區(qū)別Linux和windows
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        return "ndk-build.cmd"
    } else {
        return "ndk-build"
    }
}

def getNdkBuildFullPath() {//NDK全路徑
    File propFile = project.rootProject.file('local.properties')
    if (!propFile.exists()) {
        return getNdkBuildName()
    }
    Properties properties = new Properties()
    properties.load(propFile.newDataInputStream())
    def ndkCommand = properties.getProperty('ndk.command')
    if (ndkCommand != null) {
        return ndkCommand
    }
    def path = null
    def ndkPath = properties.getProperty('ndk.path')
    if (ndkPath != null) {
        path = ndkPath
    } else {
        def ndkDir = properties.getProperty('ndk.dir')
        if (ndkDir != null) {
            path = ndkDir
        }
    }
    if (path != null) {
        if (!path.endsWith(File.separator)) {
            path += File.separator
        }
        return path + getNdkBuildName()
    } else {
        // if none of above is provided, we assume ndk-build is already in $PATH
        return getNdkBuildName()
    }
}

android {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
        versionCode = 200
        versionName = "2.0.0"
    }

    buildTypes {
        release {
            minifyEnabled = false
            proguardFiles.add(file('proguard-rules.pro'))
        }
    }


    sourceSets.main {
        jni.srcDirs = [] //關(guān)掉自動(dòng)編譯
        jniLibs.srcDirs 'src/main/libs'
    }// This prevents the auto generation of Android.mk
}

task hello_ndk_build(type: Exec) {
    commandLine getNdkBuildFullPath(),
            'NDK_APPLICATION_MK=Application.mk',
            'NDK_OUT=' + temporaryDir,
            "NDK_LIBS_OUT=" + file("src/main/libs").absolutePath,
            '-C', file("src/main/jni").absolutePath,
            '--jobs', Runtime.getRuntime().availableProcessors()
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn "hello_ndk_build"http://與task任務(wù)名相同
}

task hello_ndk_clean(type: Exec) {
    commandLine getNdkBuildFullPath(),
            'clean',
            '-C', file("src/main/jni").absolutePath
}

clean.dependsOn 'hello_ndk_clean'//clean依賴上面定義的任務(wù)


參數(shù)ps:
@NDK_PROJECT_PATH
指定NDK編譯的代碼路徑為當(dāng)前目錄,如果不配置盟榴,則必須把工程代碼放Android工程的jni目錄下
@NDK_APP_APPLICATION_MK
指定NDK編譯使用的application.mk文件 @clean清除所有編譯出來(lái)的臨時(shí)文件和目標(biāo)文件
@NDK_OUT
指定編譯生成的文件的存放位置
@NDK_LIBS_OUT
編譯后最終的lib目錄

注意觀察build目錄下生成的一些文件,和編譯配置時(shí)的關(guān)聯(lián)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拜鹤,隨后出現(xiàn)的幾起案子原叮,更是在濱河造成了極大的恐慌硕盹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件往湿,死亡現(xiàn)場(chǎng)離奇詭異纷跛,居然都是意外死亡喻括,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)贫奠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)唬血,“玉大人,你說(shuō)我怎么就攤上這事唤崭】胶蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵谢肾,是天一觀的道長(zhǎng)腕侄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)芦疏,這世上最難降的妖魔是什么冕杠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮酸茴,結(jié)果婚禮上分预,老公的妹妹穿的比我還像新娘。我一直安慰自己薪捍,他們只是感情好笼痹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著酪穿,像睡著了一般凳干。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上被济,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天救赐,我揣著相機(jī)與錄音,去河邊找鬼溉潭。 笑死净响,一個(gè)胖子當(dāng)著我的面吹牛少欺,可吹牛的內(nèi)容都是我干的喳瓣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赞别,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畏陕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起仿滔,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惠毁,失蹤者是張志新(化名)和其女友劉穎犹芹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鞠绰,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腰埂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜈膨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屿笼。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翁巍,靈堂內(nèi)的尸體忽然破棺而出驴一,到底是詐尸還是另有隱情,我是刑警寧澤灶壶,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布肝断,位于F島的核電站,受9級(jí)特大地震影響驰凛,放射性物質(zhì)發(fā)生泄漏胸懈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一恰响、第九天 我趴在偏房一處隱蔽的房頂上張望箫荡。 院中可真熱鬧,春花似錦渔隶、人聲如沸羔挡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绞灼。三九已至,卻和暖如春呈野,著一層夾襖步出監(jiān)牢的瞬間低矮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工被冒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留军掂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓昨悼,卻偏偏與公主長(zhǎng)得像蝗锥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子率触,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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