记第一个flutter上线过程

####flutter上gp

使用app bundle上传google后台,然后google会使用key生成不同架构的app,显示app大小7M
~8M这样。
优势是从gp下载会自动匹配手机,下载的apk包会比较小。缺点是从gp上下一个apk,但这个包不会是一个完整架构的apk,这个包是不能拿去其他渠道推广的。推广包最好重新打一个具备全部架构的apk包。

使用apk上传的话是要14M。

上传bundle包给google出现 Your app bundle targets the following unrecognised languages: fb. The list of supported language codes can be found in the IANA registry. Invalid languages caused by third-party libraries can be excluded using the resConfigs Gradle property.
需要在app/build.gradle里加下面的代码

1
2
3
defaultConfig {
resConfigs "en"
}

切记不要在google做实验性的传包,google后台是对包做唯一性的,维度有packageName,versionCode

上传自己的key到google后台,这个有坑,注意看清楚在下一步

切记慎点continue,google推荐的第一个方式是google自己生成的key,生成后就改不了,也导不出key以后供其他渠道使用。

####配置阶段
需要在android工程上配置的有:

Androidmanifest.xml

权限:

1
<uses-permission android:name="android.permission.INTERNET"/>

图标+应用名称

1
2
android:label="MoneyTopic"   
android:icon="@mipmap/ic_launcher"

build.gradle

签名:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
signingConfigs {
release {
storeFile file('xxx.jks')
storePassword ''
keyAlias ''
keyPassword ''
v1SigningEnabled true
v2SigningEnabled false
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
注意混淆文件proguard-rules.pro的规则

app version 在pubspec.yaml

1
version: 1.0.0+100   //versionName+versionCode

firebase:使用

#输入法问题
解决方案
需要背景图片

  • SingleChildScrollView外包一层Stack
    不需要背景图片
  • 包一层SingleChildScrollView

#点击事件问题
onPressed: testAction() 页面加载完会自动进入方法一次

onPressed: () => testAction() 正常,页面加载结束不会进入方法

#try catch 不到问题

await语法块里面才能呗try catch

1
2
3
4
5
try {
await api.xxx()
} catch (e) {
print(e); //才能捕捉到xx里面的报错
}

如果await的方法报错,该方法不会执行后面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

run() {
try {
test();
} catch (e) {
print(e); //捕捉不到test里面api的错误,
} finally {
print("3"); //无论如何都会走,不管是报错,还是正确
}
}

Future test() async {
print("1") //跑这个
await api.xxx()
print("2") //如果报错,不会跑这个
}