2015-06-21 45 views
3

使用Android Studio 1.2.1.1Gradle 1.2.3。我有一個NDK庫項目A,它在其自己的libs文件夾中生成若干.so文件。儘管如此,我無法在build.gradle文件中的任何位置看到對此文件夾的引用。自動從NDK庫項目中複製.so文件?

當我從我的應用MyApp參考庫A我期望.so文件被複制到MyApp/src/main/jniLibs,但它們不是。每次我在A庫中進行更改時,是否必須手動複製這些文件?

我該如何自動執行此步驟?

回答

2

我不知道這是否是一種方法,讓你.so複製文件,只要你想要什麼都不會發生。

但是你可以爲你做好準備。 在您的gradle文件中,添加一個任務,將您需要的.so文件複製到該文件中。

android { 
    ... 
    sourceSets.main { 
     jni.srcDirs = [] 
     jniLibs.srcDir 'src/main/libs' 
    } 

    //copying files 
    task copyNativeLib(type: Exec, description: 'Copy native file') { 
     commandLine 'cp <path_of_so_files> src/main/libs' 
    } 

    //add dependencies 
    tasks.withType(JavaCompile) { 
     compileTask -> compileTask.dependsOn copyNativeLib 
    } 
} 

或者,也許只是

android { 
    ... 
    sourceSets.main { 
     jni.srcDirs = [] 
     jniLibs.srcDir '<path_to_your_so_files>' 
    } 
} 
+0

設置'jniLibs.srcDir'完成了任務。謝謝! – l33t

4

我編輯我的看起來像下面,從那裏NDK-build.cmd把它們撿起來。

sourceSets { 
    main.jniLibs.srcDirs += 'libs/' 
} 
+0

還有一點需要注意;需要安裝本地映像。否則,不會生成相應的'.so'文件。 – l33t