如何配置 flow.ci Android 证书 ?

配置 Android 证书,是 Android 项目构建的必须步骤之一。下面教教大家,如何配置 flow.ci Android 证书。

查看 Android 证书文件信息

$ keytool -list -v -keystore $YUOR_KEY_PATH

在 flow.ci 上传证书

  • 第一次开始创建 Android 项目,选择 Android 模板后,会看到如图的上传证书页面:

flow.ci

  • 如果你的项目已存在,请进入 Android 项目的 设置 里,接下来就可以 上传证书 或者 修改证书,如图所示:

flow.ci

项目flow.ci的环境变量配置

  • 环境变量有以下这些:

    FLOWALIASNAME 对应项目 build.gradle 里的 keyAlias

    FLOWALIASPASS 对应项目build.gradle里的 keyPassword

    FLOWKEYSTOREPASS 对应项目build.gradle里的 storePassword

    FLOWCERTIFICATEFILE 对应项目build.gradle里的 storeFile

项目 build.gradle 配置

build.gradle配置是非常灵活的,大家可以自己写适合自己的脚本,来实现不同的证书使用的方法,这里只是给出一个思路。

这里我们利用 property,将本地的密码和签名文件路径信息保存在项目根目录的 local.properties 文件里,因为这个文件一般都在 .gitignore 里自动配置了,所以不会上传到代码仓库,这样当本地打包 apk 时自动查找 local.properties 里的证书配置,在 flow.ci 构建时是因为不存在 local.property ,所以会通过 System.getenv() 的方法来获取 flow.ci 生成的环境变量的方式加载证书的信息,从而实现了本地以及 flow.ci 的不同编译环境里的证书配置。

  • 在项目的 build.gradle 配置(仅供参考)
android {  
     ...

    defaultConfig {
        ...
    }

    signingConfigs {
       release {
           // default keystore file, PLZ config file path in local.properties
           Properties properties = new Properties()
           //加载本地local.properties文件
           if(rootProject.file("local.properties").exists()) {
               properties.load(rootProject.file("local.properties").newDataInputStream())
           }
           storeFile file(properties.get("storeFile") ?: System.getenv("FLOW_CERTIFICATE_FILE"))
           storePassword properties.get("storePassword") ?: System.getenv("FLOW_KEYSTORE_PASS")
           keyAlias properties.get("keyAlias") ?: System.getenv("FLOW_ALIAS_NAME")
           keyPassword properties.get("keyPassword") ?: System.getenv("FLOW_ALIAS_PASS")
       }
   }
   buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }

   ...
 }
  • 根目录里的 local.properties 文件中配置以下内容(没有需要创建一个新的):
...

 storeFile=/Users/cape/FlowTest/app/FIR.im.jks
 storePassword=fir.im
 keyAlias=fir.im
 keyPassword=fir.im

生成 release 签名 apk

最后,使用 gradle 的 assembleRelease 命令来打包生成 release-sign.apk


更多配置相关问题可查看 flow.ci 文档 .

Meng

继续阅读此作者的更多文章