# 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