发新帖

[uni-app] [Android] Android项目签名配置详解

零下一度 2月前 113

在Android项目的build.gradle文件中,signingConfigs参数用于配置应用签名的相关信息。签名是发布Android应用的必要步骤,确保应用的身份和完整性。以下是详细的参数说明和使用示例:


1. signingConfigs 的作用

  • 应用签名:Android要求所有APK或AAB文件必须签名后才能安装或发布。

  • 多环境配置:可为调试(debug)和发布(release)版本配置不同的签名信息。

  • 安全管理:通过代码或环境变量管理敏感信息(如密码),避免硬编码。


2. 核心参数说明

android代码块内定义signingConfigs,常用参数如下:

参数说明
storeFile密钥库文件(.jks.keystore)的路径,使用file("路径")指定。
storePassword密钥库的密码(需与storeFile匹配)。
keyAlias密钥的别名(标识密钥库中的特定密钥)。
keyPassword密钥的密码(需与keyAlias匹配)。


3. 基础配置示例

android {
    signingConfigs {
        debug {
            // 默认使用Android SDK的debug密钥,通常无需手动配置
            // 可在此覆盖默认配置(如使用自定义调试密钥)
        }
        release {
            storeFile file("my-release-key.jks") // 密钥库路径(相对于模块目录)
            storePassword "123456"               // 密钥库密码(建议从环境变量读取)
            keyAlias "my-alias"                 // 密钥别名
            keyPassword "7890"                   // 密钥密码(建议从环境变量读取)
        }
    }
    buildTypes {
        release {
            // 应用release签名配置
            signingConfig signingConfigs.release
            // 其他配置(混淆、压缩等)
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            // 默认使用signingConfigs.debug,可显式指定其他配置
            signingConfig signingConfigs.release // 调试时使用发布密钥(根据需要)
        }
    }
}


4. 安全实践建议

  • 避免硬编码密码:从环境变量或外部文件读取敏感信息。

release {
    storePassword System.getenv("STORE_PASSWORD")
    keyPassword System.getenv("KEY_PASSWORD")
}

使用keystore.properties文件(推荐):

  1.     1、创建keystore.properties文件(加入.gitignore):

storePassword=myStorePassword
keyPassword=myKeyPassword
keyAlias=myKeyAlias
storeFile=my-release-key.jks


    2、在build.gradle中读取:

def keystoreProperties = new Properties()
def keystoreFile = rootProject.file("keystore.properties")
keystoreProperties.load(new FileInputStream(keystoreFile))
signingConfigs {
    release {
        storeFile file(keystoreProperties["storeFile"])
        storePassword keystoreProperties["storePassword"]
        keyAlias keystoreProperties["keyAlias"]
        keyPassword keystoreProperties["keyPassword"]
    }
}


5. 多风味(Product Flavors)配置

为不同产品风味指定独立签名:

android {
    flavorDimensions "env"
    productFlavors {
        dev {
            dimension "env"
            signingConfig signingConfigs.debug // 开发环境使用调试签名
        }
        prod {
            dimension "env"
            signingConfig signingConfigs.release // 生产环境使用正式签名
        }
    }
}


6. 注意事项

  • 路径问题storeFile路径相对于当前模块(如app目录)。

  • 调试签名:默认使用~/.android/debug.keystore,有效期30天。

  • 密钥管理:丢失正式签名密钥将导致应用无法更新,务必妥善备份。


















最新回复 (0)
返回
零下一度
主题数
931
帖子数
0
注册排名
1