# Android 端
# 输出范围
应用程序安装并运行在支持Android操作系统的设备
应用程序发布到国内主流应用商店 应用上架流程
应用程序测试体验版发布在 FIR托管平台 (opens new window)
# 项目构建
探索Android Studio (opens new window),构建Android APK使用 Gradle (opens new window) 工具包来自动执行和管理构建流程
# 配置应用
android {
    defaultConfig {
        applicationId = "your.package.name"  // 应用ID
        minSdk = 21                          // 最低API 21,对应Android 5.0
        targetSdk = 30                       // 目标SDK
        versionCode = 10000                  // 版本号(递增)
        versionName = "1.0.0"                // 版本名称
    }
    ...
}
# 配置变体
通过 productFlavors 定义变体内容,配合构建类型buildTypes,构建不同类型组合的应用程序
可构建的应用:devDebug、devRelease、testDebug、testRelease、paasDebug、paasRelease
android {
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            signingConfig signingConfigs.release
            debuggable true
            minifyEnabled true    //  开启混淆
            shrinkResources true  //  移除无用的resource文件
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        // 开发环境
        tl_paas_dev {
            dimension 'paas'
            applicationId 'com.mmm.paas'
            buildConfigField "String", "BASE_URL", "\"https://dev.fjmaimaimai.com\""
            resValue "string", "app_name", "天联共创【开发】"
        }
        // 测试环境
        tl_paas_test {
            dimension 'paas'
            applicationId 'com.mmm.paas'
            buildConfigField "String", "BASE_URL", "\"https://test.fjmaimaimai.com\""
            resValue "string", "app_name", "天联共创【测试】"
        }
        // 生产环境
        tl_paas {
            dimension 'paas'
            applicationId 'com.mmm.paas'
            buildConfigField "String", "BASE_URL", "\"https://prd.fjmaimaimai.com\""
            resValue "string", "app_name", "天联共创"
        }
    }
    
    ...
}
# 应用签名
菜单栏中,依次点击 Build > Generate Signed Bundle/APK 创建签名文件 xxx.jks,建议相同公司下使用同一个秘钥库
android {
    //签名配置
    signingConfigs {
        debug {
        }
        release {
            storeFile file('../xxx.jks')   // .jks 秘钥库存放路径
            storePassword "密钥库密码"
            keyAlias "密钥标识名"
            keyPassword "密钥密码"
        }
    }
    ... 
}
# 构建应用
Android 构建系统会编译应用资源和源代码,然后将它们打包到 APK 或 Android App Bundle 中,提供测试、部署、签名和分发
// 构建指令
gradlew assembleDebug   // 构建debug包
gradlew assembleRelease // 构建release包
# 自动化部署
通过持续集成工具 Jenkins,搭建一套适合移动端的自动发布流水线,提高交付效率
涉及到工作事项:
- 分支管理,根据 Git 分支使用规范 执行
 - 使用 Mac OS 系统做为Jenkins工具载体(满足IOS编译环境)
 - Jenkins 配置、Gogs 钩子、二开插件(钉钉通知)
 - fir cli 指令处理
 
# 测试环境(自动流水线交付)
工作流程: 1.推送分支代码 -> 2.编译构建应用 -> 3.交付到托管平台 -> 4.通知相关人员(钉钉)
示意图:

# 生产环境(手动交付)
遵守公司对产品上线流程管理文件
- 合并测试分支
 - 构建应用,交付到测试人员验证
 - 验证通过,运维上架应用商店
 - 代码创建tag
 
# 设备版本支持
# 最低版本要求
- 平台版本:Android 5.0 (Lollipop/棒棒糖),于2014年10月发布
 - API级别:21
 - 全球累计分布:94.1%,中国比例会更高
 
# 工程仓库
# 项目仓库
- 标准项目 (opens new window)
 - 能力展示 (opens new window)(问题、机会、销导、价值、BOSS预约 手机版)
 - BOSS预约 Pad版 (opens new window)
 - 天联共创 (opens new window)
 - 素+订单仓储 (opens new window)
 - 冻品买买买 (opens new window)
 - 关注事项 Pad版 (opens new window)
 
# 其它
# 团队仓库
# 开源组件仓库
开发规范 →