当前位置: 首页 > 知识库问答 >
问题:

在生成应用程序的调试版本时,是否可以忽略 storeFile?

太叔何平
2023-03-14

问题的关键是,并非每个使用此应用程序的人都可以访问存储文件,并且必须注释掉以下这些行才能进行gradle同步:

signingConfigs {
    release {
//        storeFile file('.../android_keystore.keystore')
//        storePassword RELEASE_STORE_PASSWORD
//        keyAlias RELEASE_KEY_ALIAS
//        keyPassword RELEASE_KEY_PASSWORD
    }
}

在我们的构建类型中,我们定义了调试中没有签名配置:

buildTypes{
     release {
          ...
     }
     debug {
          singingConfig null
          ...
     }
}

问题在于Gradle Syncs与构建类型无关,因此它每次都会检查签名配置(storePassword,keyAlias,keyPassword),除非我注释掉这些行。

有没有更自动化的方法来忽略这些行?

共有2个答案

壤驷华辉
2023-03-14

@Gabriele的答案标记为答案,因为它更完整,更正确,但想发布有关我的最终(简单而简单)解决方案的更新,如果没有他的答案,我就不会弄清楚;

我所要做的就是检查文件是否存在。我没有意识到我可以调用方法并在Gradle文件中使用if语句;

signingConfigs {
     release {
          storeFile file('.../android_keystore.keystore')
          if (storeFile.exists()) {
               storePassword RELEASE_STORE_PASSWORD
               keyAlias RELEASE_KEY_ALIAS
               keyPassword RELEASE_KEY_PASSWORD
          }
}
尚宏硕
2023-03-14

您可以使用以下内容:

android {

    signingConfigs {
        release
    }

    buildTypes {
            release {
                signingConfig signingConfigs.release
            }
    }
}

def Properties props = new Properties()
def propFile = new File('signing.properties')
if (propFile.canRead()){
    props.load(new FileInputStream(propFile))

    if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
            props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
        android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
        android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
        android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
        android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
    } else {
        println 'signing.properties found but some entries are missing'
        android.buildTypes.release.signingConfig = null
    }
}else {
    println 'signing.properties not found'
    android.buildTypes.release.signingConfig = null
}

其中< code>signing.properties是:

STORE_FILE=/path/to/your.keystore
STORE_PASSWORD=yourkeystorepass
KEY_ALIAS=projectkeyalias
KEY_PASSWORD=keyaliaspassword
 类似资料:
  • 当尝试安装具有较低版本的APK时,最近的Android 4.2似乎在安装时引入了此错误条件。在以前的Android版本中,您只需通过

  • 我想检查angular在生成浏览器应用程序包时是否存在lint错误,如果存在错误则失败。 可能吗?我用恶魔创造了一个手表,但这不是我要找的。。。这 非常感谢。

  • 不是一个真正重要的问题,但只是好奇。您可以在运行时更改应用程序图标吗?例如,有一个按钮,当您按下该按钮时,您会在flutter中获得不同的应用程序图标(假设应用程序图标已经“设置”)。Android和iOS。 非常感谢任何意见。谢谢

  • 问题内容: 在C ++中,我通常会设置2个构建- 分别调试和发布,分别具有和预先定义。然后,我将使用这些定义来确定常量值,例如启用/禁用日志记录,服务器URL等。 现在,在Java / Android中,在构建发行版之前我会注释掉一些东西。我知道这不是一个好方法。我可能会忘记一些东西。 确保在构建发行版本(签名)或调试版本(未签名)时什么都不会忘记的常见做法是什么? 问题答案: (默认情况下)没有

  • 标题大致概括了这一点。谷歌应用邀请是否可以与尚未在play store上使用的测试版应用一起使用?

  • 问题内容: 标头中包含以下行: 这实际上改变了我的python日志记录设置,但是pylint认为这是未使用的导入。我一般不希望删除警告,因此可以忽略这一行吗? 我不介意为此项目准备一个,因此更改配置文件的答案将被接受。 否则,这样的事情也会受到赞赏: 问题答案: Pylint消息控件记录在Pylint手册中: 是否可以在本地禁用特定消息? 是的,此功能已在Pylint 0.11中添加。这可以通过