Android 在不公开密钥库密码的情况下签署APK

示例

您可以build.gradle使用以下属性定义签名配置以对文件中的apk进行签名:

  • storeFile :密钥库文件

  • storePassword:密钥库密码

  • keyAlias:关键别名

  • keyPassword:密钥别名密码

在许多情况下,您可能需要避免build.gradle文件中出现此类信息。

方法A:使用keystore.properties文件配置发布签名

可以配置您的应用程序,build.gradle以便它将从的属性文件中读取您的签名配置信息keystore.properties。

这样设置签名是有益的,因为:

  • 您的签名配置信息与build.gradle文件分开

  • 您无需在签名过程中进行干预即可为密钥库文件提供密码

  • 您可以轻松地keystore.properties从版本控制中排除文件

首先,keystore.properties在项目的根目录中创建一个名为的文件,其内容如下(用您自己的值替换值):

storeFile=keystore.jks

storePassword=storePassword

keyAlias=keyAlias

keyPassword=keyPassword

现在,在您应用的build.gradle文件中,signingConfigs按如下所示设置该块:

android {

...

    signingConfigs {

        release {

            def propsFile = rootProject.file('keystore.properties')

            if (propsFile.exists()) {

                def props = new Properties()

                props.load(new FileInputStream(propsFile))

                storeFile = file(props['storeFile'])

                storePassword = props['storePassword']

                keyAlias = props['keyAlias']

                keyPassword = props['keyPassword']

            }

        }

    }

}

这实际上就是所有内容,但不要忘记将您的密钥库文件和keystore.properties文件都从版本控制中排除。

需要注意的几件事:

  • 文件中storeFile指定的路径keystore.properties应相对于您应用的build.gradle文件。本示例假定密钥库文件与应用程序build.gradle文件位于同一目录中。

  • 本示例的keystore.properties文件位于项目的根目录中。如果将其放在其他位置,请确保将值更改为rootProject.file('keystore.properties')相对于项目根目录的位置。

方法B:通过使用环境变量

没有属性文件也可以实现相同的目的,这使得密码更难找到:

android {

  signingConfigs {

    release {

        storeFile file('/your/keystore/location/key')

        keyAlias 'your_alias'

        String ps = System.getenv("ps")

        if (ps == null) {

             throw new GradleException('missing ps env variable')

        }

        keyPassword ps

        storePassword ps

    }

}

该"ps"环境变量可以是全球性的,但一个更安全的方法可以将其添加到只有Android Studio中的壳。
在Linux中,可以通过编辑Android Studio的Desktop Entry

Exec=sh -c "export ps=myPassword123 ; /path/to/studio.sh"

您可以在本主题中找到更多详细信息。

以上是 Android 在不公开密钥库密码的情况下签署APK 的全部内容, 来源链接: utcz.com/z/350091.html

回到顶部