Android NDK開發 Android Studio使用新的Gradle構建工具配置NDK環境(一)


本文主要講述了如何如何在Android Studio使用新的Gradle構建工具配置NDK環境,現在把相關的步驟整理出來分享給Android程序員兄弟們,希望給他們在配置NDK環境時帶來幫助。

從Android Studio 1.3 Beta1開始,就支持了NDK。不過使用的是一個全新的實驗性的gradle構建工具。官方地址 http://tools.android.com/tech-docs/new-build-system/gradle-experimental ,英文好的可以直接看原文。

在進行配置前請先將Android Studio更新至最新版本,目前最新版本是2.1.2

並且使用Android Studio內置的SDK管理器下載NDK。

 

 

由於google的問題一直下不來。我用了手動下載配置

Downloading https://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip

 

注意這個NDK安裝好后其目錄在SDK目錄下的ndk-bundle目錄下,與以往的不同。

要修改的文件見下圖

Android Studio使用新的Gradle構建工具配置NDK環境

首先需要將根目錄下的gradle修改為實驗性的gradle

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

最終是這樣的

Android Studio使用新的Gradle構建工具配置NDK環境

並且需要gradle 2.5的支持,將gradle/gradle-wrapper.properties中的版本修改為2.5

distributionUrl=https/://services.gradle.org/distributions/gradle-2.5-all.zip

最終是這樣的

Android Studio使用新的Gradle構建工具配置NDK環境

然后修改原來的app/build.gradle,注意現在各項配置都是有等號的,並且使用的是 com.android.model.application而不再是原來的com.android.application,如果是Library,則 是com.android.model.library。然后android外圍包了一層model。原來在android里面的buildTypes 移到了外面。等等,看下面內容,注意變化。

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion ="23.0.2"
 
        defaultConfig.with {
            applicationId ="com.qihoo.test"
            minSdkVersion.apiLevel  = 19 // Unable to load class com.android.build.gradle.managed.ProductFlavor_Impl
            targetSdkVersion.apiLevel = 23
            versionCode = 1
            versionName ="1.0"
        }
 
    }
    android.buildTypes {
        release {
            minifyEnabled =false
            proguardFiles += file('proguard-rules.pro')
        }
    }
 
 
    compileOptions.with {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }
    android.ndk {
        moduleName ="NdkSample"
        cppFlags +="-std=c++11"
        cppFlags +="-fexceptions"
        cppFlags +="-I${file("src/main/jni//include")}".toString()
        ldLibs += ["android","log"]
        stl ="gnustl_shared"
    }
 
    android.productFlavors {
        create("arm7") {
            ndk.abiFilters.add("armeabi-v7a")
        }
        create("arm8") {
            ndk.abiFilters.add("arm64-v8a")
        }
 
    }
}
 
 
dependencies {
    compile fileTree(dir:'libs', include: ['*.jar'])
    compile'com.android.support:appcompat-v7:23.1.0'
}

在android.ndk中進行ndk的配置,模塊名字是必須的。然后使用了log,並且支持armeabi,armeabi-v7a,x86三個平台。

新建一個Test的類,加載jni庫,聲明native方法

記得添加System.loadLibrary("hello-jni")

public class TestJni {
    static {
        System.loadLibrary("hello-jni");
    }
    public static native   String getString();

}

這時候你會發現getString方法是紅色的

在上面按alt+enter生成c層的方法

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM