android abi 目录 留那个一,Android ABI拆分迁移到App Bundle

我打算从ABI拆分迁移到App Bundle功能.目前,我正在使用以下代码:

def versionCodesAbi = ['x86': 1, 'x86_64': 2, 'armeabi-v7a': 3, 'arm64-v8a': 4]

splits {

abi {

enable true

reset()

include "x86", "x86_64", "armeabi-v7a", "arm64-v8a"

// "armeabi", "mips", "mips64" last three not needed and not supported currently

universalApk true

}

}

android.applicationVariants.all { variant ->

variant.outputs.each { output ->

def abi = versionCodesAbi.get(output.getFilter(OutputFile.ABI))

if (abi != null) {

output.versionCodeOverride =

abi * 1000 + variant.versionCode

}

}

}

每个ABI提供4个APK(通用1个).使用此代码的原因是为了减小应用程序的大小,原因是PanoWidget(使用NDK)和

renderscriptTargetApi 28

renderscriptSupportModeEnabled true

删除拆分配置(将4001转换为versionCode)并构建捆绑后,我得到了.aab文件,该文件转换为.apks(使用bundletool),其中包含文件夹standalones /.在内部,我有四个“种类”的APK,分别用于x86,x86_64,armeabi-v7a和arm64-v8a ABI.现在一切都很好.

现在我注意到应用程序代码根本没有使用RenderScript,所以我认为使用supportMode和targetApi是多余的.我删除了这两行,在设备/仿真器上进行了测试,一切正常.因此,接下来我要制作Bundle,现在.apks存档中没有x86_64 APK版本…如果没有RenderScript支持,是否应该忽略它?我仍在使用VrPanoramaView,并且每个ABI可能都有一些特定的NDK代码(在GitHub上看不到)…可悲的是,我没有用于测试的x86(32或64)设备,而且我怕nom释放此捆绑包…我是否缺少smth,我甚至需要_64版本吗?

解决方法:

编辑:

在build.gradle中删除这两个选项将删除RenderScript使用的本机库:librsjni.so和libRSSupport.so.对于所有ABI,将删除这两个库.

由于禁用RenderScript之后,您仍然有3个ABI,因此您的应用程序似乎依赖于其他使用本机代码的库,但没有提供x86_64体系结构的库,这就是x86_64目录消失的原因.这可能意味着您的应用程序之前从未在x86_64上正常运行,因为平台将加载x86_64目录,但是某些本机库将丢失.

最终,您应该确定哪个库带来了这些本机库,并查看它们是否也可以构建64位版本,但是在短期内,因为x86_64设备也支持x86(32位)库,所以一切都不会中断.

上一篇:

如果APK中有任何* .bc文件,则会从APK中删除64位库,因为这些RenderScript文件仅为32位,并且无法在64位进程中加载​​.

如果您迁移到RenderScript的最新版本,则不会生成* .bc文件,并且64位本机库将再次出现在APK中.或者,如果您根本不需要RenderScript,请完全删除那些文件.

标签:renderscript,android-app-bundle,android,abi

来源: https://codeday.me/bug/20191211/2106379.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值