命令行搭建flutter-android编译环境

  • linux 安装

docker run -itd --name=flutter \
--network=host \
-v ($pwd):$(pwd) \
registry.cn-hangzhou.aliyuncs.com/jcleng/wrt-ubuntu:20.04

docker exec -it flutter bash

# flutter sdk
git clone -b 3.22.2 https://mirrors.tuna.tsinghua.edu.cn/git/flutter-sdk.git

apt-get update && apt-get install curl iputils-ping -y

# 临时使用commandlinetools获取sdkmanager https://androidsdkmanager.azurewebsites.net/cmdline-tools.html
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
unzip commandlinetools-linux-11076708_latest.zip

# platform-tools https://developer.android.google.cn/tools/releases/platform-tools
wget https://googledownloads.cn/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip

export PATH=$PATH:$(pwd)/cmdline-tools/bin/:$(pwd)/flutter-sdk/bin/:$(pwd)/platform-tools
mkdir ANDROID_HOME
export ANDROID_HOME=$(pwd)/ANDROID_HOME

mkdir JAVA_HOME
cd JAVA_HOME
wget https://mirrors.huaweicloud.com/openjdk/17/openjdk-17_linux-x64_bin.tar.gz
tar xvf openjdk-17_linux-x64_bin.tar.gz
export JAVA_HOME=$(pwd)/JAVA_HOME/jdk-17/
# 安卓sdk
sdkmanager "platforms;android-34" --sdk_root=$ANDROID_HOME
# 获取最新的commandlinetools
sdkmanager "cmdline-tools;latest" --sdk_root=$ANDROID_HOME

# 使用adb进行配对
adb pair 192.168.195.198:35047
adb connect 192.168.195.198:43015


# 创建项目
flutter create fdemo
cd fdemo/android
# 换腾讯云
vi gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.6.3-all.zip

# 使用代理, 以及修改 ~/.gradle/gradle.properties 的代理设置
export http_proxy=http://192.168.2.114:7892
export https_proxy=http://192.168.2.114:7892

touch ~/.gradle/gradle.properties

# 构建测试
flutter pub get
# 编辑环境
code android/local.properties

sdk.dir=/home/wb/g/ANDROID_HOME/
flutter.sdk=/home/wb/g/flutter-sdk/
flutter.buildMode=debug
flutter.versionName=1.0.0
flutter.versionCode=1

# 构建测试
./gradlew assembleDebug

# 指定设备运行
flutter devices
flutter run -d 21091116C
  • vscode连接进去

# 用户端vscode安装:
ms-vscode-remote.remote-ssh

# 服务端安装:
ms-vscode-remote.remote-containers
ms-azuretools.vscode-docker
# 设置扩展的 docker path

# 容器内安装
Dart-Code.flutter

# 然后打开服务端[docker]找到刚刚的容器[附加 VSCODE]

code /etc/profile
# 最前面添加
export work_path=/home/wb/g
export PATH=$PATH:$work_path/cmdline-tools/bin/:$work_path/flutter-sdk/bin/:$work_path/platform-tools
export ANDROID_HOME=$work_path/ANDROID_HOME
export JAVA_HOME=$work_path/JAVA_HOME/jdk-17/

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# export http_proxy=http://192.168.2.114:7892
# export https_proxy=http://192.168.2.114:7892
  • 或者换项目的镜像源

主要是 android/build.gradle  allprojects.repositories 加了之后还有加 allprojects.buildscript.repositories
# 参考:
https://framagit.org/jcleng/flutter_stp/-/blob/master/android/build.gradle?ref_type=heads#L8

# android/build.gradle
// google()
// mavenCentral()
maven { url "https://maven.aliyun.com/repository/central/" }
maven { url "https://maven.aliyun.com/repository/public/" }
maven { url "https://maven.aliyun.com/repository/google/" }
maven { url "https://maven.aliyun.com/repository/gradle-plugin/" }
mavenCentral()

# android/settings.gradle
// google()
// mavenCentral()
// gradlePluginPortal()
maven { url "https://maven.aliyun.com/repository/central/" }
maven { url "https://maven.aliyun.com/repository/public/" }
maven { url "https://maven.aliyun.com/repository/google/" }
maven { url "https://maven.aliyun.com/repository/gradle-plugin/" }
mavenCentral()