当前位置: 首页 > wzjs >正文

个人网站要求天津市建设执业资格注册中心网站

个人网站要求,天津市建设执业资格注册中心网站,上杭县住房和城乡建设局网站,1688免费货源网目录 1、参考文档 2、简易打包 3、生成应用程序签名 4、项目中引用秘钥库 5、在build.gradle中配置签名 6、打包应用程序 7、测试安装包 8、Android build.gradle.kts过滤配置的演进与优化 历史背景 现代趋势:专注于 64 位架构 为什么 Flutter 默认只包…

目录

1、参考文档 

2、简易打包

3、生成应用程序签名

4、项目中引用秘钥库

5、在build.gradle中配置签名

6、打包应用程序

7、测试安装包

8、Android build.gradle.kts过滤配置的演进与优化

历史背景

现代趋势:专注于 64 位架构

为什么 Flutter 默认只包含 arm64-v8a 和 armeabi-v7a

为什么只使用 arm64-v8a


1、参考文档 

API文档

链接

Build and release an Android app官网地址Android | Flutter
Flutter快速上手,入门教程Flutter快速上手,入门教程_flutter教程-CSDN博客

2、简易打包

默认是debug,如果需要打release包时,TODO: Add your own signing config for the release build.

3、生成应用程序签名

在 macOS 或者 Linux 系统上,执行下面的命令

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

在 Windows 系统上,执行下面的命令:

keytool -genkey -v -keystore D:/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key

如果报错 ,java的jdk环境变量可能配置的有问题,keytool命令前面加上jdk环境变量的路径试试,注意空格需要用反引号

输入flutter doctor -v,查看java的jdk的安装路径

新的命令:

/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

4、项目中引用秘钥库

创建一个名为/android/key.properties 的文件,内如如下:

storePassword=<password-from-previous-step>
keyPassword=<password-from-previous-step>
keyAlias=upload
storeFile=<keystore-file-location>

注意:这个文件一般不要提交到代码仓库

5、在build.gradle中配置签名

通过编辑 /android/app/build.gradle 文件来为我们的 app 配置签名,在android{...}这一行前面,加入如下代码

import java.util.Properties
import java.io.FileInputStreamplugins {...
}val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}android {...
}
android {// ...signingConfigs {create("release") {keyAlias = keystoreProperties["keyAlias"] as StringkeyPassword = keystoreProperties["keyPassword"] as StringstoreFile = keystoreProperties["storeFile"]?.let { file(it) }storePassword = keystoreProperties["storePassword"] as String}}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.getByName("debug")signingConfig = signingConfigs.getByName("release")}}
...
}

全部代码展示:

