成人免费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應用程序

2009-11-25 10:14:15

memcachedb編譯安裝

2011-03-14 13:51:00

iptables編譯

2023-12-11 17:26:21

Launcher鴻蒙預安裝應用

2010-03-04 10:56:24

Android系統

2023-12-11 17:30:52

預安裝應用鴻蒙Launcher

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

2017-04-11 08:36:09

iOS編譯應用

2023-08-16 14:39:20

微服務Java

2022-04-12 11:35:43

IDE工具OHOS應用鴻蒙

2011-05-31 15:35:04

Android Ant
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天天天操| 特黄特色大片免费视频观看 | 中文av在线播放 | 中文字幕精品一区二区三区精品 | 九九在线视频 | 国产精品看片 | 亚洲午夜精品一区二区三区他趣 | 亚洲美乳中文字幕 | 在线观看国产 | 精品久久久久久亚洲精品 | 一区二区三区亚洲 | 久草网址| 国产免费一级片 | 51ⅴ精品国产91久久久久久 | 亚洲高清视频在线观看 | 日本a级大片| 欧美亚洲国产一区二区三区 | 色婷婷亚洲 | 91精品国产色综合久久不卡98 | 亚洲精品久久 | 婷婷福利 | 能免费看的av | 亚洲欧美另类在线观看 | 日韩av在线一区 | 欧美日韩精品一区二区三区四区 | 日韩有码一区 | 狠狠涩 | av一级在线观看 | av大片| 欧美一区2区三区3区公司 | 伊人网站 | 国产精品中文字幕一区二区三区 | 日韩一级不卡 | 6080亚洲精品一区二区 | 精品久久久久久久久久久久久久 | 久久久久久国产精品免费免费男同 | 国产女人与拘做受视频 | 国内精品久久久久久久 | 国产精品视频一区二区三区四区国 | 国产欧美一区二区三区国产幕精品 | 本地毛片|