簡體   English   中英

Gradle / Android:將“ root”指定為子項目的依賴項

[英]Gradle/Android: Specify 'root' as a dependency of subproject

首先,我有一個Android Studio項目設置,可以在Studio中正常工作。 我可以構建它並在設備和仿真器中毫無問題地運行它,還可以構建發行版APK。

現在,我試圖達到一些命令行工具可以為我處理構建的地步。 我所做的所有閱讀都表明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文件。 請注意,該項目被標記為android-library,並且不以任何方式引用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文件包含什么嗎?

我在這里是因為尋找相似的答案,盡管我的問題主要是相反的。 我發現命令行構建(gradlew)與Android Studio 0.2.2之間的集成充滿了秘密。

我看到的一件事在您的配置文件中引人注目:這是漂亮的beta / 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的示例提供

它必須參考現有項目。 似乎對依賴性使用比您更明確的語法。 示例:“編譯'com.couchbase.cblite:CBLiteEktorp:0.7.4'”-包括完整的類路徑。 但是它們定義了兩種基本方法,直接集成和工件集成。

抱歉,我無法為您的語法問題提供更精確的答案-但我要分享到目前為止我所知道的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM