flutter项目的打包和发布 主要是Android
flutter 的打包和发布
Android的打包和发布
1.1 填写应用相关的信息
1.2 应用的签名
1.3 打包应用程序
- apk
- aab
发布到应用商城里面 Google 小米啊 你可以把这个东西发布到对应的商城里面
Android 基本信息填写
虽然这个东西很麻烦 但是它只需要做一次就可以了
- 应用的appid
- 应用的名称
- 应用的Icon
- 应用的Launcher
版本号 flutter在哪里配置版本信息的呢
我们可以在这里配置版本信息
如果我们第一次配置版本信息的时候我们会很疑惑 什么意思呢
为什么要这样写呢
为什么 你写个 1.0.0 版本就可以了 你写个1.0.0 + 1是什么意思呢
这个是什么意思呢 在Android中版本分成两个版本
- versionCode: 内部管理的版本号
- versionName: 用户显示的版本号
这个是内部管理的版本
比如我们现在开发的一个应用举一个例子
我们已经开发好了一个版本 我们现在已经打包完了 但是构建完以后 我们发现我们构建的版本是有问题的
这个时候我们会把这个1.0.0+1 改成1.0.0+2 这样我们就可以运行了
所以这个后面的版本就是一个内部版本的意思
ios里面 应用的版本 分为version和build
- version
- build 如果我们改了一版本 然后我们构建这个项目 但是如果我们直接构建我们是构建不成功的 我们需要将这个东西改一下我们才能将他构建成功
所以这里是这样的作用
越前面的版本就是越大的版本
网络请求
我们最后打包出来的这个应用程序我们 是不能进行网络请求的
我们最后打包出来的这个 应用程序 最后是不能直接发送网络请求的 no不能发送
我们默认在release是不能发送网络请求的
我怎么给大家证明这个东西呢
我们来到这个Mainifest文件
因为我们需要去配置它的权限
这个里面它有一个东西
你看这里如果这里有一个network我们就可以访问网络请求了
如果我们配置 了我们就可以访问网络了
这样看我们好像是对他进行了配置的啊 但是其实是没有的 因为我们 需要在mian文件里面对这个东西进行配置
但是我希望它能够访问网络甚至希望访问它的位置
这里我们就把这个权限复制过去
配置完这个信息 我们就可以访问网络和位置信息了
应用签名
以前我们这个东西是不需要这个东西的
android系统在安装apk的时候 首先会检验apk的签名的 如果发现其那名不存在 或者校验签名失败 会拒绝安装
所以我们 要对应用程序签名
我们需要生成一个签名文件
我们可以在window系统上执行这个命名
- 注意这个地方有一个路径 这个路径就是保存的 key文件
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
如果是在macOS或者在Linux上面
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
我就给它执行这样一个命令 然后它会让你输入这个口令
我这里 就用jsptest
这个就是生成的文件
然后它会让你写协议一些信息
这些信息一般是让你填公司的信息
说明我们这里生成的文件就已经有了
这里 如果我们要用的话就要依赖这个文件
我们要创建一个 /android/properties 来对它做一个引用 它包含了密匙库的位置
我们在andriod创建一个文件
然后这个文件填写的信息就是固定的
storePassword=<上一步骤中的密码>keyPassword=<上一步骤中的密码>keyAlias=keystoreFile=<密钥库的位置,e.g. /Users/<用户名>/key.jks>
当然这个文件不建议提交到代码仓库里面
所以我们最好对.gitigonre来做一个忽略
然后我们来找到这个代码
找到这个文件
然后在上面 复制这段代码
def keystoreProperties = new Properties()def keystorePropertiesFile = rootProject.file('key.properties')if (keystorePropertiesFile.exists()) {keystoreProperties.load(new FileInputStream(keystorePropertiesFile))}
这段代码的作用就是读取这个 key.properties
同时我们还需要改一个东西
你会发现这个东西默认是 debug
我们这里要 把这段代码给它删除掉
buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } }
然后把这个东西给 拿过来
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } }
这个时候我们就 能对这个东西进行自动签名
我们的android支持两种打包模式
我们用户在安装的时候几乎都是使用的apk
还有一种就是AAB (官方推荐)
Android App Bundle
aab这个会动态生成用户设备需要的 apk文件
比如我们配置启动图 我们需要配置很多个 图 但是最后用的就只有适合设备的 图片
其实我们只需要使用对应的 一张 所以其实其他的启动图是没有必要使用的
如果我们使用aab就会根据用户的设置 来对应安装对应的设备
这样我们就可以根据这个设置信息来安装对应的程序来达到节省 设备空间的目的
如果是aab文件 他就是执行一个flutter build appbundle的命令
他就是这么一个东西
我们执行 flutter build apk 就会生成对应的apk文件
You are building a fat APK that includes binaries for android-arm, android-arm64, android-x64.If you are deploying the app to the Play Store, it's recommended to use app bundles or split the APK to reduce the APK size. To generate an app bundle, run: flutter build appbundle --target-platform android-arm,android-arm64,android-x64 Learn more on: https://developer.android.com/guide/app-bundle To split the APKs per ABI, run: flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi Learn more on: https://developer.android.com/studio/build/configure-apk-splits#configure-abi-splitRunning Gradle task 'assembleRelease'...Calling mockable JAR artifact transform to create file: C:\Users\Lenovo\.gradle\caches\transforms-2\files-2.1\970f20739b21694cc052d0a5bed5f9a0\android.jar with input C:\Users\Lenovo\AppData\Local\Android\sdk\platforms\android-28\android.jarRemoved unused resources: Binary resource data reduced from 4433KB to 4424KB: Removed 0%Running Gradle task 'assembleRelease'...Running Gradle task 'assembleRelease'... Done 277.0s (!)√ Built build\app\outputs\apk\release\app-release.apk (21.5MB).
这样就是打包成功了
这样我们就有这个 apk 我们就可以发布了
android的发布平台就很多了
我们构建的所有 包都是在build里面
在build里面有一个app
这个里面有一个 apk
这个东西就是release
倒是我们就把这个文件发给产品经理
同样我们也打包一下这个aab文件
如果你要到Google去发布的话 是需要付钱的
对我来说也是没有什么用的
IOS我没有mac所以就不写了
更多相关文章
- Ubuntu14.04 Android(安卓)源码编译
- 个人总结--Android(安卓)应用开发中国大学生挑战赛
- 2.Eclipse版本android 65535解决方案(原理等同android studio现
- Android中关于JNI 的学习(零)简单的例子,简单地入门
- 为何 Android(安卓)4手机不能当 U 盘了
- 我的第一个Android升级版本
- Android(安卓)面试题(有详细答案)
- Android(安卓)JAR组件安装打包教程
- Android项目实践系列(二) - 深度定制Logger