B 站视频
https://www.bilibili.com/vide…
https://www.bilibili.com/vide…
本节目标
- 编译 build releae
- 程序瘦身
- 混淆程序
- 修改程序名称
- 制作图标
- 制作启动画面
正文
1. APP 图标
规格说明
https://developer.android.com…
https://developer.apple.com/d…
图标尺寸
android 512×512
ios 1024×1024
在线工具
https://www.designevo.com/cn/…
flutter_launcher_icons 插件
https://pub.dev/packages/flut…
pubspec.yaml
dev_dependencies:
# icons
flutter_launcher_icons: ^0.7.5
flutter_icons:
android: "launcher_icon"
ios: true
image_path: "assets/icons/logo-1024.png"
生成图标
flutter pub run flutter_launcher_icons:main
图标目录
android/app/src/main/res
ios/Runner/Assets.xcassets/AppIcon.appiconset
2. 启动图片
规格说明
https://developer.apple.com/d…
https://developer.android.com…
https://uiiiuiii.com/screen/
图片尺寸
iPhone XS Max 1242px × 2688px
android xxhdpi xhdpi
在线工具
https://hotpot.ai/icon_resizer
3. Android 发布
证书签名说明
https://developer.android.com…
生成证书
# 进入目录 android/app/
keytool -genkey -v -keystore ./key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
# 输出文件
android/app/key.jks
Gradle 配置
-
android/gradle.properties
android.enableAapt2=false # 不检测依赖资源
-
android/key.properties
storePassword=123456 keyPassword=123456 keyAlias=key storeFile=./key.jks
-
android/app/build.gradle
// 定义属性读取对象,读取 android/key.properties def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) {keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } android { compileSdkVersion 28 ... // 签名配置 signingConfigs { release {keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { // 发布配置 release {signingConfig signingConfigs.release} } }
修改版本号
- pubspec.yaml
version: 1.0.0+1
修改程序名称
-
android/app/src/main/AndroidManifest.xml
<application android:name="io.flutter.app.FlutterApplication" android:label="猫哥新闻" android:icon="@mipmap/launcher_icon">
设置网络权限
-
android/app/src/main/AndroidManifest.xml
</application> <uses-permission android:name="android.permission.INTERNET" /> </manifest>
编译打包
flutter build apk --split-per-abi
输出目录
✓ Built build/app/outputs/apk/release/app-armeabi-v7a-release.apk (7.2MB).
✓ Built build/app/outputs/apk/release/app-arm64-v8a-release.apk (7.4MB).
✓ Built build/app/outputs/apk/release/app-x86_64-release.apk (7.6MB).
混淆编译
https://github.com/flutter/fl…
-
android/gradle.properties
extra-gen-snapshot-options=--obfuscate
-
android/proguard-rules.pro
#Flutter Wrapper -dontwarn io.flutter.** -keep class io.flutter.app.** {*;} -keep class io.flutter.plugin.** {*;} -keep class io.flutter.util.** {*;} -keep class io.flutter.view.** {*;} -keep class io.flutter.** {*;} -keep class io.flutter.plugins.** {*;}
-
android/app/build.gradle
buildTypes { release { signingConfig signingConfigs.release minifyEnabled true // 资源压缩设置 useProguard true // 代码压缩设置 // 读取代码压缩配置文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
- 编译
flutter build apk --split-per-abi
启动页
- 图片
-
android/app/src/main/res/values/colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="cyan">#deecec</color> </resources>
-
android/app/src/main/res/drawable/launch_background.xml
<?xml version="1.0" encoding="utf-8"?> <!-- Modify this file to customize your launch splash screen --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/cyan" /> <item> <bitmap android:gravity="center" android:src="@mipmap/launch_image" /> </item> </layer-list>
4. IOS 发布
启动页
修改程序名称
资源
视频
- b 站
- 油管镜像
蓝湖设计稿(加微信给授权 ducafecat)
https://lanhuapp.com/url/lYuz1
密码: gSKl
蓝湖现在收费了,所以查看标记还请自己上传 xd 设计稿
商业设计稿文件不好直接分享, 可以加微信联系 ducafecat
YAPI 接口管理
http://yapi.demo.qunar.com/
代码
https://github.com/ducafecat/…
参考
https://flutter.dev/docs/depl…
https://flutter.dev/docs/depl…
https://flutter.dev/docs/depl…
https://github.com/flutter/fl…
https://pub.dev/packages/flut…
https://developer.android.com…
https://developer.apple.com/d…
https://developer.apple.com/d…
https://developer.android.com…
https://uiiiuiii.com/screen/
VSCode 插件
- Flutter、Dart
- Flutter Widget Snippets
- Awesome Flutter Snippets
- Paste JSON as Code
- bloc
- Code Spell Checker