91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android 14→15內(nèi)置可執(zhí)行程序:從“野路子”到“正規(guī)軍”的進(jìn)化

jf_44130326 ? 來源:Linux1024 ? 2026-02-01 16:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、先看兩組代碼的直觀區(qū)別

Android 14方案(PRODUCT_COPY_FILES):

wKgZO2kancKAZFfeAACFH6I8aDg852.png

核心邏輯:直接把文件從源碼目錄拷貝到系統(tǒng)分區(qū)(如/system/bin),像復(fù)制粘貼一樣簡單。

Android 15方案(PRODUCT_PACKAGES):

wKgZO2kancKAR4viAACczlg43Vg869.png

核心邏輯:先通過Android.bp定義模塊(如canconfig是一個(gè)預(yù)構(gòu)建可執(zhí)行程序模塊),再把模塊名加入打包清單,由構(gòu)建系統(tǒng)統(tǒng)一管理。

終端路徑:

wKgZO2kancKAc9fuAAAEWSDYanI290.png

二、為什么Android 15淘汰直接拷貝?

這不是功能刪減,而是Android系統(tǒng)安全、構(gòu)建效率、硬件適配三重進(jìn)化的必然結(jié)果:

1.安全升級(jí):從放養(yǎng)強(qiáng)監(jiān)管

?Android 14時(shí)代:直接拷貝文件,系統(tǒng)不會(huì)校驗(yàn)這個(gè)程序能不能在設(shè)備上運(yùn)行(比如x86程序拷貝到ARM設(shè)備),也不管程序有沒有危險(xiǎn)權(quán)限(比如偷偷讀寫系統(tǒng)文件)。

?Android 15時(shí)代:強(qiáng)制要求模塊化聲明,構(gòu)建系統(tǒng)會(huì)自動(dòng)檢查:

?架構(gòu)兼容性:程序必須是設(shè)備支持的架構(gòu)(如RK3576arm64);

?權(quán)限合法性:通過SELinux上下文配置,限制程序能做什么(比如只允許訪問串口);

?依賴完整性:如果程序依賴其他庫(如libcan.so),必須明確聲明,否則編譯報(bào)錯(cuò)。

2.構(gòu)建系統(tǒng)進(jìn)化:Soong取代傳統(tǒng)Make

Android 15全面擁抱Soong構(gòu)建系統(tǒng)(用Android.bp替代Android.mk),它像智能管家

