Android 13中 配置簽名文件與內置相應的Apk

目錄

1.問題場景

2.實現思路

3.將測試代碼做成APK并配置簽名

4.將apk內置到系統當中的方法


1.問題場景

在展訊平臺中Android13的源碼已知的情況下,客戶寫了一個測試類用于調用系統中的一些接口來檢驗一些功能。為了方便調試排查問題我首先的思路是將客戶寫的測試代碼做成apk,內置進入到Android13的系統當中。

2.實現思路

基于上述的問題背景,我們需要分步實現

1.將測試代碼做成apk

2.將apk內置進入到系統中通過log進行調試

3.將測試代碼做成APK并配置簽名

主要參考文件如下顯示,大家可以直接參考或者看我下述的表述

Android11.0 生成系統簽名.jks文件并對Apk進行簽名_android jks-CSDN博客

1.對應用進行系統簽名需要關注的文件是
platform.pk8
platform.x509.pem
signapk,jar同時在AndroidManifest.xml當中添加android:sharedUserId="android.uid.system"例如下述代碼片段
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:sharedUserId="android.uid.system"android:sharedUserMaxSdkVersion="32">當targetSdkVersion>=30 也就是7.0以上的設備會報錯

針對上述報錯的問題我們需要生成.jks文件

1.首先先進入Android13源碼中進行操作cd build/target/product/security/// 1.生成 platform.pemopenssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem// 2.生成 platform.p12 // 別名:systemkey// 密碼:123456openssl pkcs12 -export -in  platform.x509.pem -out platform.p12 -inkey  platform.pem -password pass:123456 -name systemkey// 3.生成 platform.jks文件keytool -importkeystore -deststorepass 123456 -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 1234562.其中第三條命令會提示你輸入源密鑰的口令:直接輸入123456正在將密鑰庫 ./platform.p12 導入到 ./platform.jks...輸入源密鑰庫口令:  已成功導入別名 systemkey 的條目。已完成導入命令: 1 個條目成功導入, 0 個條目失敗或取消Warning:<systemkey> uses the MD5withRSA signature algorithm which is considered a security risk and is disabled.JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore ./platform.jks -destkeystore ./platform.jks -deststoretype pkcs12" 遷移到行業標準格式 PKCS12。3.完成上述命令之后按照慣例就要將其遷移到行業標準格式keytool -importkeystore -srckeystore ./platform.jks -destkeystore ./platform.jks -deststoretype pkcs12輸入源密鑰庫口令:  已成功導入別名 systemkey 的條目。已完成導入命令: 1 個條目成功導入, 0 個條目失敗或取消Warning:<systemkey> uses the MD5withRSA signature algorithm which is considered a security risk and is disabled.已將 "./platform.jks" 遷移到 Non JKS/JCEKS。將 JKS 密鑰庫作為 "./platform.jks.old" 進行了備份。4.同目錄會生成 platform.pem,platform.p12,platform.jks.old,我們使用命令查看.jks的文件keytool -list -v -keystore platform.jks輸入密鑰庫口令:  密鑰庫類型: PKCS12密鑰庫提供方: SUN您的密鑰庫包含 1 個條目別名: systemkey創建日期: 2023-6-20條目類型: PrivateKeyEntry證書鏈長度: 1證書[1]:所有者: EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US發布者: EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US序列號: b3998086d056cffa有效期為 Wed Apr 16 06:40:50 CST 2008 至 Sun Sep 02 06:40:50 CST 2035證書指紋:MD5:  27:19:6E:38:6B:87:5E:76:AD:F7:00:E7:EA:84:E4:C6:EE:E3:3D:FASHA1: C8:A2:E9:BC:CF:59:7C:2F:B6:DC:66:BE:E2:93:FC:13:F2:FC:47:EC:77:BC:6B:2B:0D:52:C1:1F:51:19:2A:B8SHA256: MD5withRSA (disabled)簽名算法名稱: 2048 位 RSA 密鑰主體公共密鑰算法: 3版本: {10}擴展: #1: ObjectId: 2.5.29.35 Criticality=falseAuthorityKeyIdentifier [KeyIdentifier [0000: 4F E4 A0 B3 DD 9C BA 29   F7 1D 72 87 C4 E7 C3 8F  O......)..r.....0010: 20 86 C2 99                                         ...][EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US]SerialNumber: [    b3998086 d056cffa]]#2: ObjectId: 2.5.29.19 Criticality=falseBasicConstraints:[CA:truePathLen:2147483647]#3: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 4F E4 A0 B3 DD 9C BA 29   F7 1D 72 87 C4 E7 C3 8F  O......)..r.....0010: 20 86 C2 99                                         ...]]

