Flutter:打包apk,詳細圖文介紹

困擾了一天,終于能正常打包apk安裝了,記錄下打包的流程。建議參考我這篇文章時,同時看下官網的構建說明。
官網構建并發布 Android 應用詳情

1、AS創建Flutter項目

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2、cmd執行命令
生成一個sunluyi.jks的文件,可以自行把sunluyi替換)
-alias sunluyi(別名),方便管理都用一個名字

keytool -genkey -v -keystore sunluyi.jks -keyalg RSA -keysize 2048 -validity 10000 -alias sunluyi

在這里插入圖片描述
然后你會得到一個命名sunluyi.jks的文件
在這里插入圖片描述

3、cmd執行命令,查看文件詳情

keytool -list -v -keystore sunluyi.jks

在這里插入圖片描述

4、把生成好的.jks文件放在Flutter項目android/app目錄下
并在android目錄下手動創建key.properties文件

在這里插入圖片描述
key.properties文件內容就是第二步自己設置的口令密碼和別名storeFile對應的文件路徑./sunluyi.jks(app目錄)

storePassword=sunluyi
keyPassword=sunluyi
keyAlias=sunluyi
storeFile=./sunluyi.jks

5、修改/android/app/build.gradle文件
下邊代碼中我標注了哪些是新增的內容,哪些是修改的內容

plugins {id "com.android.application"id "kotlin-android"// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.id "dev.flutter.flutter-gradle-plugin"
}// 新增內容 ↓
def localProperties = new Properties()
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {localPropertiesFile.withReader("UTF-8") { reader ->localProperties.load(reader)}
}def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {flutterVersionCode = "1"
}def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {flutterVersionName = "1.0"
}def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}// 新增內容↑android {namespace = "com.sunluyi.app.flutter_sunluyi"compileSdk = flutter.compileSdkVersionndkVersion = flutter.ndkVersioncompileOptions {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = JavaVersion.VERSION_1_8}defaultConfig {// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).applicationId = "com.sunluyi.app.flutter_sunluyi"// You can update the following values to match your application needs.// For more information, see: https://flutter.dev/to/review-gradle-config.minSdk = flutter.minSdkVersiontargetSdk = flutter.targetSdkVersion// 修改內容 ↓versionCode = flutterVersionCode.toInteger()versionName = flutterVersionName// 修改內容 ↑}// 新增內容 ↓signingConfigs {release {keyAlias = keystoreProperties['keyAlias']keyPassword = keystoreProperties['keyPassword']storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : nullstorePassword = keystoreProperties['storePassword']}}// 新增內容 ↑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.release// 修改內容 ↑}}
}flutter {source = "../.."
}

6、最后你可能還需要配置應用的權限
/android/app/src/main/AndroidManifest.xml目錄

<manifest xmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:label="[project]"...</application>...// 這里是新增的權限<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

最后根目錄執行flutter build apk打包成apk文件。

打包時有個提示警告:

Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
記錄下如何解決。

1cmd執行:flutter doctor -v

下圖是我解決過警告的,最開始是Platform android-35, build-tools 34.0.0
在這里插入圖片描述
百度了下解決方案:
設置/Android SDK中最開始我是勾選的35,換成下方的勾選之后,再次執行
flutter doctor -v得到:Platform android-35, build-tools 34.0.0
在這里插入圖片描述
重新執行flutter build apk后沒有警告,完成了打包流程。
在這里插入圖片描述

關于混淆

自己還不清楚哪些插件需要混淆,也不太理解混淆的意思,先不記錄。
這篇文章內容我是創建的新項目進行打包測試的。
后邊把自己用到的第三方插件在pubspec.yaml配置后,也是可以正常打包安裝的。

我的運行環境,希望這篇文章能對你有所幫助

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64544.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64544.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【服務器學習專欄 1.2 -- 帶外管理】

請閱讀 嵌入式學習必備專欄 文章目錄 Overview服務器帶外管理BMC 介紹BMC 特點BMC 工作原理 Overview 從技術的角度&#xff0c;網絡管理可分為帶外管理&#xff08;out-of-band&#xff09;和帶內管理&#xff08;in-band&#xff09;兩種管理模式。 帶內管理&#xff0c;是指…

