打包build
1、创建app签名
如果您有现有keystore,请跳至下一步。如果没有,请通过在运行以下命令来创建一个:keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
🌟注意:` keytool是java jdk的一部分,也没有设置全局变量,所以路径是不对,它是作为Android Studio一部分安装的,找到对应路径,
设置私人密码123456
/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/jre/bin/keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
✳️注意:还是报路径不存在
文件名中间有空格的,需要加个\ 转义一下
根据提示填写密钥信息,会保存在~/key.jks这个文件下
2、引用应用程序中的keystore
创建一个名为<app dir>/android/key.properties
的文件,其中包含对密钥库的引用
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>
Eg:
storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=/Users/fuguoyu/key.jks
3、在gradle中配置签名
1)<app dir>/android/app/build.gradle文件,在
android{`这一行前面,加入如下代码:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
2)替换
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.debug
}
}
为
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
现在,应用的release版本将自动进行签名。
<----------👆打包配置[android]就完成了👆-------->
打包生成apk
直接在终端输入
flutter build apk
安装真的没有问题么?咋没有网络请求?
今天flutter build apk打包了一个release.apk包,在真机上安装后网络数据都不显示,但是在模拟器上没问题,一切都正常!那这会是什么问题呢?问题所在,安卓开发中flutter应用没有网络权限
在这个文件里,android\app\src\profile\AndroidManifest.xml,manifest 里添加这段代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
....
<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" />
</manifest>
重新打包,虚拟机安装。还是没有数据。。。然后继续找,结果发现~~~
在路径android/src/main/AndroidManifest.xml,这里也有一个AndroidManifest.xml文件!跟之前的只不过是文件夹位置不同而已,同样在manifest标签下加入相同配置就行了,不要放到application里.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
....
<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" />
</manifest>
<----------👆打包apk就完成了👆-------->
赶快拿起手机体验吧!!!