2013-11-25 85 views
1

我想知道來自Eclipse和Ant的Android Studio/Gradle構建系統。特別是,我不明白我的build.gradle文件中的dependencies塊如何工作。Android Gradle依賴 - 只有Maven?

我目前的項目有以下結構:

Project Structure

在我的項目,我同時使用Android的支持庫(V4),以及電子表格JXL庫。我build.gradle(一個子模塊內部,而不是根一級)目前看起來是這樣的:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.1.1" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 19 
    } 
    buildTypes { 
     release { 
      runProguard true 
      proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 
     } 
    } 
    productFlavors { 
     defaultFlavor { 
      proguardFile 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    compile 'net.sourceforge.jexcelapi:jxl:2.6.+' 
    compile 'com.android.support:support-v4:13.0.+' 

    //compile fileTree(dir: 'libs', include: '*.jar') 
} 

在倒數第二行中,可以使用android-support-v4.jarjxl.jar的本地副本,看到我已經試過。我已經使用線

compile files('libs/android-support-v4.jar') 
compile files('libs/jxl.jar') 

但是,每當我嘗試使用當地的.jar文件也試過,我的生成失敗,他說,支持Android和JXL庫無法找到。我看過很多帖子,說你可以簡單地使用這樣的本地.jars,但是我無法得到這個工作。如果可能,我希望能夠使用本地存儲的.jar文件,以便在Maven不可用時離線工作。

誰能告訴我爲什麼使用本地.jar文件不起作用?

編輯:我也試過重新啓動Android Studio IDE,並在添加本地jar依賴線後清理並重新構建我的項目。

回答

2

它沒有找到libs目錄,因爲它需要位於你的模塊根目錄而不是src/main目錄。 build.gradle中的路徑與build.gradle文件的位置相關,該文件位於您的模塊根目錄中。

對於Android支持庫,我建議使用Maven依賴項(例如compile 'com.android.support:support-v4:13.0.+')而不是包含jar文件。通過支持庫,Android Gradle插件實際上在您的SDK中查找它,而不是通過網絡訪問它;您必須通過SDK管理器安裝支持庫。這實際上有點令人困惑,因爲它沒有很好的文檔記錄,所以會讓很多用戶絆倒。但是,如果你以這種方式訪問​​它,而不是僅僅包括JAR,那麼構建系統可以更聰明,不要包含它的重複副本,並且如果包含依賴它的其他庫項目,則會導致錯誤。

+0

謝謝 - 這很有道理!我將libs目錄移到(子)模塊的根目錄下,現在它找到了.jars。 – aaronsnoswell