?傳統(tǒng)方式(PRODUCT_COPY_FILES:只管拷貝,不管程序是否能運(yùn)行”“依賴是否完整,出問題全靠開發(fā)者人肉排查;

?模塊方式(PRODUCT_PACKAGES:通過cc_prebuilt_binary等規(guī)則,自動(dòng)處理權(quán)限、依賴、架構(gòu)問題,甚至能幫你發(fā)現(xiàn)程序是x86格式,設(shè)備是arm64”這種低級(jí)錯(cuò)誤。

3.硬件適配:瑞芯微等芯片廠商的倒逼

以瑞芯微RK3576為例:

?芯片的ISP、串口、攝像頭等硬件,對(duì)驅(qū)動(dòng)和工具的依賴管理要求更嚴(yán)格;

?直接拷貝的程序,可能因沒加載依賴庫”“權(quán)限不夠導(dǎo)致硬件功能失效;

?模塊化聲明能強(qiáng)制關(guān)聯(lián)驅(qū)動(dòng)、庫、權(quán)限,確保硬件功能正常工作。

三、開發(fā)者必須注意的3個(gè)核心點(diǎn)

1.必須學(xué)會(huì)寫Android.bp(模塊聲明)

cansend為例,需在同級(jí)目錄創(chuàng)建Android.bp

cc_prebuilt_binary {

name: "cansend", //模塊名,必須和PRODUCT_PACKAGES里的名字一致

srcs: ["cansend"], //可執(zhí)行程序的路徑

installable: true, //允許安裝到系統(tǒng)分區(qū)

file_contexts: "cansend_contexts", // SELinux上下文配置

target: {

android_arm64: { enabled: true }, //只編譯到arm64架構(gòu)

},

}

?關(guān)鍵作用:告訴構(gòu)建系統(tǒng)這個(gè)程序是誰、能裝在哪、該有什么權(quán)限。

wKgZO2kancKABIyxAACuwutTSLY224.png

2.SELinux配置是必答題

Android 15SELinux會(huì)嚴(yán)格攔截未授權(quán)操作,必須為程序配置上下文:

# cansend_contexts文件內(nèi)容

/system/bin/cansend usystem_file:s0

?若程序要訪問串口(如/dev/ttyS8),還需額外添加SELinux策略(如allow cansend serial_device:chr_file write;),否則會(huì)報(bào)avc: denied錯(cuò)誤。

3.動(dòng)態(tài)庫依賴要明明白白

如果cansend依賴libcan.so,不能只拷貝cansend,還需:

1.cc_prebuilt_library_shared聲明libcan.so模塊;

2.cansendAndroid.bp中通過shared_libs關(guān)聯(lián):

shared_libs: ["libcan"],

?否則設(shè)備運(yùn)行時(shí)會(huì)報(bào)錯(cuò)cannot load library: libcan.so。

四、實(shí)戰(zhàn)建議:從Android 14遷移到15的步驟

1.整理可執(zhí)行程序:把canconfigcandump等程序放到統(tǒng)一目錄(如device/rockchip/cantools)。

2.為每個(gè)程序?qū)?/span>Android.bp:按模塊規(guī)則聲明,配置架構(gòu)、權(quán)限、SELinux。

3.修改PRODUCT_PACKAGES:替換原來的文件路徑,改為模塊名。

4.編譯驗(yàn)證

系統(tǒng)配置:

export LC_ALL=C

source javaenv.sh

source build/envsetup.sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export PATH=$JAVA_HOME/bin:$PATH

export PATH=$ANDROID_BUILD_TOP/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

lunch rk3576_u-ap4a-userdebug

一鍵編譯:

./build.sh -AUCKu -d rk3576-evb1-v10 -J 16

若報(bào)錯(cuò),優(yōu)先檢查架構(gòu)是否匹配、SELinux策略是否缺失依賴是否聲明。

結(jié)語:系統(tǒng)越嚴(yán),開發(fā)越規(guī)范

Android 15對(duì)可執(zhí)行程序的模塊化要求,本質(zhì)是系統(tǒng)安全和開發(fā)效率的雙向奔赴

?對(duì)用戶:避免非法程序破壞系統(tǒng);

?對(duì)開發(fā)者:減少運(yùn)行時(shí)崩潰Debug成本。

跟上這個(gè)變化,你會(huì)發(fā)現(xiàn):曾經(jīng)的野路子雖然快,但正規(guī)軍的方式更穩(wěn)、更可持續(xù)。

(覺得有用?歡迎轉(zhuǎn)發(fā)給需要適配Android 15的同行~)



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4024

    瀏覽量

    133970
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3846

    瀏覽量

    85226
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4967

    瀏覽量

    73954
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    用于分析可執(zhí)行程序和內(nèi)存轉(zhuǎn)儲(chǔ)的命令行工具介紹

    Axf Tool 是桃芯科技一個(gè)用于分析可執(zhí)行程序和內(nèi)存轉(zhuǎn)儲(chǔ)的命令行工具。該工具已集成 ingWizard 的項(xiàng)目快捷菜單里。
    的頭像 發(fā)表于 11-03 17:00 ?2271次閱讀
    用于分析<b class='flag-5'>可執(zhí)行程序</b>和內(nèi)存轉(zhuǎn)儲(chǔ)的命令行工具介紹

    office 版本不同,到處可執(zhí)行程序出錯(cuò)

    本帖最后由 opticalchang 于 2025-12-29 12:41 編輯 編寫程序所用的office 是2016版, 可執(zhí)行程序在安裝了office 2007版本的電腦上運(yùn)行時(shí),就會(huì)出錯(cuò)。在office 版本沒法更新的情況下,怎么解決?
    發(fā)表于 12-29 10:32

    labview生成的可執(zhí)行程序的反編譯

    壇子里有沒有哪位大神知道關(guān)于labview生成的可執(zhí)行程序的反編譯問題,如何反編譯exe的應(yīng)用程序
    發(fā)表于 07-17 14:19

    各位大大,vxworks能否直接調(diào)用可執(zhí)行程序

    的腳本或方法,可以直接調(diào)用可執(zhí)行程序。ps:我看網(wǎng)上的一些資料說python可以運(yùn)行在vxworsk下,同時(shí)在linux下python可以直接調(diào)用可執(zhí)行程序,只是不知道這套方法在vxworks下是否
    發(fā)表于 04-29 12:13

    what!!! 10分鐘做出Labview可執(zhí)行程序!??!

    可執(zhí)行程序!https://mp.weixin.qq.com/s?__biz=MzI3MDIzMDQwNQ==&mid=100000411&idx=2&sn
    發(fā)表于 04-16 22:04

    在RV1126上怎樣去運(yùn)行rknn_yolo_demo可執(zhí)行程序

    怎樣生成rknn_yolo_demo可執(zhí)行程序呢?在RV1126上怎樣去運(yùn)行rknn_yolo_demo可執(zhí)行程序呢?
    發(fā)表于 02-21 07:42

    怎樣移植qt可執(zhí)行程序rk3399開發(fā)板上運(yùn)行呢

    aarch64-linux-gnu-gcc是什么?怎樣移植qt可執(zhí)行程序rk3399開發(fā)板上運(yùn)行呢?
    發(fā)表于 03-07 07:37

    LabVIEW中VISA可執(zhí)行程序不能在非開發(fā)機(jī)上運(yùn)行

    LabVIEW中VISA可執(zhí)行程序不能在非開發(fā)機(jī)上運(yùn)行在自己的LabVIEW開發(fā)機(jī)上寫了一個(gè)可以工作的VISA VI,然后把它創(chuàng)建為可執(zhí)行程序(.exe)用來發(fā)布。當(dāng)我在目標(biāo)機(jī)上運(yùn)行該可執(zhí)行程序連接
    發(fā)表于 05-19 21:12

    16KEY-B的可執(zhí)行程序

    16KEY-B的可執(zhí)行程序 /*******************************************************************/ /* */ /* 單片機(jī)開發(fā)
    發(fā)表于 11-22 18:02 ?14次下載

    Setup軟件安裝可執(zhí)行程序工具免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Setup軟件安裝可執(zhí)行程序工具免費(fèi)下載。 etup.exe是電腦的可執(zhí)行進(jìn)程文件,在正常情況下setup.exe表示為系統(tǒng)的安裝文件setup.exe,遇到系統(tǒng)文件
    發(fā)表于 11-13 08:00 ?11次下載

    國產(chǎn)數(shù)據(jù)庫游擊隊(duì)正規(guī)軍

    長期被國外同行遠(yuǎn)遠(yuǎn)拋在身后,近年來通過產(chǎn)學(xué)結(jié)合快速崛起,人大金倉成為了國產(chǎn)數(shù)據(jù)庫這一歷程的見證者和推動(dòng)者。 游擊隊(duì)正規(guī)軍的轉(zhuǎn)變 眾所
    的頭像 發(fā)表于 11-24 10:28 ?1339次閱讀

    任正非:華為還不是“正規(guī)軍

    華為心聲社區(qū)發(fā)表了一封“任總與2020年金牌員工代表座談會(huì)上的講話”;任正非:華為還不是“正規(guī)軍”;任正非說,“你們最主要是將外部經(jīng)驗(yàn)帶入華為,對(duì)“游擊隊(duì)”進(jìn)行整改,讓我們逐步轉(zhuǎn)為“正規(guī)軍”?!?圖
    的頭像 發(fā)表于 06-27 14:10 ?2961次閱讀
    任正非:華為還不是“<b class='flag-5'>正規(guī)軍</b>”

    在標(biāo)準(zhǔn)C語言中編譯出來的可執(zhí)行程序

    在標(biāo)準(zhǔn)C語言中,編譯出來的可執(zhí)行程序分為代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)3個(gè)部分。如下代碼
    的頭像 發(fā)表于 06-16 09:01 ?2699次閱讀
    在標(biāo)準(zhǔn)C語言中編譯出來的<b class='flag-5'>可執(zhí)行程序</b>

    如何嵌入第三方可執(zhí)行程序

    你可能碰到過這種需求:需要在自己開發(fā)的應(yīng)用程序中嵌入某個(gè)第三方的可執(zhí)行程序,那么該如何實(shí)現(xiàn)呢?其實(shí)是很簡單的,借助Windows API,簡單幾步即可完成。
    的頭像 發(fā)表于 11-01 09:54 ?6999次閱讀

    labview生成可執(zhí)行程序后vi都在同一路徑下嗎

    在LabVIEW中,當(dāng)您生成可執(zhí)行程序(exe文件)后,VI(虛擬儀器)并不直接以文件的形式存在于可執(zhí)行文件的同一物理路徑下。實(shí)際上,LabVIEW的可執(zhí)行文件構(gòu)建過程涉及將多個(gè)VI和相關(guān)的資源
    的頭像 發(fā)表于 09-04 17:06 ?2073次閱讀