美文网首页
关于Split分包和abiFilters过滤的打包问题

关于Split分包和abiFilters过滤的打包问题

作者: 业精于勤_荒于嬉 | 来源:发表于2023-12-28 10:34 被阅读0次

    1、Split参数说明:

    enable:是否启用ABI拆分机制
    reset():重置ABI列表为只空字段,一般和include、exclude一起使用,如果要用必须在include和exclude前面。
    include:指明要包含哪些ABI,目前使用最多的为64位处理器的arm64-v8a,其次才是armeabi-v7a
    exclude: 默认包涵下所有ABI,可以移除一些ABI
    universalApk:是否打包一个通用版本,包含所有的ABI,默认值为false

    举例:设置代码如下

    splits{
      abi{
        enable true
        reset()
        include 'arm64-v8a','armeabi-v7a'
        //exclude 'armeabi'
        universalApk true
      }
    }
    

    那么这种情况下会打包生成3个apk,我们把它们解压缩一探究竟,
    第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件

    第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件

    第三个:app-universal-release.apk,里面会包含arm64-v8a和armeabi-v7a文件夹中的so文件
    根据不同平台选择不同的apk

    2、abiFilters过滤

    先设置splits,不设置abiFilters的情况下,代码如下:

    splits {
        abi {
            enable true
            reset()
            include 'arm64-v8a','armeabi-v7a','armeabi'
    //      exclude 'armeabi'
            universalApk true
        }
    }
    

    那么这种情况下打包回生成4个apk

    第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件

    第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件

    第三个:app-armeabi-release.apk,里面只会包含armeabi文件夹中的so文件

    第四个:app-universal-release.apk,里面会包含arm64-v8a、armeabi-v7a、armeabi文件夹中的so文件

    再设置abiFilters过滤:

    ndk {
        abiFilters 'arm64-v8a',"armeabi-v7a"
    }
    

    那么这种情况下仍然会打包生成4个apk
    第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件

    第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件

    第三个:app-armeabi-release.apk,里面只会包含armeabi文件夹中的so文件

    第四个:app-universal-release.apk,里面会包含arm64-v8a和armeabi-v7a文件夹中的so文件

    结论:abiFilters过滤就是在splits的基础之上,再选择打入universal中所包含的几种处理器架构的文件夹的

    相关文章

      网友评论

          本文标题:关于Split分包和abiFilters过滤的打包问题

          本文链接:https://www.haomeiwen.com/subject/syidndtx.html