flutter.md 4.3 KB

Flutter 开发,安卓开发

基于 Linux 容器远程开发,

Usage

.devcontainer/Dockerfile

FROM jianboy/flutter-dev-container:3.13.5

Develop

锁定版本:

flutter 2.0.5
dart 2.12.3
gradle 7.4-all
java   17
kotlin 1.7.10
android sdk  33
flutter 3.7.12
dart 2.19.6
gradle 7.4-all
java   17
kotlin 1.7.10
android sdk  21-33
flutter 3.19.6
dart
gradle tool 7.2.2 gradle-7.5-all.zip
java   17.0.11-ms
21.0.1-ms
11.0.23-ms

kotlin 1.7.10
android sdk  21-33

coding 目前在用的版本:

sift-docker.pkg.coding.net/flutter-team/dev-container/dev-allinone:1.0.12-flutter

支持 flutter 开发 更新 python3 支持,环境变量添加到.bashrc

Codespaces在用的版本:

codespaces默认环境就集成了众多开发语言,但是不包含flutter,为此只需要未flutter创建容器即可:

docker login --username jianboy
docker build  -f .devcontainer/Dockerfile2 -t jianboy/flutter-dev-container:3.13.5 .
docker push jianboy/flutter-dev-container:3.13.5

已知问题:无法使用docker,无其他环境

构建 apk

      - uses: gradle/gradle-build-action@v2
        with:
          arguments: publishToMavenLocal

rclone 同步apk

    # Setup Rclone
    - name: Setup Rclone
      uses: AnimMouse/setup-rclone@v1
      with:
        rclone_config: ${{ secrets.RCLONE_CONFIG }}

    # # Sync from Tencent COS
    - name: Rclone Sync 
      run: |
          rclone copy TencentCOS:${{ secrets.COS_CDN_BUCKET }} ./ --transfers=8 --checkers=16
      env:
        RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}

    # Rclone Sync to B2 & R2
    - name: Rclone Sync 
      run: |
          rclone copy ./ Cloudflare:${{ secrets.CF_R2_BUCKET }} --transfers=8 --checkers=16 --exclude=.git/** --exclude=.github/** --exclude=README.md
          rclone copy ./ Backblaze:${{ secrets.B2_BUCKET }} --transfers=8 --checkers=16 --exclude=.git/** --exclude=.github/** --exclude=README.md
      env:
        RCLONE_CONFIG_PASS: ${{ secrets.RCLONE_CONFIG_PASS }}

GitHub Action ipa:

本章介绍通过 github 托管代码,每次提交代码,github action 自动触发构建ipa,发布IOS。

安装 Apple 证书

打包证书 .p12, 描述文件 .mobileprovision

P12_BASE64 P12_PASSWORD

- name: Install Apple Certificate
  uses: apple-actions/import-codesign-certs@v1
  with:
    p12-file-base64: ${{ secrets.P12_BASE64 }}
    p12-password: ${{ secrets.P12_PASSWORD }}

Github Action 构建发布 apk

包含初始化安卓环境,构建,推送消息,提交,上传到应用商店等等

Notify on Slack

配置 SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} 通知的路径

Deploy to Play Store

需要到 google console 生成 service_account.json,配置 {{ secrets.SERVICE_ACCOUNT_JSON }}

Sign AAB

一种方法可以在代码中存放 keys.jks,然后在 build.gradle 上配置 sign。另外一种方法,使用 r0adkll/sign-android-release@v1,配置 ${{ secrets.SIGNING_KEY }} 等四个参数。

devcontainer

docker login 
docker build  -f .devcontainer/Dockerfile2 -t jianboy/android-dev-container:v1.0.1 .
docker push

Jenkins

通过docker快速启动一个 Jenkins 服务,配置好环境,插件,构建任务,即可实现自动化构建,部署,通知等功能。

docker run -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home jenkins/jenkins:lts

配置文件android-studio\Jenkinsfile

travis

travis是比较早的ci/cd平台,通过 travis-ci 实现自动化构建,部署,通知等功能。主要提供php,nodejs,python等语言的支持,目前是收费的。

配置 android-studio\.travis.yml

fastlane

AppCenter

Gitpod

通过 .gitpod.yml.gitpod.Dockfile 配置开发环境,实现远程开发。

FROM gitpod/workspace-full-vnc

容器包含 VNC 服务,可以通过浏览器访问远程桌面,在做桌面开发十分有效。

此外提供了很多开发环境,如 nodejs,python,java,go,rust等等,可以安装 Chrome 浏览器,远程连接 adb。

Gitlab CI

配置 .gitlab-ci.yml 文件,实现自动化构建,部署,通知等功能。

Azure DevOps

一般用来开发微软相关的项目,如.net,azure等,提供windows,linux,mac主机构建,。

配置 dotnet\azure-pipelines.yml

circleci

bitrise