# 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

```