日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Android?Studio?gradle配置packagingOptions打包so庫重復(fù)_Android

作者:早起的年輕人 ? 更新時間: 2022-12-14 編程語言

正文

在安卓開發(fā)中,通常會使用到gradle來編譯,在安卓項目的app目錄下的build.gradle中是用來對編譯進(jìn)行配置的,packagingOptions 是其中的一個打包配置,常見的設(shè)置項有exclude、pickFirst、doNotStrip、merge。

在日常代碼開發(fā)中,我們需要知其然,而知其所以然,本文章知識也是Android日常瘦身的的必備知識。

pickFirst 匹配

pickFirst,匹配到多個相同文件,只提取第一個,不能過濾aar和jar中的文件。

packagingOptions {
  pickFirst 'lib/arm64-v8a/libmsoptimize.so'
}

比如下面的打包日志出錯,就是說有重復(fù)相同的so庫,那么通過 pickFirst 來配置使用第一個就可以解決。 2 files found with path ‘lib/arm64-v8a/libmsoptimize.so’ from inputs:

doNotStrip 設(shè)置

doNotStrip 可以設(shè)置某些動態(tài)庫不被優(yōu)化壓縮。

比如在使用華為HMS的相關(guān)服務(wù)時,他會讓你注意不要壓縮一些so庫。

    packagingOptions {
        pickFirst 'lib/libc++_shared.so'
        doNotStrip "lib/armeabi/libYTCommon.so"
        doNotStrip "lib/armeabi-v7a/libYTCommon.so"
    }

merge 將匹配的文件都添加到APK中

merge 和pickFirst有些相反,會合并所有文件

    packagingOptions {
        merge '**/LICENSE.txt'
        merge '**/NOTICE.txt'
    }

exclude 過濾

exclude 過濾掉某些文件或者目錄不添加到APK中

不能過濾aar和jar中的內(nèi)容,比如項目中有些依賴庫中有多余的so庫,在App中并不是必需的,所以在打包的時候就可以將其過濾了

    packagingOptions {
        exclude 'META-INF/**'
        exclude 'lib/arm64-v8a/libmediaplayer.so'
    }

原文鏈接:https://juejin.cn/post/7166515657570254884

欄目分類
最近更新