簡體   English   中英

如何防止自動生成settings.gradle的Cordova構建命令

[英]How to prevent Cordova build command from auto-generating settings.gradle

我創建了一個帶有自定義settings.gradle的Cordova應用程序,如下所示:

// GENERATED FILE - DO NOT EDIT
include ":"
include ":CordovaLib"
include 'manager'
project(':manager').projectDir = new File('libs/ConnectManager')

在build.gradle中,我可以將其稱為:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    debugCompile project(path: "CordovaLib", configuration: "debug")
    releaseCompile project(path: "CordovaLib", configuration: "release")
    // SUB-PROJECT DEPENDENCIES END
    compile project(':manager')
}

但是,當我執行命令'cordova build android'時,文件settings.gradle會自動生成為默認設置,如下所示:

// GENERATED FILE - DO NOT EDIT
include ":"
include ":CordovaLib"

因此,由於無法找到我在settings.gradle中定義的模塊“manager”,構建總是失敗。

我想知道是否有任何方法可以阻止構建命令復制自定義的settings.gradle文件。

今天我遇到了同樣的問題,花了幾個小時我發現我們可以通過project.properties的變化來做到這一點

以下是步驟:

第1步。 在根目錄中編輯/生成project.properties並在CordovaLib之后將模塊添加為庫引用:

target=android-25
android.library.reference.1=CordovaLib
android.library.reference.2=libraryModule1
android.library.reference.3=libraryModule2

第2步。 運行cordova build android 這將在您的setting.gradle文件中生成一個條目。

//GENERATED FILE - DO NOT EDIT
 include ":"
 include ":CordovaLib"
 include ":libraryModule1"
 include ":libraryModule2"

您的app build.gradle也將如下所示:

dependencies {
    ----
   // SUB-PROJECT DEPENDENCIES START
    debugCompile(project(path: "CordovaLib", configuration: "debug"))
    releaseCompile(project(path: "CordovaLib", configuration: "release"))
    debugCompile(project(path: "libraryModule1", configuration: "debug"))
    releaseCompile(project(path: "libraryModule1", configuration: "release"))
    debugCompile(project(path: "libraryModule2", configuration: "debug"))
    releaseCompile(project(path: "libraryModule2", configuration: "release"))
    ----
    // SUB-PROJECT DEPENDENCIES END
}

對於project(':manager').projectDir = new File('libs/ConnectManager')這種設置沒有我找到的簡單方法,但你可以用這種方式實現:

第1步。 /path/to/project/platforms/android/cordova/lib/builders/GradleBuilder.js

第2步。 編輯fs.writeFileSync()函數(Line-100)

  // Write the settings.gradle file.
fs.writeFileSync(path.join(this.root, 'settings.gradle'),
    '// GENERATED FILE - DO NOT EDIT\n' +
    'include ":"\n' + settingsGradlePaths.join('')+ "'include :"+libraryModule1+" \n'+ 'include :"+libraryModule2+"');

// Update dependencies within build.gradle.

暫無
暫無

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

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