3.我們將測試代碼放進Androidstudio當中在其app目錄下新建key目錄,將platform.jks放到key目錄下,同時在? build.gradle下添加下述代碼

 android {...signingConfigs {release {storeFile file("/key/platform.jks")keyAlias "systemkey"keyPassword "123456"storePassword "123456"}}}   

不過有時候build.gradle的文件類型不同或許需要做一些變更比方說我的build.gradle.kts中格式如下

    signingConfigs {create("release") {storeFile file("/key/platform.jks")keyAlias "systemkey"keyPassword "123456"storePassword "123456"}}

之后直接運行文件即可

AndroidStudio中生成相應的apk則可以參考下述文檔

Android Studio生成.jks文件-CSDN博客

生成完相應的apk,咱就可以用adb直接install進入到我們的系統中,進行進一步調試

4.將apk內置到系統當中的方法

這一部分思路就比較明確分為三步

1.在package/app下創建文件夾例:Test1

2.在其中添加相應的文件Android.mk文件

#Android.mk文件LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)#模塊名稱
LOCAL_MODULE := Test1
#生成路徑在adb shell system/app 
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
#注意此處切換為系統簽名platform
LOCAL_CERTIFICATE := platform   
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_DEX_PREOPT = false
include $(BUILD_PREBUILT)

3.在Test1下將相應的apk放進去即可,同時在相應的位置添加好即可:

例子:b/device/sprd/XXXX/common/common_packages.mk

本文為自己的學習參考,僅供大家參考與討論

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

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

相關文章

HarmonyOS 5 應用開發導讀:從入門到實踐

一、HarmonyOS 5 概述 HarmonyOS 5 是華為推出的新一代分布式操作系統&#xff0c;其核心設計理念是"一次開發&#xff0c;多端部署"。與傳統的移動操作系統不同&#xff0c;HarmonyOS 5 提供了更強大的跨設備協同能力&#xff0c;支持手機、平板、智能穿戴、智慧屏…

C語言創意編程:用趣味實例玩轉基礎語法(4)

文章目錄 0. 前言1. &#x1f308; 彩虹文字生成器1.1 程序效果展示1.2 完整代碼解析1.3 關鍵技術詳解1.3.1 Windows控制臺API1.3.2 顏色編碼1.3.3 安全輸入1.3.4 跨平臺考慮 2. &#x1f3b5; 簡易音樂播放器2.1 程序效果展示2.2 完整代碼解析2.3 關鍵技術詳解2.3.1 Windows B…

【專題】神經網絡期末復習資料(題庫)

神經網絡期末復習資料&#xff08;題庫&#xff09; 鏈接&#xff1a;https://blog.csdn.net/Pqf18064375973/article/details/148332887?sharetypeblogdetail&sharerId148332887&sharereferPC&sharesourcePqf18064375973&sharefrommp_from_link 【測試】 Th…

Python訓練營打卡 Day41

簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 → Batch…

leetcode216.組合總和III:回溯算法中多條件約束下的狀態管理

一、題目深度解析與組合約束條件 題目描述 找出所有相加之和為n的k個數的組合&#xff0c;且滿足以下條件&#xff1a; 每個數只能使用一次&#xff08;范圍為1到9&#xff09;所有數字均為唯一的正整數組合中的數字按升序排列 例如&#xff0c;當k3&#xff0c;n9時&#…

Java面試實戰:從Spring到大數據的全棧挑戰

Java面試實戰&#xff1a;從Spring到大數據的全棧挑戰 在某家知名互聯網大廠&#xff0c;嚴肅的面試官正在面試一位名叫謝飛機的程序員。謝飛機以其搞笑的回答和對Java技術棧的獨特見解而聞名。 第一輪&#xff1a;Spring與微服務的探索 面試官&#xff1a;“請你談談Spring…

