Flutter框架在项目中使用App Manifest检查用户界面以及配置混乱之后对于构建配置的方案【Flutter】

简介: Flutter框架在项目中使用App Manifest检查用户界面以及配置混乱之后对于构建配置的方案【Flutter】

@[toc]

配置混乱

默认情况下,flutter不支持Android混淆。
如果使用第三方Java或Android库,可能需要减小apk文件的大小或防止代码被反向破解。

创建/android/app/proguard-rules.pro文件并添加以下规则:

buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
}
-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.**  { *; }

上述配置只会混淆Flutter引擎库。任何其他库(如Firebase)都需要添加相应的规则。
启用混淆/压缩
打开/android/app/build.gradle文件并找到buildTypes块。
在发行版配置中,将minimiEnabled和useProguard设置为true,然后将混淆文件指向上一步中创建的文件。

android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.release

            minifyEnabled true
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
}

构建发布APK
本节介绍如何构建APK版本。如果完成上一节中的签名步骤,APK将被签名。
使用命令行:
Cd(是的项目目录)
运行颤振构建apk(默认情况下,颤振构建包括--release选项)
打包发行版APK位于/build/app/outputs/APK/app-release.APK中。
在设备上安装分发APK
按照以下步骤在连接的Android设备上安装上一步骤中内置的APK
使用命令行:
使用USB将Android设备连接到PC
cd<app dir>。
运行颤振安装

构建配置

检查默认的Gradle build file“build.Gradle”,该文件位于/android/app/中,以验证这些值是否正确,尤其是:
DefaultConfig:applicationId:指定始终唯一的(应用程序Id)appid版本代码和版本名称:指定应用程序版本号和版本号字符串。有关详细信息,请参阅版本文档minSdkVersion&targetSdkVersion:以指定应用程序设计运行的最低API级别和API级别。有关更多信息,请参阅发布文档中的API级别部分。

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>

当创建一个新的Flutter应用程序时,它有一个默认的启动程序图标。要自定义此图标,请执行以下操作:
查看Android启动图标设计指南,然后创建图标。
在/android/app/src/main/res/目录中,将图标文件放在一个名为配置限定符的文件夹中。默认的mipmap文件夹演示了正确的命名约定。
在AndroidManifest.xml中,更新应用程序标签的android:icon属性以引用上一步骤中的图标(例如,<application android:icon=“@mipmap/ic_launcher”…)。

android {

要验证图标是否已被替换,请运行应用程序并检查应用程序图标

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {

App Manifest

检查默认应用程序清单文件(AndroidManifest.xml文件位于/android/app/src/main/中),并验证这些值是否正确,尤其是:
应用程序:编辑应用程序标签,即应用程序的名称。
使用权限:如果的应用程序代码不需要Internet访问,请删除android.permission.Internet权限。标准模板包含此标志,以启用Flutter工具和正在运行的应用程序之间的通信。

signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

检查用户界面

Flutter框架使用小部件作为其核心构建块。从控件(文本、按钮、切换等)到布局(居中、填充、行、列等)都是。Inspector是可视化和浏览Flutter等小部件树的强大工具。在以下情况下可能会有所帮助:

IntelliJ Flutter Inspector Window

现有布局不清楚
诊断布局问题
IntelliJ Flutter检查器窗口
单击Flutter Inspector工具栏上的“选择小部件”,然后单击设备(真机或虚拟机)以选择小部件。选定的小部件将在设备和小部件树中突出显示。
选择演示
然后,可以在IDE中浏览交互式小部件树,以查看附近的小部件及其字段值。如果要调试布局问题,Widgets树可能不够详细。在这种情况下,单击“渲染树”选项卡以在树中的同一位置查看渲染树。调试布局问题时,关键是查看大小和约束字段。约束沿树向下传递,尺寸向上传递。
交换机树

相关文章
|
2月前
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
|
2月前
|
移动开发 前端开发 JavaScript
鸿蒙NEXT时代你所不知道的全平台跨端框架:CMP、Kuikly、Lynx、uni-app x等
本篇基于当前各大活跃的跨端框架的现状,对比当前它们的情况和未来的可能,帮助你在选择框架时更好理解它们的特点和差异。
209 0
|
5月前
|
人工智能 JSON 小程序
【一步步开发AI运动APP】七、自定义姿态动作识别检测——之规则配置检测
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用自定义姿态识别检测技术开发高性能的AI运动应用。核心内容包括:1) 自定义姿态识别检测,满足人像入镜、动作开始/停止等需求;2) Pose-Calc引擎详解,支持角度匹配、逻辑运算等多种人体分析规则;3) 姿态检测规则编写与执行方法;4) 完整示例展示左右手平举姿态检测。通过这些技术,开发者可轻松实现定制化运动分析功能。
|
2月前
|
小程序 安全 JavaScript
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
104 1
构建即时通讯APP内的小程序生态体系:从架构设计到技术实现-优雅草卓伊凡
|
2月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
|
3月前
《仿盒马》app开发技术分享-- 首页活动配置(5)
上一篇文章中我们实现了项目端云一体化首页部分模块动态配置,实现了对模块模块的后端控制显示和隐藏,这能让我们的app更加的灵活,也能应对更多的情况。现在我们来对配置模块进行完善,除了已有的模块以外,我们还有一些banner ,活动入口等模块,这些模块的数据并不多,所以我们也归纳到配置中去实现。并且我们在配置表中添加了一些不同的id,我们只需要根据相对应的id 去查询对应的表就可以了
74 0
|
6月前
|
Swift iOS开发 开发者
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
470 13
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
|
5月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
151 23
|
4月前
|
人工智能 自然语言处理 前端开发
从0到上线,CodeBuddy 如何帮我快速构建旅游 App?
本文详细介绍了AI代码助手CodeBuddy的功能与使用方法,并通过实战演示其在前端开发中的应用。文章首先讲解了CodeBuddy的安装步骤,以VS Code为例,引导用户快速上手。随后,通过构建一个旅游APP页面的实例,展示了CodeBuddy在生成代码、调整样式、修复问题等方面的能力。实战中涉及Craft模式交互、提示词优化、元素布局调整等内容,验证了插件的高效性与灵活性。尽管过程中遇到一些小问题,但整体效果令人满意。最后,文章鼓励开发者进一步探索CodeBuddy的潜力,为开发工作带来更多便利。
292 0