前言
本文以创建名为“focus_flutter”的项目为例。
本文是在用Android Studio创建Flutter工程后,进行了一些初始配置的修改:
- 创建项目,并为项目初始化git仓库;
- android模块:修改包名,创建签名,修改release编译配置;
- ios模块:修改包名,添加开发者信息;
- 修改.gitignore,保存一些重要文件,丢弃一些冗余文件;
- 提交所有修改;
本文创建Flutter项目的基础环境版本信息如下:
2021-06-04
Flutter version: 2.2.1
Dart version: 2.13.1
Android studio version: 4.2.1
Flutter plugin version: 57.0.2
复制代码
项目初建
Android Studio 创建 flutter 应用, 放到 focus_flutter 目录下,并初始化git仓库。
- 确定项目的创建信息,创建项目;
# 项目的创建信息
工程名:focus_flutter
包名:com.focus
平台配置:
1.android:
默认使用androidx*
默认编程语言kotlin
2.ios:
默认编程语言swift
复制代码
- 初始化git仓库。
- 修改工程根目录和android目录下的.gitignore文件,保留
*.iml
配置文件。iml是工程的组织文件,最好保留。
Android模块基础配置修改
- 使用Android Studio打开Flutter工程的android模块:
project->flutter->open android module in android studio
复制代码
- 编译android/app,确定是否可以编译通过。注意,ndk没装匹配的版本可能导致编译不过。
flutter'2.2.1'创建的工程,Android需要安装ndk'21.1.6352462',否则单独编译"project/android"模块会报错;
复制代码
- 修改android模块目录下的.gitignore文件,保留iml配置文件,iml是工程的组织,保留后,可以在Android Studio的flutter项目状态下,右键菜单中直接选择在新窗口中打开android模块。
- 修改自己喜欢的包名:
1. 修改 AndroidManifest.xml 文件包名的配置为:"com.focus.flutter".
2. 修改 "project/android/app/build.gradle" 内的applicationId为:"com.focus.flutter".
复制代码
- kotlin和gradle版本以官方初始demo为准, 否则release打包时会有一些问题。
- 为应用创建jks秘钥文件:
# 1. 先确定秘钥信息如下:
keystore password: focus1024
alias: focus_flutter
key password: focus2048
validity(years): 100
first and last name(姓名): thlllzq
organizational unit(组织): focus
organization:focus
city and locality(城市和地区):shanghai
state or province(州或省):shanghai
country code(国家代码): CHN
# 2. 再通过命令行创建秘钥,放到“project/app/”目录下;
$ # 输入以下keytool命令生成jks秘钥,并按提示填写额外的配置信息,最后以Y结束。
$ keytool -genkey -v -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 36500 -alias focus_flutter -storepass focus1024 -keypass focus2048
# 3. 创建秘钥属性文件,方便在build.gradle配置中引用;
# key.properties
--------------------
storePassword=focus1024
keyPassword=focus2048
keyAlias=focus_flutter
storeFile=keystore.jks
--------------------
复制代码
android/app/build.gradle
文件中配置打包信息;
# 在app/build.gradle文件中配置release签名和编译类型
# build.gradle
--------------------
# 在android{}配置信息前,加载keystore.jks的配置信息
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('app/key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
...
android {
signingConfigs {
# 读取秘钥配置文件中的签名秘钥
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
--------------------
复制代码
- 测试打包;
# “flutter build”默认打release包,是包含所有目标ABI编译代码的胖apk,初始项目打包大小为15.4MB.
$ flutter build apk
# “--split-per-abi”设置按不同目标ABI分别打包,不同ABI的包更小。
$ flutter build apk --split-per-abi
# 分包打包,包含如下几个类型apk,初始项目打包,单个包大小约为5MB.
[project]/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
[project]/build/app/outputs/apk/release/app-arm64-v8a-release.apk
[project]/build/app/outputs/apk/release/app-x86_64-release.apk
# 指定ABI架构打包
$ flutter build apk --target-platform android-arm
复制代码
- 安装apk到设备;
$ flutter install
复制代码
iOS模块基础配置修改
Flutter 支持 iOS 8.0+
- 使用Xcode打开Flutter工程的ios模块:
project->flutter->open iOS module in Xcode
复制代码
- iOS模块修改包名和应用名,添加开发者信息:
1. 在Xcode中,打开App的iOS目录中的 Runner.xcworkspace。
2. 在Xcode的项目导航栏中选择Runner,在Runner配置窗口来配置App的属性信息:
-----------------------
# 修改包名和应用名称
->[General]
Display Name: 应用名称
Bundle Identifier: App ID
->[Info]
Bundle name:应用名
# 添加开发者账号信息
->[Signing & Capabilities]
Team: Apple开发者账号
-----------------------
复制代码
- 设置信任开发者,并运行app;
1. 连接iPhone手机,手机会提示信任连接的设备;
2. 安装应用:输入命令“flutter run”即可将应用安装到iPhone设备。
3. 安装信任问题:第一次安装到手机无法打开,会提示到设置里设置信任后再运行!!!
-----------------------
# 设置信任开发者
iPhone设置信任:设置->通用->设备管理->选择信任的开发者;
-----------------------
复制代码
提交工程git
- 修改根目录下的.gitignore文件;
# .gitignore
# 1.提交.iml工程组织文件到git仓库;
#*.iml
# 2.忽略 pubspec.lock 文件,该文件是依赖项下载缓存配置文件,可自动生成,不需要提交。
pubspec.lock
复制代码
- 修改android目录下的.gitignore文件;
# 需要提交的一些必要文件
-----------------------
#gradle-wrapper.jar
#/gradlew
#/gradlew.bat
#GeneratedPluginRegistrant.java
-----------------------
# iml文件是模块的组织文件,需要提交,保留此文件,可以直接在flutter工程状态下直接选择用Android Studio打开android模块;
-----------------------
#*.iml
-----------------------
复制代码
- 提交所有更改到git仓库。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END