2015-10-06 69 views
1

我知道如何與老gradle這個使用自定義Android.mk如何使用自定義Android.mk新gradle這個構建系統

sourceSets.main { 
     jniLibs.srcDir 'src/main/jni' 
     jni.srcDirs = [] //disable automatic ndk-build call 
    } 

    // call regular ndk-build(.cmd) script from app directory 
    task ndkBuild(type: Exec) { 
     commandLine '/.../android-ndk-r10e/ndk-build', '-C', file('src/main').absolutePath 
    } 

    tasks.withType(JavaCompile) { 
     compileTask -> compileTask.dependsOn ndkBuild 
    } 

這不是新工作的gradle:com.android.tools.build:gradle-experimental:0.2.0

Error:Cause: com.android.build.gradle.managed.AndroidConfig_Impl 

回答

4

與新的gradle-experimental插件,您的配置將爲:

model { 
    //... 
    android.sources{ 
     main.jni { 
      source { 
       srcDirs = ['src/main/none'] 
      } 
     } 
     main.jniLibs { 
      source { 
       srcDirs = ['src/main/libs'] 
      } 
     } 
    } 
    //... 
} 

// call regular ndk-build(.cmd) script from app directory 
task ndkBuild(type: Exec) { 
    commandLine '/.../android-ndk-r10e/ndk-build', '-C', file('src/main').absolutePath 
} 

tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn ndkBuild 
} 

請注意v gradle-experimental插件的ersion 0.3.0-alpha7已經不存在了。

+0

Okey,'Application.mk'有什麼用?例如,我有標誌'APP_CFLAGS + = -DSTDC_HEADERS' 'APP_PLATFORM:= android-23' – zella

+0

我放的片段是通過保留Makefile和調用ndk-build來使新插件像前一個一樣工作。如果你想遷移到完整的gradle解決方案,這是一個不同的問題,你可以看看我的教程在這裏:http://ph0b.com/new-android-studio-ndk-support/ – ph0b

+2

我不認爲有人知道如何用gradle-experimental 0.6.0-alpha5做到這一點?嘗試設置源代碼字段會給我一個錯誤「嘗試讀取只寫視圖...」。 –

0

除了之前的響應: 與實驗插件版本0.7.0-α1本適用於Windows

model { 

    // ... 

    android.sources.main { 
     jni { 
      source { 
       srcDirs = ['src/main/none'] 
      } 
     } 
     jniLibs { 
      source { 
       srcDirs = ['src/main/libs'] 
      } 
     } 
    } 

    // ... 

} 

task ndkBuild(type: Exec) { 
    def cmdline = "${System.env.ANDROID_NDK_HOME}/ndk-build -C \"" + file('src/main').absolutePath + "\" > ndk-build-log.txt 2>&1" 
    commandLine 'cmd', '/c', cmdline 
} 

tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn ndkBuild 
} 
1

添加到您的build.gradle文件。這將導致ndk-build作爲項目構建的一部分使用指定的.mk文件運行。

android{ 
    externalNativeBuild { 
     ndkBuild { 
      path 'src/main/jni/Android.mk' 
     } 
    } 
} 
相關問題