动机:作者现在需要打包一个Flutter项目的apk,在这个Flutter项目中使用到了webview服务。该项目名称是:flutter_issue_120853。本文使用的是Android Studio开发工具。 本文共包含两部分内容:1. flutter_issue_120853的打包过程;2. flutter_issue_120853在安卓模拟器上显示空白问题的解决方案。
1. flutter_issue_120853的打包过程(Android应用)
1.1 创建签名
在创建签名之前,你的电脑中需要有JDK环境(具体安装步骤可以自行百度)。在你项目的根目录下输入以下命令:
keytool -genkey -alias android.jks -keyalg RSA -storetype PKCS12 -validity 36500 -keystore android.jks
命令解释:创建一个证书文件,名为 android.jks,别名也为 android.jks,加密算法采用 RSA,有效期为 100年,行业标准格式 PKCS12。note:这里可以自行设置路径,作者直接创建到flutter_issue_120853项目的根目录下。
注:
-genkey 生成文件
-alias 别名
-keyalg 加密算法
-validity 有效期
-keystore 文件名
-storetype PKCS12 行业标准格式 PKCS12
按照指令依次填写要求的内容,最后填写完成输入 y 确认信息
1.2 查看证书的具体信息
命令如下:
keytool -list -v -keystore "android.jks"
1.3 在项目中配置签名信息
在项目的android的文件夹下创建key.properties文件。
=========== 粘贴如下代码 ==================
storePassword=<password from previous step> //输入上一步创建KEY时输入的 密钥库 密码
keyPassword=<password from previous step> //输入上一步创建KEY时输入的 密钥 密码
keyAlias=android.jks // 别名
storeFile= //key.jks的存放路径
=========== 示例 ==================
storePassword=123456
keyPassword=123456
keyAlias=android.jks
storeFile=C:/Users/tingt/Desktop/android.jks (创建签名的路径,1.1中的介绍。)
进入项目目录的*/android/app/build.gradle文件,在build.gradle*文件顶部加入如下代码:
// 寻找签名配置文件
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
替换build.gradle文件中的代码如下:
=================== 替换前代码 =================
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
=================== 替换后代码 =================
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
1.4 打包安装应用
flutter build apk
1.5 安装app
通常情况下,打包好的apk存放在项目的根目录下的*\build\app\outputs\apk\release\app-release.apk*。然后执行下面命令进行安装即可。
adb install C:\Users\tingt\Desktop\flutter_app\build\app\outputs\apk\release\app-release.apk
2. flutter_issue_120853在安卓模拟器上显示空白问题的解决方案
第一部分已经介绍了Flutter项目如何打包成apk。本章节主要介绍在安卓模拟器上打开已经安装好的app后出现空白页面问题的解决方法。当作者在安卓模拟器上打开刚刚安装好的app时,遇到了下面这种情况:
等了好久也没有出现指定的页面。
原因分析:造成上面这种情况的原因是因为安卓开发中flutter应用没有网络权限。解决方案如下:
1.1 添加网络权限
在android\app\src\profile\AndroidManifest.xml文件中,在**中添加如下代码:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
AndroidManifest.xml配置文件如下所示:
重新打包apk,然后在模拟器中执行这个app,可以发现app可以正常显示网页了。
大功告成!!!
欢迎讨论…