成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android 編譯系統應用

移動開發 Android
通過應用簽名,開發者可以標識應用創作者并更新其應用,而無需創建復雜的接口和權限,在 Android 平臺運行的每個應用都必須有開發者簽名。

一、應用簽名

應用沙盒:Android平臺利用Linux保護機制識別和隔離應用資源,為此,Android會為每個Android應用分配一個唯一的用戶ID(UID) ,并在自己的進程中運行,Android 會使用此UID設置一個內核級應用沙盒(避免相同包名應用隨意覆蓋安裝)。

應用簽名:通過應用簽名,開發者可以標識應用創作者并更新其應用,而無需創建復雜的接口和權限,在 Android 平臺運行的每個應用都必須有開發者簽名。

身份驗證:

APK 簽名驗證過程

Android 系統中的主要簽名文件,系統簽名文件主要位于build/target/product/security/目錄下

  • pk8 : 私鑰文件,用于對APK進行簽名,這個私鑰需要保密保存,不能公開
  • x509.pem是證書文件,相對于公鑰,這個可以公開,主要用于驗證某個apk 是否 由相應的私鑰簽名。

系統簽名文件

在編譯 APK 通過設置Android.mk文件的LOCAL_CERTIFICATE 來實現,

  • LOCAL_CERTIFICATE := platform系統簽名
  • LOCAL_CERTIFICATE := PRESIGNED 原本第三方簽名
  • media: 此簽名的apk是media/download的一部分
  • shared:此apk可以和home/contacts進行共享數據
  • tastkey/releasekey: 平臺默認key ,在編譯時未指定LOCAL_CERTIFICATE的,默認是用testkey,因為testkey是公開的,任何人都可以獲取,不安全,所以一般使用releasekey作為默認key.

二、打包為 APK 進行系統簽名

對于 部分功能的訪問需要使用到系統權限,需要 添加 android:sharedUserId="android.uid.system" 權限,但是不正確的系統簽名會出現如下報錯 Installation did not succeed.The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.RBTest"
    coreApp="true"
    android:sharedUserId="android.uid.system">

將app編譯成 可 安裝的 APP:

編譯成可以安裝的app

編譯成功之后,將app 的后綴名 修改為 rar 根據如下操作 刪除對應的 簽名文件 (不刪除也可,此處 重新 簽名 會進行覆蓋)。

刪除完成之后 將文件后綴名改為app:

刪除對應的文件

創建app文件夾 并開始書寫 Android.mk文件:

  • 修改LOCAL_MODULE 名稱為自己的名稱
LOCAL_PATH := $(call my-dir)
include$(CLEAR_VARS)
LOCAL_MODULE := Factorytest
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_DEX_PREOPT := false
LOCAL_CERTIFICATE := platform
LOCAL_PRODUCT_MODULE := true
#LOCAL_PRIVILEGED_MODULE := true
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES :=
#LOCAL_PREBUILT_JNI_LIBS :=
include$(BUILD_PREBUILT)

目錄結構

  • 放入文件夾 vendor/rockchip/common/apps/Factorytest
  • 使用mm執行 編譯:
build/envsetup.sh   # 加載環境
lunch  # 配置版本
cd vendor/rockchip/common/apps/Factorytest # 進入 文件放入的目錄
mm -j$(nproc)  # 進行編譯

編譯結果如下:

編譯成功

使用 ADB 向主板中 進行安裝即可 (如果有相同包名的程序已經安裝了,記得對原有包名的程序進行刪除)。

安裝擁有系統權限 程序

三、使用系統密鑰(推薦便于開發與調試)

  • testkey : 開發和測試使用
  • platform : Android 平臺的系統應用
  • shared: 平臺的共享系統庫
  • media: 用于簽署媒體庫(簽署 Android 平臺上的媒體庫,這些庫提供音頻和視頻處理功能,允許訪問系統上的音頻和視頻資源,對于多媒體應用和功能非常重要)

進入目錄:build/target/product/security 下查看

  • pk8 代表私鑰
  • x509.pem 代表 公鑰
  • GMS版本和非GMS版本需要進行重新生成密鑰。

平臺

1. 系統 key 文件生成 keystore

