打包时不用再写task,轻轻松松自定义architecture

来源:互联网 发布:vb数值转字符串 编辑:程序博客网 时间:2024/05/02 06:46

Android Apk包只支持arm或者同时支持arm&x86平台是一种比较通用的方式了。由于产品中有用到第三方的sdk(一般支持arm、armv7、x86、64系全部平台),有的是通过aar方式引入,这个时候保证支持arm和x86平台,有一种方法是添加自定义task,修改gradle打包流程。但这种方法麻烦,需要对gradle task有一定的基础了解,不推荐使用(虽然本人前期也在这样做)。

另外一种方式是利用build tool工具的配置接口,比如下面这种一目了然的方式:

android {    ...    defaultConfig {        ndk {            abiFilters "armeabi", "x86"        }    }    splits {        abi {            reset() //清除默认的ABIs配置            enable false  //不根据定义的ABIs配置分别生成APK包            universalApk false  // 不生成包含所有abi的APK包            include "armeabi-v7a", "x86" //指定只包含areambi-v7a x86        }    }    ...        // 配置不同abi的versionCode    applicationVariants.all { variant ->        variant.outputs.each { output ->            def versionCodes = ["armeabi":1, "x86":2]            def abi = output.getFilter(com.android.build.OutputFile.ABI)            if (abi != null) {  // null for the universal-debug, universal-release variants                output.versionCodeOverride =                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode            }        }    }}


0 0