自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android 編譯系統(tǒng)應(yīng)用

移動(dòng)開(kāi)發(fā) Android
通過(guò)應(yīng)用簽名,開(kāi)發(fā)者可以標(biāo)識(shí)應(yīng)用創(chuàng)作者并更新其應(yīng)用,而無(wú)需創(chuàng)建復(fù)雜的接口和權(quán)限,在 Android 平臺(tái)運(yùn)行的每個(gè)應(yīng)用都必須有開(kāi)發(fā)者簽名。

一、應(yīng)用簽名

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

應(yīng)用簽名:通過(guò)應(yīng)用簽名,開(kāi)發(fā)者可以標(biāo)識(shí)應(yīng)用創(chuàng)作者并更新其應(yīng)用,而無(wú)需創(chuàng)建復(fù)雜的接口和權(quán)限,在 Android 平臺(tái)運(yùn)行的每個(gè)應(yīng)用都必須有開(kāi)發(fā)者簽名。

身份驗(yàn)證:

APK 簽名驗(yàn)證過(guò)程

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

  • pk8 : 私鑰文件,用于對(duì)APK進(jìn)行簽名,這個(gè)私鑰需要保密保存,不能公開(kāi)
  • x509.pem是證書文件,相對(duì)于公鑰,這個(gè)可以公開(kāi),主要用于驗(yàn)證某個(gè)apk 是否 由相應(yīng)的私鑰簽名。

系統(tǒng)簽名文件

在編譯 APK 通過(guò)設(shè)置Android.mk文件的LOCAL_CERTIFICATE 來(lái)實(shí)現(xiàn),

  • LOCAL_CERTIFICATE := platform系統(tǒng)簽名
  • LOCAL_CERTIFICATE := PRESIGNED 原本第三方簽名
  • media: 此簽名的apk是media/download的一部分
  • shared:此apk可以和home/contacts進(jìn)行共享數(shù)據(jù)
  • tastkey/releasekey: 平臺(tái)默認(rèn)key ,在編譯時(shí)未指定LOCAL_CERTIFICATE的,默認(rèn)是用testkey,因?yàn)閠estkey是公開(kāi)的,任何人都可以獲取,不安全,所以一般使用releasekey作為默認(rèn)key.

二、打包為 APK 進(jìn)行系統(tǒng)簽名

對(duì)于 部分功能的訪問(wèn)需要使用到系統(tǒng)權(quán)限,需要 添加 android:sharedUserId="android.uid.system" 權(quán)限,但是不正確的系統(tǒng)簽名會(huì)出現(xiàn)如下報(bào)錯(cuò) 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 根據(jù)如下操作 刪除對(duì)應(yīng)的 簽名文件 (不刪除也可,此處 重新 簽名 會(huì)進(jìn)行覆蓋)。

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

刪除對(duì)應(yīng)的文件

創(chuàng)建app文件夾 并開(kāi)始書寫 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)

目錄結(jié)構(gòu)

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

編譯結(jié)果如下:

編譯成功

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

安裝擁有系統(tǒng)權(quán)限 程序

三、使用系統(tǒng)密鑰(推薦便于開(kāi)發(fā)與調(diào)試)

  • testkey : 開(kāi)發(fā)和測(cè)試使用
  • platform : Android 平臺(tái)的系統(tǒng)應(yīng)用
  • shared: 平臺(tái)的共享系統(tǒng)庫(kù)
  • media: 用于簽署媒體庫(kù)(簽署 Android 平臺(tái)上的媒體庫(kù),這些庫(kù)提供音頻和視頻處理功能,允許訪問(wèn)系統(tǒng)上的音頻和視頻資源,對(duì)于多媒體應(yīng)用和功能非常重要)

進(jìn)入目錄:build/target/product/security 下查看

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

平臺(tái)

1. 系統(tǒng) key 文件生成 keystore

對(duì)如下內(nèi)容進(jìn)行個(gè)人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源碼中進(jìn)行配置
  • 配置文件為: 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

添加系統(tǒng)權(quán)限:

<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] 平臺(tái)簽名的共享 UID 許可名單: https://source.android.com/docs/core/permissions/platform-signed-shared-uid-allowlist?hl=zh-cn
  • [2] 應(yīng)用簽名: https://source.android.com/docs/security/features/apksigning?hl=zh-cn
  • [3] Android 系統(tǒng)簽名簡(jiǎn)介 : https://www.cnblogs.com/fanglongxiang/p/12445810.html
責(zé)任編輯:趙寧寧 來(lái)源: 瓶子的跋涉
相關(guān)推薦

2022-02-21 14:49:26

OpenHarmon操作系統(tǒng)鴻蒙

2010-03-05 14:52:09

Android應(yīng)用程序

2009-11-25 10:14:15

memcachedb編譯安裝

2011-03-14 13:51:00

iptables編譯

2023-12-11 17:26:21

Launcher鴻蒙預(yù)安裝應(yīng)用

2023-12-11 17:30:52

預(yù)安裝應(yīng)用鴻蒙Launcher

2010-03-04 10:56:24

Android系統(tǒng)

2010-03-30 17:15:09

CentOS系統(tǒng)

2010-01-26 15:08:11

Android根文件系

2023-03-23 09:33:22

Android移動(dòng)開(kāi)發(fā)

2013-05-28 10:52:07

Android開(kāi)發(fā)移動(dòng)開(kāi)發(fā)移動(dòng)應(yīng)用

2011-05-31 14:52:13

Android 反編譯 方法

2015-01-15 11:01:43

2013-04-28 13:54:26

Android編譯系統(tǒng)頭文件搜索路徑順序

2010-01-25 10:57:57

Android系統(tǒng)應(yīng)用

2009-12-29 11:11:10

2017-04-11 08:36:09

iOS編譯應(yīng)用

2023-08-16 14:39:20

微服務(wù)Java

2022-04-12 11:35:43

IDE工具OHOS應(yīng)用鴻蒙

2011-05-31 15:35:04

Android Ant
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)