Flutter 常见问题&命令总结

698 阅读2分钟

Android Studio 控制台输出中文乱码

1.在Android Studio的Help -> Edit Custom VM Options… 打开的配置文件中加入

-Dconsole.encoding=UTF-8
-Dfile.encoding=UTF-8

2.gradle.bat中修改

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS= "-Dfile.encoding=UTF-8"

Pub.dev国内镜像

pub.dev

打包失败,找不到仓库文件404,500,jcenter

在.gradle目录下新建init.gradle, 强制删除指定镜像地址

allprojects{
    repositories {
        
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://repo.maven.apache.org') || url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
 
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'http://developer.huawei.com/repo/' }
    }
}

Warning: Mapping new ns ... # to old ns

升级Gradle版本

1. project 目录下 build.gradle文件中 dependencies

classpath 'com.android.tools.build:gradle:7.1.3'

2. android 目录下 gradle-wrapper.properties中

distributionUrl=https://services.gradle.org/distributions/gradle-7.4-all.zip

获取系统证书调试SHA1安全码

keytool -v -list -keystore ~/.android/debug.keystore

生成安卓签名

keytool -genkey -v -keystore ./key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
  • genkey: 生成密钥对,即公钥和私钥。
  • keystore: 设置生成的文件目录和名称
  • alias: 密钥的别名,这个名字是公开的。
  • keyalg: 指定密钥的算法,一般会设置为 RSA,默认 DSA。
  • validity: 证书的有效期(天)。

Flutter 打包Release

在Android 目录下新建 key.properties

storePassword=<password from previous step> //输入上一步创建KEY时输入的 密钥库 密码 
keyPassword=<password from previous step> //输入上一步创建KEY时输入的 密钥 密码 
keyAlias=key  // 输入上一步创建KEY时输入的 证书别名
storeFile=<E:/key.jks> //key.jks的存放路径

进入项目目录的 /android/app/build.gradle

def keystorePropertiesFile = rootProject.file("key.properties") 
def keystoreProperties = new Properties() 
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

替换如下代码

buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
}

替换为

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

指定平台打包

flutter build apk --target-platform android-arm64

指定版本号打包

flutter build apk --build-name=1.0.3 --build-number=3

无线连接安卓手机/远程调试

adb disconnect

adb tcpip 5555

adb connect 192.168.0.100

安卓平台工具下载地址

ADB和Fastboot for Windows

https://dl.google.com/android/repository/platform-tools-latest-windows.zip

ADB和Fastboot for Mac

https://dl.google.com/android/repository/platform-tools-latest-darwin.zip

ADB和Fastboot for Linux

https://dl.google.com/android/repository/platform-tools-latest-linux.zip

Linux下Flutter环境(可搭配Jenkins持续集成)

1.下载

Flutter Linux 最新版地址

wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_2.10.5-stable.tar.xz

wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip

2.解压

xz -d ***.tar.xz
tar -xvf **.tar

3.下载配置安卓环境

cd cmdline-tools/bin/

./sdkmanager --sdk_root=/home/flutter/android-sdk/ --list
./sdkmanager --sdk_root=/home/flutter/android-sdk/ "platforms;android-31"
./sdkmanager --sdk_root=/home/flutter/android-sdk/ "platform-tools"
./sdkmanager --sdk_root=/home/flutter/android-sdk/ "cmdline-tools;latest"
./sdkmanager --sdk_root=/home/flutter/android-sdk/ "build-tools;31.0.0"

4.设置环境变量 /etc/profile

export ANDROID_HOME=/home/flutter/android-sdk 
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin 
export CMDLINE_HOME=/home/flutter/cmdline-tools 
export PATH=$PATH:$CMDLINE_HOME/bin 
export PUB_HOSTED_URL=https://pub.flutter-io.cn 
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 
export Flutter=/home/flutter/flutter export PATH=$PATH:$Flutter/bin

5.检查

flutter doctor --android-licenses
flutter doctor

6.Jenkins 打包命令

flutter config --android-sdk /home/flutter/android-sdk
flutter pub get
flutter build apk --target-platform android-arm64

Jenkins 提示 gradle下载出错或Gradle下载卡主

官网手动下载替换

Jenkins 常见目录 /root/.gradle/wrapper/dists

新环境打包报错

按顺序打包 profile->debug->release并观察日志

flutter buid apk --profile
flutter buid apk --debug
flutter buid apk --release

迁移到空安全

官方迁移文档

升级依赖到支持空安全的最新版本
dart pub outdated --mode=null-safety
开始迁移
dart migrate