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

在不将密钥库信息放入build.gradle中的情况下对APK进行签名

蒙峰
2023-03-14
android {
    ...
    signingConfigs {
        release {
            storeFile file("my.keystore")
            storePassword "store_password"
            keyAlias "my_key_alias"
            keyPassword "key_password"
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release            
        }
    }
}

当然,修改后的build.gradle应该可以在任何其他计算机上使用(即使该计算机没有访问密码的权限)。

我正在使用Android Studio和Mac OS X Maverics,如果这很重要的话。

共有1个答案

华鹭洋
2023-03-14

Groovy的好处是您可以自由地混合Java代码,并且使用Java.util.properties在键/值文件中读取它非常容易。也许有更简单的方法使用惯用的Groovy,但Java仍然非常简单。

创建一个keystore.properties文件(在本例中,位于项目的根目录settings.gradle旁边,但您可以将其放在您喜欢的任何地方:

storePassword=...
keyPassword=...
keyAlias=...
storeFile=...

将此内容添加到build.gradle:

allprojects {
    afterEvaluate { project ->
        def propsFile = rootProject.file('keystore.properties')
        def configName = 'release'

        if (propsFile.exists() && android.signingConfigs.hasProperty(configName)) {
            def props = new Properties()
            props.load(new FileInputStream(propsFile))
            android.signingConfigs[configName].storeFile = file(props['storeFile'])
            android.signingConfigs[configName].storePassword = props['storePassword']
            android.signingConfigs[configName].keyAlias = props['keyAlias']
            android.signingConfigs[configName].keyPassword = props['keyPassword']
        }
    }
}
 类似资料:
  • 我有一个postgresql apt存储库gpg密钥的副本,希望查看文件中gpg密钥的详细信息。在不导入钥匙圈的情况下,这是可能的吗?

  • 对于评估,我希望使用DexGuard加密APK文件中的所有字符串,但不使用模糊、收缩或优化选项 这是可能的还是我被迫混淆APK来加密它 我使用以下命令行加密所有类: conf.pro如下所示: 我已经使用了工具获取所有类名,然后使用

  • 如何在Azure密钥库中设置秘密,而不使用PowerShell。我们正在使用Azure Key Vault来安全地存储连接字符串和一些其他应用程序秘密。我们可以使用PowerShell脚本添加秘密,但我想知道是否有其他方法可以在Azure KeyVault中添加密钥,最好是使用API。我们实际上需要提供一个管理工具,应用程序管理员可以使用该工具在密钥库中添加/修改机密。

  • 这感觉是一个非常愚蠢的问题,但我缺乏JS知识加上缺乏AWS知识让我陷入困境!我只是想掌握基本的AWS堆栈,即Lambda/Dynamo/API网关,以进行一些基本的API工作。 如果我想要一个简单的APIendpoint来处理PUT请求,例如。如果我有一个DynamoDB表,它的复合主键是和,我可以使用下面的代码片段来获取未知数据(设置模式时未知的属性),但这显然效果不佳 我可以使用以下 JSON

  • 我们配置了EC2实例,该实例具有对SQS和EC2的完全权限的IAM角色。有没有什么方法可以在没有AWS的任何SDK/CLI支持的情况下发送消息到队列?仅使用来自EC2实例的简单REST调用?

  • 我已经和DocuSign的支持人员谈过了,他们并不真正理解这个问题,但也许这里有人尝试过,或者可以给出一个明确的答案,即我要求的是一个存在还是不存在的功能。 如果没有这个特性,那么我们将使用DocuSign API构建它,但是如果有一个轮子,我们不想重新发明它。