Android gradle kts 8.0以上版本配置簽名和修改APK輸出名字

目錄

  • 概述
  • 修改簽名配置
    • 新建簽名文件目錄
    • 配置簽名信息
    • 使用簽名信息
    • 打包
  • 修改APK名稱

概述

之前寫過一篇文章是通過Kotlin的Dsl結合gradle編寫的插件來管理項目依賴,我是從一個開源項目叫DanDanPlayAndroid項目上學到的,那時還沒有使用toml文件來管理項目依賴的技術。不過雖然現在有了toml文件管理依賴的技術,但我覺得使用插件的方式也很好,讀者自己選擇吧。這里提這個插件的原因就是在插件中涉及到修改輸出的APK名字和簽名配置的問題,在最新的gradle kts 版本中,這些配置有點小變化,所以在此處記錄下。

修改簽名配置

Android的應用都需要簽名,才能正常安裝使用,為了方便,我們可以將簽名的信息配置到gradle中,打包的時候直接運行對應的gradle任務就可了,具體步驟如下所示:

新建簽名文件目錄

為APK簽名一般都需要使用一個簽名文件,可以是keystore文件,也可以是jks文件。我們在項目中新建一個目錄,將簽名文件放到目錄里面

注意:這里的簽名文件不要放發布apk的正式簽名文件,這里的簽名文件可以放一個debug的,或者是我們的項目只是為了自己做demo驗證問題使用的,如果是正式的簽名文件,需要放到私服上,然后加密保護好,防止被竊取。這里放到根目錄只是為了演示如何配置簽名信息。

在這里插入圖片描述

配置簽名信息