南京市建鄴區南苑街道一行蒞臨園區考察交流

2024年8月28日&#xff0c;南京市建鄴區南苑街道辦事處副主任董兵、南苑街道發展服務辦公室一級主任科員王洪政、建鄴區國資集團科創公司經理杲暢&#xff0c;在樹莓集團華東區負責人田林和陳強經理的陪同下&#xff0c;蒞臨集團總部-國際數字影像產業園考察交流。 樹莓科技&am…

docker中使用nginx

宿主機和docker中nginx做映射 宿主機中nginx 映射目錄 /root/myDockerData/devnginx 在容器中相關位置分別是&#xff1a; 配置文件位置&#xff1a;/etc/nginx/ 日志位置&#xff1a;/var/log/nginx/ 項目位置&#xff1a;/usr/share/nginx/html 如下配置啟動命令行&#x…

【ES6復習筆記】對象方法擴展(17)

對象方法擴展 在 JavaScript 中&#xff0c;對象是屬性和方法的集合。除了內置的方法&#xff0c;我們還可以通過擴展對象的原型來添加新的方法。本教程將介紹如何使用 Object.is、Object.assign 和 Object.setPrototypeOf 方法來擴展對象。 1. Object.is 判斷兩個值是否完全…

基于JDK 17 編寫的Java常用工具類

文章目錄 DateUtilsEncryptUtilsFunIdCardCalibrationUtilResultResultCodeValidateNameUtilValidatePhoneUtil 廢話少說看源碼 DateUtils package com.huihang.core.utils;import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import j…

Casino Royale靶場wp

0x00 下載安裝 https://download.vulnhub.com/casinoroyale/CasinoRoyale.ova 導入vmware啟動 0x01 主機信息收集 0x02目錄掃描 index.php 獲取到一個域名 修改本地hosts 添加一行 路徑&#xff1a;C:\Windows\System32\drivers\etc 192.168.2.20 casino-royale.local 點擊…

智能家居體驗大變革 博聯 AI 方案讓智能不再繁瑣

1. 全球AI技術發展背景及智能家居市場趨勢 人工智能&#xff08;AI&#xff09;技術的飛速發展正在推動全球各行業的數字化轉型。國際電信聯盟與德勤聯合發布《人工智能向善影響》報告指出&#xff0c;全球94%的商界領袖認為&#xff0c;人工智能技術對于其企業在未來5年內的發…

鴻蒙開發(27)案例今日任務

案例為純前端實現&#xff0c;總結案例。 主頁面代碼 import { TaskStatisties } from ../view/TaskStatisties import { TaskItem } from ../view/TaskItem import CreateTaskModel, {TaskModel} from ../viewmodel/TaskModel import { router } from kit.ArkUI// xxx.ets En…

WPF編程excel表格操作

