android系統裁剪之原生so庫精簡

2021-08-14 08:28:49 字數 839 閱讀 7401

so庫指的是/system/lib目錄下的so檔案,對於這部分的精簡是比較麻煩的,而且對於功能要求相對健全的情況下,能夠精簡掉的so庫也確實很少,最初盯上這塊的原因是因為接觸到的專案不需要libwebviewchromium.so庫,這乙個庫就有20m+,實在是很客觀,所以就研究了一下。

通過分析執行庫檔案原始碼的android.mk檔案,發現乙個執行庫檔案編譯執行時經常依賴其他的執行庫,且該庫本身又有可能被其他執行庫所依賴,所以對android系統執行庫裁剪的主要難點是處理好庫與庫之間的依賴關係。最後還需要弄清楚有沒有apk依賴這些so庫,如果有apk依賴的so庫的話,也需要調查清楚是否需要保留so庫,還是乾脆直接將apk也一併刪除。

首先弄清楚庫與庫之間的相互關係,這裡通過在/system/lib目錄下執行乙個簡單的shell指令碼來弄清楚相互關係。就不需要挨個找so的原始碼makefile來確認依賴關係了。

#!/bin/sh

path=$(pwd)

string1="編譯依賴於以下其他包:"

cd $path

for file in $(ls *)

do if [ "$"x = "so"x ];then

echo $file,$string1

readelf -d $file | grep "shared library" | awk -f ":" ''

fidone

上面的指令碼可以生成每個庫檔案的編譯的時候,依賴了哪些其他的庫檔案,弄清楚這些之後,我們心裡就有譜了,如果要刪除某乙個庫,是會牽連到其他的哪些庫檔案。

最後如果確定待刪除的so庫可以刪除,就找到這個so庫的原始碼位置,將android.mk檔案乾掉即可。

android系統裁剪之ICU軟體庫精簡

icu庫是乙個支援國際化,本地化的軟體庫。對於純中英文的系統,icu還是很有必要精簡一下的。這個軟體庫的編譯是不依賴android原始碼編譯的,android原始碼只是整合了icu編譯之後生成的dat檔案而已,icu的具體編譯方法在原始碼中已經提供了,具體說明在 external icu4c stu...

android原生App系統 列印實現解決方案

一 解決方案核心思路 二 解決方案核心優勢與不足 方式1通過酷酷辮資料線與列印直接聯接,實現列印,優點 穩定 配件酷酷辮 約20元 方式2手機與印表機同處於相同wifi環境中,優點 簡便,明顯缺點 需要事先在windows環境中將印表機加入到該wifi中才可以。不足 僅適用android手機 平板 ...

android 系統原生鬧鐘原始碼解析(附原始碼)

最近看了一下android 4.4系統原生鬧鐘的 做個總結。並將原始碼提取出,做了些精簡,重新組織打包,這樣可直接執行安裝,也不與手機自帶衝突,方便學習。原生鬧鐘,十分穩定,可能的衝突事件都考慮並處理,只要美化介面,就是個不錯的鬧鐘apk.進入正題,如何寫乙個鬧鐘應用,需要考慮哪些。我從以下幾點做個...