2014-10-07 81 views
3

我想知道,如何修改的build.gradle到選自*.c文件使得多於一個模塊(ndk{moduleName})。有沒有人做過?這甚至有可能嗎?的Android多JNI模塊[gradle這個]

讓說我有兩類:

public ClassA { 
    static { 
     System.loadLibrary("ClassAlib") 
    } 

    public native int funcA(); 
} 

public ClassB { 
    static { 
     System.loadLibrary("ClassBlib") 
    } 

    public native int funcA(); 
} 

對於這兩個我生成JNI頭和創建.C內的src/JNI文件夾中。如何修改build.gradle文件來創建兩個庫而不是一個?

+0

現在,在我看來,你擁有的唯一的解決方案是創建Java LIB子項目,那麼LIB添加到應用程序的依賴關係,但我也認爲這是一個矯枉過正的問題。 – 2014-10-08 12:43:07

+0

你會發布你的Gradle源代碼嗎?或者至少是一個簡化版本,說明你在做什麼,以便我們可以看到你用來生成JNI模塊的Gradle功能。 – Jason 2015-02-05 16:06:04

+0

那麼將這些視爲多個圖書館是一種誤解。我結束了多個.c和.h文件以及一個main.c和*。*。* _ natives_MainJNI.h,然後包含所有其他文件。也許這不是一個完美的解決方案,但是從JNI來看,如果你已經分離了模塊,因爲它們進入了靜態塊,這並不重要。您無法將與System.loadLibrary相同的庫加載到多個Java類中,因爲它們只能加載一次。 – 2015-02-06 11:10:38

回答

0

我想你可以使用兩個選項build.grade:

sourceSets { 
    main { 
     jni.srcDirs = [<location for each module>] 
     jniLibs.srcDir '<location for so file>' 
    } 
}