用flutter开发后要打包时,需要对项目目录进行微调
1、android,要将keystore进行注册和设置,如果有开发中对minSdkVersion有过微调,这里就不用管了。毕竟每个项目都不一样,但keystore可以一样
参考:Android平台签名证书(.keystore)生成指南 - DCloud问答生成keystore。
其实就是一句:keytool -genkey -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore -alias testalias
这里面看着keystore和alias,因为最终要在flutter里设置这两个玩意
OK,生成完后,在flutter项目的android下创建:key.properties,输入4行
XML/HTML代码
- storePassword=123456
- keyPassword=123456
- keyAlias=testalias
- storeFile=/Users/gouki/test.keystore
keyAlias,对应了刚才上面的-alias,storeFile,对应了实际路径,可以在项目外,反正只要能够访问得到。
然后修改build.gradle,参考 localProperties的写法,加入:
XML/HTML代码
- def keystorePropertiesFile = rootProject.file("key.properties")
- def keystoreProperties = new Properties()
- keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
然后找到buildTypes,会发现里面一有一句:signingConfig signingConfigs.debug,其实你搜索整个文件,都找不到signingConfigs这个节点。所以理所当然的,将debug改成release,在和buildTypes的同级,增加:
XML/HTML代码
- signingConfigs {
- release {
- keyAlias keystoreProperties['keyAlias']
- keyPassword keystoreProperties['keyPassword']
- storeFile file(keystoreProperties['storeFile'])
- storePassword keystoreProperties['storePassword']
- }
- }
保存,然后flutter build apk 即可。
Running Gradle task 'assembleRelease'... 43.0s
✓ Built build/app/outputs/flutter-apk/app-release.apk (32.9MB).
2、macos ,相对更方便了,如果没有特殊的调整,其实基本上在开发的时候都有修改过了,即:在macos/Runner下,修改DebugProfile.entitlements和Release.entitlements,增加:
XML/HTML代码
- <key>com.apple.security.network.server</key>
- <true/>
- <key>com.apple.security.network.client</key>
- <true/>
否则,读取不了网络。。
flutter build macos
---
最后打完后一看。。。我10M左右的assets,最终打完包:
android apk 32.9M
macos xxx.app 55.6M
项目完成,这是我第一次完整的写完一个flutter项目(还差一个自动更新)。之前都是用uniapp打包的。
代码还没有优化,当然其实在写的过程中已经反复过好几次了,有为了性能上的,有为了显示上的,但怎么说,完成比完美更重要。如果没有完成,天天完善,最后一个APP都出不来。。。完成了,还有机会去完善(虽然可能只是口号)。。。