美文网首页
Android 使用 Gitlab CI 进行自动打包操作

Android 使用 Gitlab CI 进行自动打包操作

作者: l蓝色梦幻 | 来源:发表于2018-08-30 10:36 被阅读443次

    使用 Android Studio 进行命令行打包

    Android Studio 使用的是 Gradle 打包。因此,要想实现命令打包的方式,需要在了解 Gradle

    1. 签名

      笔者所在的公司打包等操作都是由程序员自己来进行打包的。因此签名信息可以保存于源代码中。

      • 编写签名的 keystore 相关信息。这里笔者使用的是 signing.properties 方式保存。

        KEYSTORE_FILE=keystore路径
        KEYSTORE_PASSWORD=keystore密码
        KEY_ALIAS=keystore别名
        KEY_PASSWORD=keystore别名密码
        
      • 在 build.gradle 中添加 签名 配置。

        Properties props = new Properties()
        props.load(new FileInputStream(file("../signing.properties")))
        signingConfigs {
            release {
                keyAlias props['KEY_ALIAS']
                keyPassword props['KEY_PASSWORD']
                storeFile file(props['KEYSTORE_FILE'])
                storePassword props['KEYSTORE_PASSWORD']
            }
        }
        
      • 找到 buildTypes 选项,在 Release 中使用配置的签名。

        buildTypes {
            release {
                ...
                signingConfig signingConfigs.release
            }
        }
        

      到这里,我们在项目的根目录下执行 ./gradlew clean 清理一遍,然后使用 ./gradlew assembleRelease 就可以在命令行中打包了。包的位置在 ./app/build/outputs/apk/项目名/release 中。

    2. 配置多个 apk 打包

      在开发过程中,我们经常的需要针对 qa 和生产环境分开打包。这时候需要配置多个 apk。这时候我们需要使用 productFlavors 标签来完成这个操作。如下:

       flavorDimensions "default"//这个名字貌似随便取,也可以有多个,总之一定要有..
      //配置多版本的apk
      productFlavors {
          Citizen {
              // 修改打包环境的 url
              buildConfigField "String", "HOST_URL", "\"https://url1/\""
          }
          RVA311QA {
              // 修改打包环境的 url
              buildConfigField "String", "HOST_URL", "\"https://url2/\""
          }
      }
      

      defaultConfig 是默认的 productFlavors。在 productFlavors 中我们可以根据自己的需要配置多个 apk 。apk 的各种需要我们都可以在这里进行配置。这样我们在执行 ./gradlew assembleRelease 的时候就会出现多个 apk 了。

      笔者的项目中要求 qa ,生产环境是两个 url 地址。笔者是这么处理的:在 BuildConfig 文件中添加笔者项目访问的地址,在代码中使用 BuildConfig.HOST_URL。这样就可以在不同的 apk 中使用不同的 url。

      注意:我所在的版本的 gradle 如果使用了 productFlavors 必须添加 flavorDimensions。

    Gitlab 打包

    关于 Gitlab CI 配置,可以参考使用 gitlab 自动打包

    碰到的错误

    1. 我们使用的打包平台是 Mac 平台。由于是刚刚安装 Android Studio,在我们触发 build 的过程中,发生了错误:SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

      原因:经查看,该错误产生的原因是 Android Studio 在打开我们工程的时候,会默认在我们的工程目录下面产生一个 local.properties 文件。里面包含了当前机器 Android SDK 位置。但是我们在触发 build 的时候,由于没有使用 Android Studio 打开工程,没有产生 local.properties 文件。出现错误。

      解决方案:在系统变量中声明 ANDROID_HOME 变量。
      .bash_profile 添加如下代码

      export ANDROID_HOME=~/Library/Android/sdk
      export PATH=${PATH}:${ANDROID_HOME}/tools
      export PATH=${PATH}:${ANDROID_HOME}/platform-tools
      

    参考的博客文章:

    Android Studio gradle打包实践
    Android 使用gradle打包的各种配置
    android studio gradle 多版本多apk打包(打包系列教程之五)
    Gradle使用技巧总结
    Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解

    相关文章

      网友评论

          本文标题:Android 使用 Gitlab CI 进行自动打包操作

          本文链接:https://www.haomeiwen.com/subject/gmlrwftx.html