基于vue框架的動物園飼養管理系統a7s60(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能&#xff1a;飼養員,健康登記,工作進度,動物信息,進食信息,動物健康,動物醫治,飼料信息,工作留言 開題報告內容 基于Vue框架的動物園飼養管理系統開題報告 一、研究背景與意義 &#xff08;一&#xff09;研究背景 隨著城市化進程加快和公眾對生…

docker鏡像與dockerfile

一、docker鏡像 1.什么是鏡像 容器解決應用開發、測試和部署的問題&#xff0c;而鏡像解決應用部署環境問題。鏡像是一個只讀的容器模板&#xff0c; 打包了應用程序和應用程序所依賴的文件系統以及啟動容器的配置文件&#xff0c;是啟動容器的基礎。鏡像所打 包的文件內容就是…

流媒體基礎解析:音視頻封裝格式與傳輸協議

在視頻處理與傳輸的完整流程中&#xff0c;音視頻封裝格式和傳輸協議扮演著至關重要的角色。它們不僅決定了視頻文件的存儲方式&#xff0c;還影響著視頻在網絡上的傳輸效率和播放體驗。今天&#xff0c;我們將深入探討音視頻封裝格式和傳輸協議的相關知識。 音視頻封裝格式 什…

普中STM32F103ZET6開發攻略(一)

各位看官老爺們&#xff0c;點擊關注不迷路喲。你的點贊、收藏&#xff0c;一鍵三連&#xff0c;是我持續更新的動力喲&#xff01;&#xff01;&#xff01; 目錄 普中STM32F103ZET6開發攻略 1. GPIO端口實驗——點亮LED燈 1.1 實驗目的 1.2 實驗原理 1.3 實驗環境和器材…

AWS API Gateway 配置WAF(中國區)

問題 需要給AWS API Gateway配置WAF。 AWS WAF設置 打開AWS WAF首頁&#xff0c;開始創建和配置WAF&#xff0c;如下圖&#xff1a; 設置web acl名稱&#xff0c;然后開始添加aws相關資源&#xff0c;如下圖&#xff1a; 選擇資源類型&#xff0c;但是&#xff0c;我這里出…

測試分類詳解

測試分類 一、按測試對象分類 1. 界面測試 1.1 測試內容介紹 界面測試驗證用戶界面(UI)的視覺呈現和交互邏輯&#xff0c;確保符合設計規范并提供良好的用戶體驗。測試內容包括&#xff1a; 頁面布局和元素對齊字體、顏色和圖標一致性交互反饋&#xff08;懸停、點擊狀態&a…

打開NRODIC SDK編譯不過怎么處理,keil與segger studio

打開NRODIC SDK編譯不過怎么處理,以下是keil處理. 1,如圖,不要安裝安裝也不會過 2. 不要安裝點擊否 3.點擊確定后進來這個樣子 4.這里選擇這個勾,OK后就不會再有后面的pack_license 5.去掉勾后這里要選擇自己SDK對應的pack版本,我的是8.27.0 6.OK后彈出個界面也要反復選擇…

HarmonyOS ArkUI-X開發中的常見問題及解決方案

一、跨平臺編譯與適配問題 1. 平臺特定API不兼容 ?問題現象?&#xff1a;使用Router模塊的replaceUrl或startAbility等鴻蒙專屬API時&#xff0c;編譯跨平臺工程報錯cant support crossplatform application。 ?解決方案?&#xff1a; 改用ohos.router的跨平臺封裝API&a…

CSS篇-2

4. position 的值分別是相對于哪個位置定位的&#xff1f; position 屬性是 CSS 布局中一個非常核心的概念&#xff0c;它允許我們精確控制元素在文檔中的定位方式&#xff0c;從而脫離或部分脫離正常的文檔流。理解 position 的不同值以及它們各自的定位基準&#xff0c;是實…

設計模式:觀察者模式 - 實戰

一、觀察者模式場景 1.1 什么是觀察者模式&#xff1f; 觀察者模式&#xff08;Observer Pattern&#xff09;觀察者模式是一種行為型設計模式&#xff0c;用于定義一種一對多的依賴關系&#xff0c;當對象的狀態發生變化時&#xff0c;所有依賴于它的對象都會自動收到通知并更…

Axure中繼器交互完全指南:核心函數解析×場景實戰×避坑策略(懂得才能應用)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝!如有幫助請訂閱專欄! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 主要內容:中繼器核心函數解析、場景方法詳解、注意事項、特殊函數區別 課程目標:提高中繼器的掌握…

【設計模式-4.5】行為型——迭代器模式

說明&#xff1a;本文介紹設計模式中&#xff0c;行為型設計模式之一的迭代器模式。 定義 迭代器模式&#xff08;Iterator Pattern&#xff09;&#xff0c;也叫作游標模式&#xff08;Cursor Pattern&#xff09;&#xff0c;它提供一種按順序訪問集合/容器對象元素的方法&…

鴻蒙OSUniApp自定義手勢識別與操作控制實踐#三方框架 #Uniapp

UniApp自定義手勢識別與操作控制實踐 引言 在移動應用開發中&#xff0c;手勢交互已經成為提升用戶體驗的重要組成部分。本文將深入探討如何在UniApp框架中實現自定義手勢識別與操作控制&#xff0c;通過實際案例幫助開發者掌握這一關鍵技術。我們將以一個圖片查看器為例&…