android studio編寫jni,ndk程序(不用mk文件)

1.快速生成頭文件

(1)打開as的Terminal,輸入cd app/src/main/java
(2)通過javah生成頭文件:javah -d ../jni -jni test.ndkdemo.PrintUtil(包名+類名,而且不要再MainActivity裏面定義native函數)
參考:http://blog.csdn.net/lvxiangan/article/details/52348975

2.gradle文件的配置

(1)project的build.gradle
就classpath 需要改動

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // 這裏build:gradle改成gradle-experimental
        //其實gradle-experimental是有版本對應的,不過as後面會有提示,換一下就行
        //classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.android.tools.build:gradle-experimental:0.9.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

(2)app module的build.gradle
改動比較多,要仔細對照

//apply plugin: 'com.android.application'
apply plugin: 'com.android.model.application'//注意這裏多了一個model,所以下面所有的都要用model包起來

model {
    android {
        compileSdkVersion = 25
        buildToolsVersion = "25.0.2"
        defaultConfig.with {//注意這裏的with,和上下變量中間的等號
            applicationId = "test.ndkdemo"
            minSdkVersion.apiLevel = 19//注意這裏的apiLevel
            targetSdkVersion.apiLevel = 25
            versionCode = 1
            versionName = "1.0"
            //下面這句可以不要
            //testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
    }
    //buildTypes必須單獨提取出來,必須這麼寫(本來前面不需要android字樣的)
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles.add(file('proguard-rules.pro'))
            //有的as據說是應該這樣寫
            //proguardFiles += file('proguard-rules.pro')
        }
    }
    android.ndk {
        moduleName = "JniLib"//so庫的名字
    }
}
//dependencies這裏不用動
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
}
//更詳細的說明參考:http://www.cnblogs.com/zhuyp1015/p/4976116.html
//參考地址裏面有compileOptions.with選項,但是我添了反而報錯

3.編寫程序測試

在jni文件夾中生成c文件,然後編寫,然後make project之後就可以運行了
生成的so文件在
E:\NDKDemo\app\build\intermediates\transforms\stripDebugSymbol\debug\folders\2000\1f\main\lib
裏面有所有平臺的lib文件

發佈了223 篇原創文章 · 獲贊 23 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章