这几天在弄变种版本的时候,本来没有什么多大情况,不过就在编译过程总是会遇到一些莫名奇妙的地方。原本是想单独编译一个版本给测试使用,这样不用覆盖原本已经有版本。 productFlavors { create("dev") { dimension = "environment" applicationId = "com.game.app.dev" resValue("string", "app_name", "Game Dev") } create("default") { dimension = "environment" } }
flavorDimensions += listOf("environment")
加上这个变种版本后,通过命令行导出。
flutter build apk --flavor dev --debug
这样看起来是无问题,能打包到。但是过不久就编译不起来。然后出现莫名其妙的问题,这个gradle 错误。然后在搜索引擎找了一些类似的答案。的确是因为在gradle 设置变种,导致flutter 在编译和导出的时候出现问题。Gradle build failed to produce an .apk file.
之后在查资料里面可以看到有参数和变体的输入框,再添加对应变种,如dev 在Build flavor 似乎问题就解决了。gradle 的问题似乎报错很怪异。在添加变种版本后,打包在android studio 菜单里面会出现类似问题,改成命令行后导出 是可以。今天查一个问题,查了老半天。结果在打印小端序后,查看蓝牙信息才出现了。这一点之前没留意,但是在打印蓝牙自定义信息后却发现 这个可以解决问题。在处理4个字节的小端序数据的时候,读取的时候需要进行一个运算。这也是最近在项目会遇到一些场景的。 int serviceId = (data[5] << 24) | (data[4] << 16) | (data[3] << 8) | data[2]; String hex = serviceId.toRadixString(16).padLeft(8, '0'); return Uuid.parse('$hex-0000-1000-8000-00805f9b34fb');
关于厂商设备和定义信息还是需要打印一下方便做记录。不然查这个问题查了很久。在版本记录的时候遇到一个情况在build.gradle.kts 文件中,有这样一个情况。flutter.versionCode 在哪里读取
defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.game.app" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName }
查阅一些资料,实验一下。pubspec.yaml 在version 里面 前者是读取1.0.0版本号+1 就是对应的versionCode 除了以上今天遇到问题,还要最近遇到一些插件库不错。能够分享一些文件和读取选择一些文件。flutter 日常当中会遇到很多第三方库,这些第三方库也是不错。 #分享文件 share_plus: ^10.0.0 # 用于选择固件文件(必需) file_picker: ^8.0.0 # 网络请求 dio: ^5.0.0 # 本地存储 hive: ^2.2.3 hive_flutter: ^1.1.0 shared_preferences: ^2.5.3 #状态管理 get: ^4.6.6 #权限管理 permission_handler: ^12.0.1
以上就是今天遇到的。最后不得不还原了变种,但是还是可以通过命令行去打包导出对应的变种版本。这个也会十分有用。查询蓝牙设备厂商信息后,加上打印厂商这个也是不错,可以知道报错的信息,方便排查定位为什么连不上的情况。