簡體   English   中英

我怎樣才能有單獨的 gradle 項目的調試和發布版本,它們可以引入相同 class 的不同版本?

[英]How can I have separate debug and release versions of gradle project that pull in different versions of the same class?

我有兩個版本的相同 Java class (相同的名稱/方法)。 由於它是 Java,因此兩個.java 文件具有相同的名稱。 我想配置 gradle,這樣我就可以構建應用程序的“調試”版本來拉入其中一個文件,以及構建應用程序的“生產”版本來拉入另一個文件。 我將如何 go 這樣做?

這個 class 只有 static 方法。 我不想創建這個 class 的實例。 我也不想在這個 class 的每個方法中添加if語句的開銷來檢查我所在的版本。

按照@JFabianMeier 的回答,您可以使用 4 個項目:

  1. 與生產版本 class
  2. 帶調試版本 class
  3. 使用使用兩者之一的代碼,根據遷移 Maven 配置文件進行參數化...示例 6. 在 Gradle 中模仿 Maven 配置文件的行為 (我也是一個 Maven 的人,因此不能告訴你在 Gradle 中的具體操作方法。)
  4. 具有 1./2./3 的項目 作為[-] 項目,用於在一個 go 中構建所有這些項目,可能參數化為僅構建 1.+ 3. 或 2.+ 3。

您是否嘗試過創建生產和調試源目錄/集? 根據文檔,您可以在源集中指定源目錄時使用多個目錄。 嘗試將 class 的不同版本放到它們各自的生產/調試源目錄中。

我沒有測試過自己(不確定語法),但這是基於 Gradle 的Java 編譯文檔

sourceSets {
    // Could also name this production
    main {
        java {
            srcDirs ['src/main/java', 'src/prod/java']
        }
    }
    debug {
        java {
            srcDirs ['src/main/java', 'src/debug/java']
        }
    }
}

您可以執行以下操作:

  • 將 class 放入一個單獨的項目中(因此從中生成一個單獨的 jar)
  • 然后就可以有兩個不同的jars,用於生產調試
  • 然后,您可以根據參數在 gradle 中拉出一個或另一個 jar。

或者,您可以查看 Velocity 之類的模板引擎,它允許您在構建期間根據變量生成源代碼,然后編譯它。

Android 有一個稱為產品風味的簡潔功能。 它可以讓你在編譯時毫不費力地交換類並保持你的項目干凈。

這個帖子很好去嘗嘗: https://android-developers.googleblog.com/2015/12/leveraging-product-flavors-in-android.html

這是完整的文檔: https://developer.android.com/studio/build/build-variants#product-flavors

暫無
暫無

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

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