2013-07-24 72 views
1

首先,我已經有了一個Android Studio項目設置,可以在Studio中正常工作。我可以構建它並在設備上和模擬器中運行,而且還可以構建發佈APK。Gradle/Android:將'root'指定爲子項目的依賴關係

我現在正試圖讓我可以有一些命令行工具來處理我的構建。我所做的所有閱讀都表明Android Studio使用gradle,但從我看到的情況來看,顯然不是我的項目的情況 - 因爲我必須在gradlew之前嘗試創建我的build.gradle,settings.gradle文件構建任何東西 - 但Android Studio仍然可以編譯和部署得很好。

這裏是我的項目結構(因爲它位於物理磁盤上):

Root Project (Android library project, contains all the src, logic, UI, activities, etc.) 
\--- WrapperProject (Android app, depends on the root project) 
\--- SubProject1 (Android library, used by root) 
\--- SubProject2 (Android library, used by root) 

這是我的根項目的settings.gradle文件

include ':SubProject1', ':SubProject2' 

同樣的,這裏是我的根項目的build.gradle文件。請注意,這個項目被標記爲一個機器人庫,不引用WrapperProject以任何方式

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android-library' 

dependencies { 
    compile project(':SubProject1') 
    compile project(':SubProject2') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17" 

    defaultConfig { 
     minSdkVersion 9 
     targetSdkVersion 17 
    } 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
    } 
} 

我能夠建立成功地利用gradlew build我的根項目(應該吧?) - 但我的最終目標是從WrapperProject構建的APK,它依賴於根項目。你能建議我的WrapperProject的build.gradle文件應該包含什麼嗎?

回答

1

我在這裏是因爲尋找類似的答案,雖然我的問題主要是相反的。我發現命令行構建(gradlew)和Android Studio 0.2.2之間的整合充滿了祕密。

我在配置文件中看到的一件事是:這是非常不錯的測試/ alpha測試。您尚未將您的項目修改爲最新的Android Studio 0.2.0註釋。特別是'com.android.tools.build:gradle:0.4'應該被修改。參考:http://tools.android.com/recent

有一個開放源代碼的應用程序,與您的基本需求相同。這是一個雜貨店購物應用程序,作爲樣品提供給CouchDBLIte https://github.com/couchbaselabs/GrocerySync-Android

它必須引用現有的項目。它似乎使用比您更爲明確的依賴關係語法。例如:「compile」com.couchbase.cblite:CBLiteEktorp:0.7.4'「 - 包括完整的類路徑。但是他們定義了兩種基本方法,即直接整合和神器整合。

對不起,我無法爲您的語法問題提供更準確的答案 - 但我分享了迄今爲止我所瞭解的內容。