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

歡迎訪問 生活随笔!

生活随笔

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

Android

【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )

發(fā)布時(shí)間:2025/6/17 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 ) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、下載 p7zip 源碼
  • 二、交叉編譯 Android 中使用 7z 可執(zhí)行程序
  • 三、參考資料





一、下載 p7zip 源碼



下載 7zip 源碼 , 下載頁面 https://sourceforge.net/projects/p7zip/files/ , 點(diǎn)擊頁面中的 綠色下載按鈕 ;

也可以點(diǎn)擊下面的鏈接直接下載

  • https://jaist.dl.sourceforge.net/project/p7zip/p7zip/16.02/p7zip_16.02_src_all.tar.bz2

  • https://nchc.dl.sourceforge.net/project/p7zip/p7zip/16.02/p7zip_16.02_src_all.tar.bz2

下載的版本是 p7zip 版本 , 該版本可以在 Linux 中運(yùn)行 , 交叉編譯后在 Android 中運(yùn)行 ;

下載后的 p7zip_16.02_src_all.tar.bz2 文件 , 解壓該文件 ;

進(jìn)入源碼目錄后發(fā)現(xiàn) , p7zip 是使用 C/C++ 編寫 ;





二、交叉編譯 Android 中使用 7z 可執(zhí)行程序



在 Android 中使用命令行進(jìn)行壓縮與解壓縮操作 ;


可以使用命令行的場(chǎng)景 :

壓縮解壓縮過程可以使用命令行 , 全程不需要執(zhí)行過程中的數(shù)據(jù) , 只要得到結(jié)果 , 這種情況下就可以使用 7z 命令實(shí)現(xiàn)該效果 ;
如果要邊壓縮 , 邊分析解壓出來的文件 , 如病毒掃描 , 那就必須實(shí)時(shí)監(jiān)控解壓的數(shù)據(jù) , 需要移植 7z 源碼 , 并進(jìn)行二次開發(fā)實(shí)現(xiàn) ;
使用兩種方式得到的壓縮解壓縮結(jié)果相同 , 如果使用代碼 , 可以在壓縮解壓縮過程中進(jìn)行更多干預(yù)操作 ;


Android 中調(diào)用命令行方法 :

Runtime.getRuntime().exec("ls -la");

首先要交叉編譯出 Android 平臺(tái)上的可執(zhí)行文件 , 必須是 ARM 架構(gòu)的可執(zhí)行程序 ;

p7zip 源碼中給出 Android 平臺(tái)使用的源碼 , 在 p7zip_16.02\CPP\ANDROID 目錄下 ;

其中 ,

7z 可以使用插件 , 支持的壓縮格式多 , 可以支持 tar , zip 等壓縮格式 ;

7zr 只支持 7z 格式的壓縮解壓縮 ;

這里推薦使用 7zr , 只使用壓縮比率最高的格式 7z 格式即可 , 多余的功能基本不需要 ;


進(jìn)入 7zr 目錄下 , 有一個(gè) jni 目錄 和 makefile 文件 ,

jni 目錄中是 Android.mk 和 Application.mk 兩個(gè)構(gòu)建腳本 , 可以使用 ndk-build 進(jìn)行編譯 ;

打開該 makefile 文件 , 該文件最后幾行代碼給出了相關(guān)操作方法 ;

# FIXME debug:cd jni ; ndk-build NDK_DEBUG=1adb push ./libs/armeabi/7zr /data/app/adb push ./libs/armeabi/gdbserver /data/app/adb shell chmod 777 /data/app/7zradb shell chmod 777 /data/app/gdbserveradb forward tcp:1234: tcp:1234adb shell /data/app/gdbserver :1234 /data/app/7zr

進(jìn)入 D:\develop\7zip\p7zip_16.02\CPP\ANDROID\7zr\jni 目錄 , 執(zhí)行 ndk-build 命令 , 進(jìn)行交叉編譯 ;


修改 Application.mk 構(gòu)建腳本 :

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 APP_PLATFORM := android-8

分析 Android.mk 構(gòu)建腳本 :

include $(BUILD_EXECUTABLE)
  • include $(BUILD_EXECUTABLE) 配置表示生成可執(zhí)行文件 ;

  • include $(BUILD_SHARED_LIBRARY) 配置表示生成 .so 動(dòng)態(tài)庫 ;

  • include $(BUILD_STATIC_LIBRARY) 配置表示生成 .a 靜態(tài)庫 ;


使用最低版本的 NDK 進(jìn)行編譯 , 使用高版本 NDK 編譯各種報(bào)錯(cuò) ;

使用 16.1.4479499 版本的 NDK 進(jìn)行編譯 :

>D:\001_Programs\001_Android\002_Sdk\Sdk\ndk\16.1.4479499\ndk-build.cmd

編譯要很長時(shí)間 , 輸出如下結(jié)果后 ,

最終在 D:\develop\7zip\p7zip_16.02\CPP\ANDROID\7zr\libs\armeabi-v7a 目錄下 , 生成了可執(zhí)行的 7zr 程序 ;

總共生成了 444 種 CPU 架構(gòu)的可執(zhí)行文件 ;

編譯過程中其它生成文件如下圖 :


編譯時(shí)遇到的錯(cuò)誤 :

  • 【錯(cuò)誤記錄】Android Studio 導(dǎo)入外部 so 動(dòng)態(tài)庫報(bào)錯(cuò) ( java.lang.UnsatisfiedLinkError | 指定 APK 打包動(dòng)態(tài)庫的 CPU 架構(gòu) )
  • 【錯(cuò)誤記錄】p7zip 交叉編譯 Android 版本 NDK 報(bào)錯(cuò) ( error: case value evaluates to -2 , which cannot be narrowed )




三、參考資料



參考資料 :

  • 7-Zip 官網(wǎng) : https://www.7-zip.org/

Android NDK 編譯構(gòu)建腳本參考文檔 :

  • ndk-build 腳本 : https://developer.android.google.cn/ndk/guides/ndk-build
  • Android.mk 構(gòu)建腳本 : https://developer.android.google.cn/ndk/guides/android_mk
  • Application.mk 構(gòu)建腳本 : https://developer.android.google.cn/ndk/guides/application_mk

博客資源 : 源碼 , 編譯后的可執(zhí)行文件, 在 7zip\p7zip_16.02\CPP\ANDROID\7zr\libs\ 目錄下 ;

  • 下載地址 : https://download.csdn.net/download/han1202012/18215890

總結(jié)

以上是生活随笔為你收集整理的【Android 安装包优化】p7zip 源码交叉编译 Android 平台可执行程序 ( 下载 p7zip 源码 | 交叉编译 Android 中使用 7z 可执行程序 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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