星锁APP
星云项目组旗下的智能锁应用,其中锁相关数据接入星云平台,业务数据接入星锁自有后台。
基于Flutter技术架构,支持Android和iOS平台。
开发步骤
安装Flutter
参阅 安装 - Flutter
然后 flutter doctor 检查环境
禁用不需要的平台
flutter config --no-enable-macos-desktop --no-enable-windows-desktop --no-enable-linux-desktop --no-enable-web
安装依赖
flutter pub get
运行
# 运行sky渠道
flutter run --flavor sky -t lib/main_sky.dart
配置签名
参阅 构建和发布 Android 应用 - 创建上载密钥库 - Flutter
为发布渠道创建JAVA密钥储存(密钥库)文件 .jks,或者 .keystore 文件。
keytool -genkey -v -keystore android/app/sky.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
请记住你输入的主密码和键密码
因为本项目将会发布2个以上的渠道,所以密钥库也会有2个以上,请注意区分 同一个发布渠道必须使用同一个密钥库,不要生成多个。
为了编译管理方便,我们将密钥库文件放在了项目代码内。
key.properties 文件用于存放密钥库的相关信息,但是我们不用这个文件,而是直接在 build.gradle 中写入密钥库的相关信息。
因为我们将密钥库文件本身都已经储存在git中了,也就没必要再单独存放密钥信息了。
编译
flutter build apk --split-per-abi --release --flavor sky -t lib/main_sky.dart
获取编译包的签名
用于APP备案,国内商店上架等
需要使用到apksigner工具,对于Windows来说,它在:C:\Users\myUser\AppData\Local\Android\Sdk\build-tools\34.0.0\lib
在 git bash 中我需要使用 apksigner.bat 来使用它;在其它系统中应该可以直接使用 apksigner 命令即可。
参阅:How to find signature of apk file?
apksigner verify --print-certs -v build/app/outputs/flutter-apk/app-sky-release.apk
用于Google Play发布的指南
https://www.gstatic.com/play-apps-publisher-rapid/signing-tool/prod/pepk-src.jar
- 下载 Play Encrypt Private Key (PEPK) 工具,请注意 pepk-src.jar中没有主清单属性
- 生成密钥
java -jar android/google/pepk.jar --keystore=android/app/sky.jks --alias=upload --output=android/google/google_pek.zip --include-cert --rsa-aes-encryption --encryption-key-path=android/google/encryption_public_key.pem
- 上传密钥 上传android/google/google_pek.zip文件到谷歌Play管理中心
- 编译和上传 app bundle
flutter build appbundle --release --flavor sky -t lib/main_sky.dart
然后文件在:build/app/outputs/bundle/skyRelease/app-sky-release.aab
- 注意,这里的sky.jks和google_pek.zip和encryption_public_key.pem都是sky渠道的,和谷歌账号对应。如果需要使用其他谷歌账号,需要更换这两个文件。