簽名信息在我們生成keystore或者是jks文件時會設置的。將其配置到下面的signingConfigs中,以packJKS來標識

 signingConfigs {create("packJKS"){keyAlias = "demo" // 別名keyPassword = "123456" // 密碼storeFile = file("${rootDir.absolutePath}/keystore/demo.jks") // 存儲keystore或者是jks文件的路徑storePassword = "123456" // 存儲密碼}}

使用簽名信息

配置好簽名信息后,接下來就是使用簽名信息了,在buildTypes中找到對應的配置并設置給debug和release,如下所示

 buildTypes {// 通過前面配置的簽名信息對應的標識符:packJKS拿到簽名的配置信息// 保存在mySignConfig中,分別在debug和release中配置上就行了val mySignConfig = signingConfigs.getByName("packJKS")release {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro")// 配置release 的簽名信息signingConfig = mySignConfig}debug {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro")// 配置debug的簽名信息signingConfig = mySignConfig}}

打包

配置好簽名信息后,我們可以同步下gradle,如果沒有報錯的話我們就可以打包了。在gradle中找到下面的兩個任務,執行對應的任務就可以打對應的包了。
在這里插入圖片描述
執行完任務后,就能得到想要的APK 了,如下所示:

在這里插入圖片描述

修改APK名稱

經過上面的配置我們可以打出正常可以安裝的apk了,但是如過要區分還是很難的,因為名字都是默認的app-release.apk啥的 ,標識效果不好,并且如果需要給不同的客戶提供,還需要手動改,非常麻煩,在之前的gradle版本中是通過修改BaseVariantOutput來達到修改APK 輸出文件名的方法,具體的大家可以百度,但是最新的8.0以上不支持這種修改方法了,所以我們就提供了一種使用gradle的任務修改的辦法,在android{…}閉包中加入下面的代碼,如下所示:

  android.buildTypes.forEach {buildType ->// 拿到對應的任務類型名稱,比如是release或debug,后面需要用它去拼接成對應的任務名稱val typeName = buildType.name// 獲取版本號versionName寫到apk的民稱中val versionName = android.defaultConfig.versionName// 往apk的名稱中加入時間val date = SimpleDateFormat("yyyy-MM-dd-HH-mm", Locale.US).format(Date())// 按名稱遍歷productFlavors然后創建兩個任務分別打release包和debug包android.productFlavors.map { it.name }.ifEmpty { listOf("") }.forEach {flavorName->// 將獲取到的名稱首字母變為大寫,比如:release變為Releaseval combineName = "${flavorName.capitalize()}${typeName.capitalize()}"// 為我們的任務命名:比如叫packReleaseval taskName = "pack$combineName"// 找到打包的任務,比如release就是assembleRelease任務val originName = "assemble$combineName"// 創建一個任務專門做我們的自定義打包任務project.task(taskName){// 為任務分組group = "Pack apk"// 執行我們的任務之前會先執行的任務,比如,打release包時會先執行assembleRelease任務dependsOn(originName)// 執行完任務后,我們將得到的APK 重命名并輸出到根目錄下的apks文件夾下doLast{copy{from(File(project.buildDir,"outputs/apk/$typeName"))into(File(rootDir,"apks"))rename{"AppPackDemo-V-$versionName-$date.apk"}include("*.apk")}}}}}

運行完沒有問題會在gradle任務欄中看到如下的任務:

在這里插入圖片描述點擊運行對應的打包任務,就能得到對應的apk了,比如我們執行packRelease,得到的結果如下所示:

在這里插入圖片描述在根目錄下的apks文加夾中,就能生成我們想要的命好名字的APK了

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

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

相關文章

【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南

文章目錄 1 引言2 準備工作2.1 安裝 Docker2.1.1 在 Linux 上安裝 Docker2.1.2 在 macOS 上安裝 Docker2.1.3 在 Windows 上安裝 Docker 2.2 驗證 Docker 安裝 3 拉取 confluentinc/cp-kafka Docker 鏡像3.1 拉取鏡像3.2 驗證鏡像 4 運行 Kafka 容器4.1 啟動 ZooKeeper4.2 啟動…

【原創】springboot+mysql農業園區管理系統設計與實現

個人主頁:程序猿小小楊 個人簡介:從事開發多年,Java、Php、Python、前端開發均有涉獵 博客內容:Java項目實戰、項目演示、技術分享 文末有作者名片,希望和大家一起共同進步,你只管努力,剩下的交…

公差基礎(互換性和測量基礎)

互換性概念: 圖紙設計是理論的,理性的,沒有誤差的,但是實際上加工上市有誤差的。 所以說,實際加工出來的零件是否符合要求,我們需要對圖紙上的尺寸精度,幾何精度,表面粗糙度進行說明…

STM32關于uc/OS-III的多任務程序

目錄 一、UCOS-III源碼獲取 二、HAL庫工程的建立 1.RCC配置 2.SYS配置 3.USART1配置 4.GPIO配置 5.時鐘配置 6.項目配置 三、KEil文件添加 1.文件復制 2.KEil工程添加 3.添加文件路徑 四、代碼修改 1. 2.修改文件app_cfg.h中代碼 3.修改include.h的代碼 4.修改…

【傳知代碼】DETR[端到端目標檢測](論文復現)

前言:想象一下,當自動駕駛汽車行駛在繁忙的街道上,DETR能夠實時識別出道路上的行人、車輛、交通標志等目標,并準確預測出它們的位置和軌跡。這對于提高自動駕駛的安全性、減少交通事故具有重要意義。同樣,在安防監控、…

【二進制部署k8s-1.29.4】十、coredns的安裝部署

文章目錄 簡介 一.下載并修改coredns配置文件二.安裝coredns三.驗證coredns的安裝 簡介 本章節主要講解安裝coredns-v1.11.1的安裝,并進行驗證。 第一章.安裝前軟件準備及系統初始化階段 第二章.證書及配置文件的準備 一.下載并修改coredns配置文件 下載地址&#x…

未來已來:Angular、React、Vue.js——前端框架的三大巨頭

目錄 前言 一、Angular框架 特點和優勢 核心技術和應用場景 二、React框架 特點和優勢 核心技術和應用場景 三、Vue.js框架 特點和優勢 核心技術和應用場景 總結: 前言 在Web前端開發領域,隨著技術的不斷發展,出現了眾多優秀的框…

APP開發技術的變遷史

隨著移動互聯網的迅猛發展,APP(應用程序)已經成為人們日常生活中不可或缺的一部分。從最初的簡單工具到如今的智能平臺,APP開發技術在這十年間經歷了翻天覆地的變化。本文將從多個維度探討近十年來APP開發技術的變遷史&#xff0c…

【Python學習路線(課程大綱+Python視頻教程+下載地址)_python 教程下載。】

目前Python已經成為最受歡迎的程序設計語言之一。Python的設計哲學是“優雅”、“明確”、“簡單”。 學習Python具有多重顯著的好處。首先,Python的語法簡潔易讀,降低了編程的入門門檻,使初學者能夠更快地掌握編程的基本概念。其次&#xff…

OpenCV 4.10 發布

OpenCV 4.10 JPEG 解碼速度提升 77%,實驗性支持 Wayland、Win ARM64 根據 “OpenCV 中國團隊” 介紹,從 4.10 開始 OpenCV 對 JPEG 圖像的讀取和解碼有了 77% 的速度提升,超過了 scikit-image、imageio、pillow。 4.10 版本的一些亮點&…

限流定義、算法、實施方案

限流定義 1、 時間 , 基于某段時間或某個時間點,即:時間窗口 2、資源: 對可用資源進行限制: QPS/連接數/傳輸速率/黑白名單等 分布式環境下,主流限流方案: 網關層限流:流量入口Ngi…

web 前端開發培訓:深入探索與實戰應用

web 前端開發培訓:深入探索與實戰應用 在數字化時代,Web前端開發已成為互聯網行業的熱門職業之一。然而,要想成為一名優秀的Web前端開發者,不僅需要掌握扎實的技術基礎,還需要具備豐富的實戰經驗和創新思維。本文將從…

點云庫tops(point cloud library)

pcl GitHub - PointCloudLibrary/pcl: Point Cloud Library (PCL) GitHub - HuangCongQing/pcl-learning: 🔥PCL(Point Cloud Library)點云庫學習記錄 draco GitHub - google/draco: Draco is a library for compressing and decompress…

固定數量點云采樣算法

pcl::random_sample 使用案例 算法原理 /** \brief b RandomSample applies a random sampling with uniform probability.* Based off Algorithm A from the paper "Faster Methods for Random Sampling"* by Jeffrey Scott Vitter. The algorithm runs in O(N) an…

深入理解Python:面向對象編程與實踐

深入理解Python:面向對象編程與實踐 Python是一種功能強大且靈活的編程語言,廣泛應用于Web開發、數據分析、人工智能等領域。本文將深入探討Python中的面向對象編程(OOP)概念,并通過實際代碼示例展示其應用。 目錄 面向對象編程概述類與對象繼承與多態封裝與私有化類與對…

Unity2D游戲制作入門 | 12(之人物受傷和死亡的邏輯動畫)

上期鏈接:Unity2D游戲制作入門 | 11(之人物屬性及傷害計算)-CSDN博客 上期我們聊到了人物的自身屬性和受傷時的計算,我們先給人物和野豬掛上屬性和攻擊屬性的代碼,然后通過觸發器觸發受傷的事件。物體(人物也好敵人也行&#xff…

思考、學習、創造、越來越有趣

程序員應該有什么職業素養? 對于程序員而言,把復雜的事情變簡單是最重要的能力! 方向一:專業精神 程序的本質是算法,無論復雜或不復雜;程序員就是幫助使用者把重復的工作交給代碼。所以程序員最本質的能力…

2024 IDEA最新永久使用碼教程(2099版)

本篇文章我就來分享一下2024年當前最新版 IntelliJ IDEA 最新注冊碼,教程如下,可免費永久,親測有效,適合Windows和Mac。 本教程適用于 J B 全系列產品,包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、…

Vue基礎知識:插槽——默認插槽,插槽的后備內容,具名插槽,作用域插槽的認識與使用。(slot,#default,row的認識)

1.插槽的基本認識: 作用:讓組件內部的一些結構支持自定義 插槽的分類: 1.默認插槽(組件內只能定制一處結構) 2.具名插槽(組件內可以定制多次結構) 簡單而言:就是你希望封裝一個…

09-數組的含義以及零長數組變長數組與多維數組

09-數組的含義以及零長數組變長數組與多維數組 文章目錄 09-數組的含義以及零長數組變長數組與多維數組一、數組名的含義1.1 表示整個數組的首地址1.2 表示整個數組首元素的首地址 二、數組下標字符串常量 三、零長數組3.1 示例 四、變長數組4.1 示例 五、多維數組5.1 定義與初…