@[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树可能不够详细。在这种情况下,单击“渲染树”选项卡以在树中的同一位置查看渲染树。调试布局问题时,关键是查看大小和约束字段。约束沿树向下传递,尺寸向上传递。
交换机树