日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android NDK之Strip裁减so库

發(fā)布時間:2023/12/29 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android NDK之Strip裁减so库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.Strip基本介紹

strip

在類Unix和Unix的操作系統(tǒng)中,strip程序可對可執(zhí)行二進(jìn)制程序和對象文件中,刪除不必要的信息,從而帶來更好的性能和減少磁盤空間的使用?!安槐匾男畔ⅰ敝傅氖钦?zhí)行功能過程中,不需要的二進(jìn)制信息,比方調(diào)試和符號信息。但該命令裁剪的程度,取決于開發(fā)者對這部分代碼的具體實(shí)現(xiàn)。

此外,使用strip可提高二進(jìn)制文件在逆向工程中的安全性。如果沒有二進(jìn)制文件的信息和對象的名稱,分析它將更加困難

常用的strip 命令

  • strip - s xxx.so : 移除所有符號信息(會覆蓋原有帶符號表的so)
  • strip - S xxx.so: 移除調(diào)試符號信息
  • strip - s xxx.so -o yyy.so: 移除所有符號信息,裁減好后,輸出指定名字的so

不同架構(gòu)的strip

在Android 手機(jī)中 cpu 架構(gòu)是各不相同的,因此不同架構(gòu)下要使用各自的strip 裁減對應(yīng)的so庫。

這里介紹下,主流適配是armv7和armv8 的ndk位置:

  • armv8的strip位于:xxx\sdk\ndk\22.1.7171670\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-strip.exe
  • armv7的strip 位于:xxx\sdk\ndk\22.1.7171670\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-strip.exe

簡單介紹完strip命令后,還得先了解下符號表。

2.符號表(Symbol table)

在計算機(jī)科學(xué)中,符號表(Symbol table)是語言翻譯程序(如編譯器或解釋器)所使用的數(shù)據(jù)結(jié)構(gòu),其中程序源代碼中的每個標(biāo)識符(即符號)都與源代碼中的聲明或外觀相關(guān)的信息相關(guān)聯(lián)。換句話說,符號表的條目存儲與條目對應(yīng)符號相關(guān)的信息。

在這里插入符號表的實(shí)際使用:

  • 在android開發(fā)中,集成了bugly 異常上報的小伙伴,可能比較熟悉。為了定位每個版本中出現(xiàn)的native crash的位置,應(yīng)該上傳對應(yīng)版本的符號表(即帶有符號表的so庫)。
  • 使用ndk-stack 處理native crash ,也是需要使用到帶符號表的so庫。

3.使用Strip裁減so庫

拿到對應(yīng)架構(gòu)的so庫,比如這里是arm64-v8a的so庫進(jìn)行 移除全部符號表 ,指定輸出新的so庫。

先知道arm64-v8a對應(yīng)的strip 所在目錄,執(zhí)行以下命令:

效果如下圖:

這里插入點(diǎn)小知識:在android studio中通過c++代碼編譯出strip 的so庫,可以在cmake-list中添加:

#set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s") #set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")

參考教程

  • http://blog.itpub.net/69912579/viewspace-2759124/

總結(jié)

以上是生活随笔為你收集整理的Android NDK之Strip裁减so库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。