IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter项目打包生成APK -> 正文阅读

[移动开发]Flutter项目打包生成APK

flutter实现安卓打包:(以安卓Studio工具为例)

(1)创建key.jks文件

在安卓studio中调整至项目路径,例如:
我的项目所在地

E:\Flutter\fluttershuqi>

然后输入命令:

keytool -genkey -v -keystore E:\Flutter\fluttershuqi\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

最后的alias key , key指的是签名文件的别名。
其中E:\Flutter\fluttershuqi是我希望.jks文件创建的位置,

E:\Flutter\textdemo>keytool -genkey -v -keystore E:\Flutter\fluttershuqi\key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  1
您的组织单位名称是什么?
  [Unknown]:  2
您的组织名称是什么?
  [Unknown]:  3
您所在的城市或区域名称是什么?
  [Unknown]:  4
您所在的省//自治区名称是什么?
  [Unknown]:  5
该单位的双字母国家/地区代码是什么?
  [Unknown]:  6
CN=1, OU=2, O=3, L=4, ST=5, C=6是否正确?
  []:  Y

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 10,000):
         CN=1, OU=2, O=3, L=4, ST=5, C=6
输入 <key> 的密钥口令
        (如果和密钥库口令相同, 按回车):
[正在存储E:\Flutter\fluttershuqi\key.jks]

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore E:\Flutter\fluttershuqi\key.jks -destkeystore E:\Flutter\fluttershuqi\key.jks -deststoretype pkcs1
2" 迁移到行业标准格式 PKCS12。

此时你的key.jks文件就创建成功了,
在这里插入图片描述
如果此过程报错,请参考如何打包发布flutter项目

(2) 将创建的jks文件粘贴至Flutter项目的指定位置

  • (1)方案一:直接放在android/app文件夹下,这样的话第3步中的storeFile写法为:
    storeFile=key.jks或者storeFile=E:/Flutter/fluttershuqi/android/app/key.jks

  • (2)也可以在app目录下再创建一个文件夹,例如文件夹key
    storeFile=key/key.jks或者storeFile=E:/Flutter/fluttershuqi/android/app/key/key.jks

方法(一):

(3) 在项目目录下的android文件夹下,创建一个名为key.properties的文件,并打开粘贴下面的代码:

错误写法:

storePassword=123456   //输入上一步创建KEY时输入的 密钥库 密码
keyPassword=123456    //输入上一步创建KEY时输入的 密钥 密码
keyAlias=key
storeFile=E:/Flutter/fluttershuqi/android/app/key.jks    //key.jks的存放路径  此处要是用/而不是\

此处是我自己遇到的问题,中间一直找不到问题,最后才发现这个文件注释不是//而是#,我开始错误使用了//导致一直报如下错,这是将后面的空格和//的内容都识别到key路径中了,所以才会找不到。

* What went wrong:
Execution failed for task ':app:validateSigningRelease'.
> Keystore file 'E:\Flutter\fluttershuqi\android\app\key.jks   \key.jks????��??��??' not found for signing config 'release
'.

正确写法:

storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=E:/Flutter/fluttershuqi/android/app/key.jks

注意:后面连空格都不要有,不然也会报错

(4) 配置/android/app/build.gradle文件

  • 进入项目目录的/android/app/build.gradle文件,在
android {}

上面添加:

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
  • 修改
buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
}

为:

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

方法(二):

(3)配置build.gradle文件

  • 修改
buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
}

为:

signingConfigs {

        release {
                keyAlias 'key'
                keyPassword '123456'
                storeFile file('key.jks')//此种写法默认key文件在android-app文件夹下
                storePassword '123456'
//            keyAlias keystoreProperties['keyAlias']
//            keyPassword keystoreProperties['keyPassword']
//            storeFile file(keystoreProperties['storeFile'])
//            storePassword keystoreProperties['storePassword']
        }
        debug {
            keyAlias 'key'
            keyPassword '123456'
            storeFile file('key.jks')
            storePassword '123456'
//            keyAlias keystoreProperties['keyAlias']
//            keyPassword keystoreProperties['keyPassword']
//            storeFile file(keystoreProperties['storeFile'])
//            storePassword keystoreProperties['storePassword']
        }
    }
  buildTypes {
        release {
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.release
        }
    }

(4)打包 生成apk

输入命令:flutter build apk
即生成安装包,安装包位置:E:\Flutter\myflutter\build\host\outputs\apk\release,即在项目build文件夹下。

(5)关于备注内容

  • 修改应用名称和logo:
    在这里插入图片描述
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:43:02  更:2022-02-22 20:45:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 16:07:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码