Android 为什么自定义生成类型需要签名配置,而“release”不需要签名配置?

Android 为什么自定义生成类型需要签名配置,而“release”不需要签名配置?,android,gradle,build.gradle,android-keystore,android-build-type,Android,Gradle,Build.gradle,Android Keystore,Android Build Type,我有一个自定义构建类型beta定义如下: buildTypes { debug { applicationIdSuffix

我有一个自定义构建类型
beta
定义如下:

buildTypes {                                                                                       

    debug {                                                                                        
        applicationIdSuffix ".debug"                                                               
        testCoverageEnabled = false                                                                
    }                                                                                              

    release {                                                                                      
        minifyEnabled true                                                                         
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }                                                                                              

    beta {                                                                                         
        initWith release                                                                                                                                              
    }                                                                                              
}  
考虑到
beta
正在使用
initWith release
,人们希望beta具有
release
的所有属性。但是,当尝试运行测试版时,Android Studio将显示以下错误

“当前所选变体的APK未签名…”

在项目设置中创建签名配置,选择它,然后点击“应用”似乎不起作用。相反,必须手动编写签名配置:

signingConfigs {
    beta {
        storeFile file(‘…’)
        storePassword ‘…’
        keyAlias = ‘…’
        keyPassword ‘…’
    }
}
问题:

  • 为什么必须在构建脚本中手动编写签名配置
  • 为什么
    release
    build类型不需要显式签名配置,直到实际生成签名的APK
  • 考虑到
    beta
    应该与通过
    initWith release
    发布的
    release
    完全相同,为什么上述行为会有所不同