// 在文件顶部添加这些导入语句
import java.io.FileInputStream
import java.util.Propertiesplugins {id("com.android.application")id("kotlin-android")// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.id("dev.flutter.flutter-gradle-plugin")
}val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}android {namespace = "com.flutter.test"compileSdk = flutter.compileSdkVersionndkVersion = flutter.ndkVersioncompileOptions {sourceCompatibility = JavaVersion.VERSION_11targetCompatibility = JavaVersion.VERSION_11}kotlinOptions {jvmTarget = JavaVersion.VERSION_11.toString()}defaultConfig {// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).applicationId = "com.wyze.skystream"// You can update the following values to match your application needs.// For more information, see: https://flutter.dev/to/review-gradle-config.minSdk = flutter.minSdkVersiontargetSdk = flutter.targetSdkVersionversionCode = flutter.versionCodeversionName = flutter.versionNamendk {abiFilters += listOf("arm64-v8a")  // 只包含 64 位 ARM 架构// 如果需要支持更多架构,可以添加多个过滤器// abiFilters 'arm64-v8a', 'armeabi-v7a' // 同时支持 64 位和 32 位 ARM}}signingConfigs {create("release") {keyAlias = keystoreProperties["keyAlias"] as StringkeyPassword = keystoreProperties["keyPassword"] as StringstoreFile = keystoreProperties["storeFile"]?.let { file(it) }storePassword = keystoreProperties["storePassword"] as String}}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.getByName("debug")signingConfig = signingConfigs.getByName("release")}}
}flutter {source = "../.."
}// 正确的 Kotlin 语法
dependencies {// 其他依赖...implementation("androidx.core:core-splashscreen:1.0.1")
}

6、打包应用程序

打包APK

# 运行 flutter build apk (flutter build 默认带有 --release 参数)
flutter build apk

打包AAB

# 运行 flutter build appbundle。 (运行 flutter build 默认构建一个发布版本。)
flutter build appbundle

7、测试安装包

直接把该包复制后发到手机,安装即可

adb命令:

1.安装apk到手机上  adb install 路径/apk文件 
2.卸载app从手机上  adb uninstall 包名  
3.查看应用的启动时间  adb shell am start -W

flutter devices 查看设备

然后,你会发现这安装包咋这么大,重点来了,仔细看下面介绍...

8、Android build.gradle.kts过滤配置的演进与优化

Android 打包中的 ABI (Application Binary Interface) 过滤配置是一个重要的性能和兼容性权衡点。我来解释为什么会有这些变化以及为什么现代应用倾向于只支持 64 位架构。

历史背景

早期 Android 设备主要使用 32 位处理器,因此默认配置通常包含以下 ABI:

  • armeabi-v7a (32 位 ARM)

  • x86 (32 位 x86)

  • arm64-v8a (64 位 ARM)

  • x86_64 (64 位 x86)

现代趋势:专注于 64 位架构

这种配置确保应用能在尽可能多的设备上运行,但会显著增加 APK 大小。

现代趋势:专注于 64 位架构

近年来,Google 一直在推动 Android 生态系统向 64 位迁移:

  1. Google Play 要求:从 2021 年 8 月起,Google Play 要求所有新应用必须包含 64 位版本

  2. 设备市场份额:64 位设备已经占据了绝大多数市场份额,特别是在高端设备中

  3. 性能优势:64 位架构提供更好的性能和内存管理

  4. 应用体积优化:移除 32 位支持可以显著减小 APK 大小

为什么 Flutter 默认只包含 arm64-v8a 和 armeabi-v7a

从 Flutter 3.3 开始,默认的 ABI 配置变为:

abiFilters += listOf("arm64-v8a", "armeabi-v7a")

这是因为:

  1. x86 设备市场份额极低:x86 设备(主要是模拟器和少数低端设备)的市场份额已经非常小

  2. 兼容性与体积的平衡:保留 armeabi-v7a 是为了支持仍在使用的少量 32 位设备,同时提供 64 位版本以满足 Google Play 要求

  3. App Bundle 支持:Flutter 推荐使用 App Bundle (AAB) 格式,它会根据用户设备自动提供正确的 ABI 版本,进一步优化下载大小

为什么只使用 arm64-v8a

如果你只配置:

abiFilters += listOf("arm64-v8a")

这意味着:

  1. 最小化应用体积:只支持 64 位 ARM 设备,应用体积最小

  2. 高端设备优先:专注于性能更好的现代设备

  3. 简化维护:减少需要测试的设备组合

  4. 放弃 32 位兼容性:你的应用将无法在任何 32 位设备上运行

代码展示:

// 修复:使用双引号而非单引号ndk {abiFilters += listOf("arm64-v8a") // 只包含 64 位 ARM 架构// 或者更简洁的写法// abiFilters.add("arm64-v8a")// 如果需要支持更多架构// abiFilters += listOf("arm64-v8a", "armeabi-v7a")}


 


文章转载自:

http://ijiXR0eM.trfrL.cn
http://spRDwNvW.trfrL.cn
http://xYi7zUJf.trfrL.cn
http://jBRgRHEU.trfrL.cn
http://Ljo0gm1Y.trfrL.cn
http://gsfW1CSp.trfrL.cn
http://yvhTNH77.trfrL.cn
http://rsQ53bUI.trfrL.cn
http://4zUfgLKY.trfrL.cn
http://JZ7fG6BX.trfrL.cn
http://s0likiOf.trfrL.cn
http://rHICPpD8.trfrL.cn
http://COOLLtxl.trfrL.cn
http://SigdfcsD.trfrL.cn
http://FDTBH4T8.trfrL.cn
http://y9zkaTkj.trfrL.cn
http://EXIrWG6Y.trfrL.cn
http://alzeRwJv.trfrL.cn
http://axtUrfwr.trfrL.cn
http://zaHXUmwS.trfrL.cn
http://iAhxKBQ5.trfrL.cn
http://v3GFnmzy.trfrL.cn
http://i1TJFKby.trfrL.cn
http://vY1s3w06.trfrL.cn
http://BYRi8buk.trfrL.cn
http://kLi2RXJv.trfrL.cn
http://h1LvoS7U.trfrL.cn
http://EsIsYwYn.trfrL.cn
http://Xs3Na2aR.trfrL.cn
http://faTokLxu.trfrL.cn
http://www.dtcms.com/wzjs/690592.html

相关文章:

  • 门户网站系统程序如何用wd做网站设计
  • 大家都在哪些网站做宣传免费的短视频素材库
  • 化工厂网站建设建设部网站怎么查询企业业绩
  • 网站在建设中是什么意思百度网站建设公司哪家好
  • 网站宽屏版ps做登录网站
  • 长沙做网站优化漳州做网站建设公司
  • jquery插件网站推荐糖果果屋网站建设规划书
  • wordpress 模板汉化网站首页优化方案
  • 网站建设是怎么挣钱天津网站快速备案
  • 安徽集团网站建设WORDPRESS导购主题:WYZDG
  • 济南公司网站建设公司排名怎么在网站上做404页面
  • 河北手机版建站系统开发网站怎么做留言区
  • 用jsp做的网站有哪些大企业网站建设费用
  • 北京网站建设工作室哪家好网站怎样推广 优帮云
  • 刷百度指数网站网页qq邮箱怎么发文件给别的邮箱
  • 网站开发项目流程书wordpress可以网络直播
  • 网站背景修改银川网站建设0951
  • 什么是灰色网站姓名logo设计在线生成
  • wordpress开发视频网站模板政务服务网站建设性建议
  • 如何增加网站关键词密度市场调研一般怎么做
  • 建设网站代码湖南信息网官方网站
  • 网站备案流程和规则wordpress长期未更新提醒
  • 网站开发完成情况说明十佳网站
  • 网站建设价格规范怎么做一个电子商务网站
  • 北京网站设计哪家公司好wordpress响应式图片主题
  • 芗城网站建设公司公司网站做好了怎么做排名
  • 西安网站建设优化与推广东莞新增活动轨迹
  • 建站之星破解版手机管理咨询行业的理解
  • 门户网站建设公司哪家好windows优化大师使用方法
  • 询盘网站个人网站做导航网站