2015-01-02 60 views
0

我有一個項目與一個子項目,應該只在編譯時間類路徑。使用'提供'子項目與Android gradle

root-project 
|- classic-subproject 
`- compile-time-subproject 

根項目採用

[...] 
apply plugin: 'com.android.application' 
dependencies { 
    [...] 
    compile project(':classic-subproject') 
    provided project(':compile-time-subproject') 
} 
android { 
    [...] 
} 

兩個子項目使用

[...] 
apply plugin: 'com.android.library' 
android { 
    [...] 
} 

我的gradle使用2.1和Android的gradle產出0.14.4。

根據我的理解,給定的配置應該在編譯時將編譯時子項目放在類路徑中,並且它不應該出現在生成的apk中。但是我注意到它在運行時也是可用的(=在apk中)。

這是android-gradle中的一個bug還是我的配置有什麼問題?

回答

0

顯然,android庫的使用並不容易。但是,Java庫可以按照提供的方式給出。

只要你只是想編譯插件時,Android標準libary要在你的類路徑,不需要資源或AndroidManifest.xml中操作,您可以使用讓您的庫Java項目下面

apply plugin: 'java' 

def sdkVer = 23 
def sdkDir = System.env.ANDROID_HOME 
if (!sdkDir) { 
    Properties properties = new Properties() 
    properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
    sdkDir = properties.getProperty('sdk.dir') 
} 

sourceSets.main.compileClasspath += project.rootProject.files("$sdkDir/platforms/android-$sdkVer/android.jar") 
相關問題