WPF編程excel表格操作 摘要NPOI安裝封裝代碼測試代碼 摘要 Excel操作幾種方式 使用開源庫NPOI(常用&#xff0c;操作豐富)使用Microsoft.Office.Interop.Excel COM組件(兼容性問題)使用OpenXml(效率高)使用OleDb(過時) NPOI安裝 封裝代碼 using System; using System.IO; u…

tcp_rcv_synsent_state_process函數

tcp_rcv_synsent_state_process 是 Linux Kernel 中用于處理 TCP 連接在 SYN-SENT 狀態下接收到報文的函數。這個函數在 TCP 三次握手階段起到了至關重要的作用,處理了在客戶端發送 SYN 請求之后收到服務器響應報文的各種情況。 以下是這個函數的解讀和剖析: int tcp_rcv_sy…

音視頻采集推流時間戳記錄方案

音視頻同步更多文章 深入理解音視頻pts&#xff0c;dts&#xff0c;time_base以及時間數學公式_視頻pts計算-CSDN博客 ffplay音視頻同步分析_ffplay 音視頻同步-CSDN博客 音視頻采集打時間戳設計 實時音視頻數據的采集和處理場景。具體來說: 采集階段: 在音視頻數據采集過…

Spark Runtime Filter

Runtime Filter 參考鏈接&#xff1a; https://docs.google.com/document/d/16IEuyLeQlubQkH8YuVuXWKo2-grVIoDJqQpHZrE7q04/edit?tabt.0https://www.modb.pro/db/557718https://issues.apache.org/jira/browse/SPARK-32268https://github.com/apache/spark/pull/35789https…

從0入門自主空中機器人-1【課程介紹】

關于本課程&#xff1a; 本次課程是一套面向對自主空中機器人感興趣的學生、愛好者、相關從業人員的免費課程&#xff0c;包含了從硬件組裝、機載電腦環境設置、代碼部署、實機實驗等全套詳細流程&#xff0c;帶你從0開始&#xff0c;組裝屬于自己的自主無人機&#xff0c;并讓…

專業140+總分410+南京大學851信號與系統考研經驗南大電子信息通信集成電路,真題,大綱。參考書。

本人本科中等211&#xff0c;離保送本校差一點&#xff0c;考研前糾結本校還是追求更高目標&#xff0c;和家人聊了自己的想法&#xff0c;感謝父母對我的支持&#xff0c;堅定報考南大的目標&#xff0c;最終專業851信號與系統140&#xff0c;總分410順利被南京大學錄取&#…

【C++】初識C++之C語言加入光榮的進化(上)

寫在前面 本篇筆記作為C的開篇筆記&#xff0c;主要是講解C關鍵字(C98)連帶一點點(C11)的知識。掌握的C新語法新特性&#xff0c;當然C是兼容C的&#xff0c;我們學習C的那套在C中也是受用。 ps:點我跳轉下集 文章目錄 寫在前面一、命名空間域1.1、命名空間域的定義與使用1.2…

CGAL windows 安裝教程

1.下載源代碼 CGAL官網下載https://github.com/CGAL/cgal/releases 2.下載boost庫 BOOST官網下載https://www.boost.org/ 3.下載 GMP and MPFR 4.配置VS2022 頭文件&#xff1a; 庫路徑 做完以上步驟&#xff0c;可以使用CGAL了&#xff01;

從0入門自主空中機器人-2-2【無人機硬件選型-PX4篇】

1. 常用資料以及官方網站 無人機飛控PX4用戶使用手冊&#xff08;無人機基本設置、地面站使用教程、軟硬件搭建等&#xff09;&#xff1a;https://docs.px4.io/main/en/ PX4固件開源地址&#xff1a;https://github.com/PX4/PX4-Autopilot 飛控硬件、數傳模塊、GPS、分電板等…

每天40分玩轉Django:Django緩存

一、Django緩存概述 在高并發的Web應用中,緩存是提高性能的重要手段。通過緩存頻繁訪問的數據,可以顯著減少數據庫查詢和渲染模板的時間,從而加快響應速度,提升用戶體驗。Django提供了多層級的緩存方案,可以靈活地滿足不同場景下的緩存需求。 Django支持的緩存方式包括: 視圖…

GraphRAG 框架哪家強?選擇最適合你智能問答系統的框架

GraphRAG 框架哪家強&#xff1f;選擇最適合你智能問答系統的框架 點擊進入&#xff1a;GraphRAG系列文章-Nano-GraphRAG&#xff1a;打造輕量級醫療診斷助手 點擊進入&#xff1a;GraphRAG系列文章-突破傳統知識管理瓶頸&#xff1a;LlamaIndex GraphRAG 讓企業知識問答更智能…

Mac電腦python多版本環境安裝與切換

我當前是python3.9.6環境&#xff0c;需要使用3.9.8環境&#xff0c;通過brew安裝3.9.8版本&#xff0c;然后通過pyenv切換環境 步驟 1: 安裝 pyenv brew install pyenv brew install pyenv-virtualenv 步驟 2: 安裝 Python 3.9.8&#xff08;使用 pyenv 安裝指定版本的 Pyth…