|
@@ -0,0 +1,163 @@
|
|
|
+# Flutter 开发,安卓开发
|
|
|
+
|
|
|
+基于 Linux 容器远程开发,
|
|
|
+
|
|
|
+## Usage
|
|
|
+
|
|
|
+.devcontainer/Dockerfile
|
|
|
+```
|
|
|
+FROM jianboy/flutter-dev-container:3.13.5
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+## Develop
|
|
|
+
|
|
|
+```
|
|
|
+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
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+构建 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 }}
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+## 构建 flutter Android 项目
|
|
|
+
|
|
|
+## 构建 flutter IOS 项目
|
|
|
+
|
|
|
+本章介绍通过github托管代码,每次提交代码,github action自动触发构建,发布IOS。
|
|
|
+
|
|
|
+### 步骤
|
|
|
+
|
|
|
+* 安装 Apple证书
|
|
|
+* 构建App
|
|
|
+* 签名
|
|
|
+* 发布
|
|
|
+
|
|
|
+### 安装 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 }}
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+# Android studio 构建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
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+# dev
|
|
|
+
|
|
|
+基于 docker 快速切换版本开发环境
|
|
|
+
|
|
|
+## nodejs
|
|
|
+
|
|
|
+如,项目需要在node14环境下开发,可以使用以下方式:
|
|
|
+
|
|
|
+```
|
|
|
+docker run --rm -it -v /workspace:/app node:14 /bin/bash
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+-v /workspace:/app 挂载本地目录到容器内,/workspace 为本地目录,/app 为容器内目录
|
|
|
+
|
|
|
+### 额外配置
|
|
|
+
|
|
|
+有时候,项目需要一些额外开发环境,可以新建一个 Dockerfile 文件,构建一个本地镜像
|
|
|
+
|
|
|
+```Dockerfile
|
|
|
+FROM node:14
|
|
|
+WORKDIR /app
|
|
|
+# todo
|
|
|
+```
|
|
|
+
|
|
|
+然后使用该镜像启动容器:
|
|
|
+```
|
|
|
+docker build -t jianboy/node-hexo:14 .
|
|
|
+
|
|
|
+docker run --rm -it -v /workspace:/app node:14 /bin/bash
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## python
|
|
|
+
|
|
|
+如,项目需要在python3.8环境下开发,可以使用以下方式:
|
|
|
+
|
|
|
+```
|
|
|
+docker run --rm -it -v /workspace:/app python:3.8 /bin/bash
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+## golang
|
|
|
+
|
|
|
+如,项目需要在golang1.15环境下开发,可以使用以下方式:
|
|
|
+
|
|
|
+```
|
|
|
+docker run --rm -it -v /workspace:/app golang:1.15 /bin/bash
|
|
|
+
|
|
|
+```
|