簡體   English   中英

如何在 build.gradle 的 buildType 中獲得風味?

[英]How to get flavor in buildType of build.gradle?

我有我的 gradle 文件,如下所示,我在調試版本中將我的應用程序簽名為調試,並在發布版本中發布。 它有兩種口味,即開發和生產。

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}

productFlavors {
    develop {
        // Do something
    }
    production {
        // Do something
    }
}

但是,我也在考慮以 Debug for Develop 風格(發布)的身份簽名。 我怎么能做到這一點(即訪問 buildType 中的風味類型變量)?

據我了解你的問題,你想要這樣的東西:

developDebug: signingConfigs.debug
productionDebug: signingConfigs.debug
developRelease: signingConfigs.debug
productionRelease: signingConfigs.release

您可以通過以下方式實現:

android {
  productFlavors {
    develop {
        // Do something
    }
    production {
        // Do something
    }
  }
  buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    // Make an unfinished release build type
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    // Finish the release build type flavor specific
    def runTasks = gradle.startParameter.taskNames.toString().toLowerCase()
    if (runTasks.contains("develop")) {
      release {
        signingConfig signingConfigs.debug
      }
    } else if (runTasks.contains("production")) {
      release {
        signingConfig signingConfigs.release
      }
    }
  }
}

編輯:我認為這可能是一個更清潔的解決方案

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
    release-develop {
        initWith buildTypes.release
        signingConfig signingConfigs.debug
    }
}

您還可以使用:

productFlavors.develop.signingConfig signingConfigs.debug

在您的發布版本類型中。

原答案:

像這樣的事情應該可以解決問題。

層次結構是 buildTypes -> defaultConfig -> productFlavors

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

defaultConfig {
    signingConfig signingConfigs.release
}

productFlavors {
    develop {
        signingConfig signingConfigs.debug
        // Do something
    }
    production {
        // Do something
    }
}
  • 開發調試:使用調試變體中的調試密鑰簽名
  • developRelease :使用開發風格中的調試密鑰簽名
  • productionDebug :使用來自調試變體的調試密鑰簽名
  • productionRelease :使用 defaultConfig 的發布密鑰簽名,因為它沒有在發布變體中定義。

暫無
暫無

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

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