對如下內容進行個人DIY配置:

  • name : android14s.keystore
  • keyAlias : android14
  • keyPassword : 123456
cd android/build/target/product/security

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name android14

keytool -importkeystore -deststorepass 123456 -destkeystore ./android14s.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 123456

重新生成 rk3576密鑰:

cd android/build/target/product/security

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name rk3576

keytool -importkeystore -deststorepass 123456 -destkeystore ./rk3576.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass 123456

生成keystore

  • 在APK源碼中進行配置
  • 配置文件為: build.gradle(Module:app)

配置apk

signingConfigs {
    debug {
        storeFile file('android14s.keystore')
        storePassword '123456'
        keyAlias 'android14'
        keyPassword '123456'
    }
    main {
        storeFile file('android14s.keystore')
        storePassword '123456'
        keyAlias 'android14'
        keyPassword '123456'
    }
}
buildTypes {
    release {
        minifyEnabled false
        signingConfig signingConfigs.main
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

    }
    debug {
        minifyEnabled false
        signingConfig signingConfigs.main
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

2. 配置 AndroidManifest.xml

添加系統權限:

<manifestxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
coreApp="true"
package="com.RealBom.RBTest"
android:sharedUserId="android.uid.system"
    >

參考閱讀:

  • [1] 平臺簽名的共享 UID 許可名單: https://source.android.com/docs/core/permissions/platform-signed-shared-uid-allowlist?hl=zh-cn
  • [2] 應用簽名: https://source.android.com/docs/security/features/apksigning?hl=zh-cn
  • [3] Android 系統簽名簡介 : https://www.cnblogs.com/fanglongxiang/p/12445810.html
責任編輯:趙寧寧 來源: 瓶子的跋涉
相關推薦

2022-02-21 14:49:26

OpenHarmon操作系統鴻蒙

2010-03-05 14:52:09

Android應用程序

2023-12-11 17:30:52

預安裝應用鴻蒙Launcher

2010-03-04 10:56:24

Android系統

2023-12-11 17:26:21

Launcher鴻蒙預安裝應用

2009-11-25 10:14:15

memcachedb編譯安裝

2011-03-14 13:51:00

iptables編譯

2010-03-30 17:15:09

CentOS系統

2010-01-26 15:08:11

Android根文件系

2023-03-23 09:33:22

Android移動開發

2013-05-28 10:52:07

Android開發移動開發移動應用

2011-05-31 14:52:13

Android 反編譯 方法

2015-01-15 11:01:43

2013-04-28 13:54:26

Android編譯系統頭文件搜索路徑順序

2010-01-25 10:57:57

Android系統應用

2009-12-29 11:11:10

2023-08-16 14:39:20

微服務Java

2022-04-12 11:35:43

IDE工具OHOS應用鴻蒙

2011-05-31 15:35:04

Android Ant

2015-01-15 10:15:16

Android反編譯-smail語法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av在线不卡 | 免费观看成人av | 国产一区二区在线观看视频 | 91在线一区 | 日韩欧美不卡 | 欧美.com | 亚洲免费一区二区 | 成人av免费| 国产精品地址 | 国产高清视频 | 亚洲视频一区在线观看 | 久久国产成人午夜av影院武则天 | 欧美日韩国产一区二区三区 | 情侣av | 在线成人免费视频 | 成人黄色在线 | 国内自拍视频在线观看 | 国产精品免费在线 | 欧美激情一区二区三区 | 欧美日韩最新 | 亚洲日日夜夜 | 国产精品99久久久久久大便 | 国产亚洲精品久久久久久豆腐 | 欧美一a一片一级一片 | 在线观看亚洲 | 精品一区二区三区不卡 | 国产精品视频免费观看 | 亚洲一区二区三区四区五区中文 | 国产精品伦理一区二区三区 | 亚洲欧美一区二区三区情侣bbw | 久久精品久久精品 | 婷婷丁香在线视频 | 午夜影晥| 羞视频在线观看 | 91成人免费观看 | 国产激情综合五月久久 | 欧美视频精品 | 日本不卡一区二区三区 | 先锋资源站 | 国产一区二区三区在线视频 | 农村真人裸体丰满少妇毛片 |