Flutter 打包 安卓 APK

Flutter中文网上的教程地址[ https://flutterchina.club/android-release/ ]

首先电脑里安装Java JDK,因为keytool命令是Java JDK中的一部分。

app签名

在终端输入:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

会出现一下信息,进行填写:(密钥库口令 下面会用到)

输入密钥库口令:  abc123999
再次输入新口令: abc123999
您的名字与姓氏是什么?
  [Unknown]:  wang
您的组织单位名称是什么?
  [Unknown]:  没单位
您的组织名称是什么?
  [Unknown]:  公司
您所在的城市或区域名称是什么?
  [Unknown]:  香港
您所在的省//自治区名称是什么?
  [Unknown]:  香港
该单位的双字母国家/地区代码是什么?
  [Unknown]:  ZG
CN=wang, OU=没单位, O=公司, L=香港, ST=香港, C=ZG是否正确?
  []:  y

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRS) (有效期为 10,000 天):
         CN=wang, OU=没单位, O=公司, L=深圳, ST=广东省, C=ZG
输入 <key> 的密钥口令
        (如果和密钥库口令相同, 按回车):  
[正在存储/Users/ntdev1/key.jks]

这时会产生一个key.jks文件,按照上面的提示找到这个文件,并且把它复制到 <app dir>/android 下面。

创建key.properties

创建一个名为 <app dir>/android/key.properties 的文件,其中包含对密钥库的引用:

storePassword=abc123999
keyPassword=abc123999
#这个值取决于你在终端输入的第一个命令,结尾的那个单词
keyAlias=key
storeFile=./../key.jks

在gradle中配置签名

通过编辑 <app dir>/android/app/build.gradle 文件为您的应用配置签名。

1.替换

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
 }
}

开启混淆

这个我没加。

添加允许请求网络

要分别修改两个文件:

  1. 编辑 <app dir>/android/app/src/profile/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yn.ktwo">
    
    <!-- 开始 -->
    <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>
  1. 编辑 <app dir>/android/app/src/main/AndroidManifest.xml
	...
	</application>

	<!-- 开始(不要放在 application 里) -->
    <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>
发布了18 篇原创文章 · 获赞 7 · 访问量 4878

猜你喜欢

转载自blog.csdn.net/weixin_43766269/article/details/103602308