热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

so用法总结,such用法总结

本文只做一个简单的学习总结。答案是不会的。所以全面适配arm64-v8是迟早的事,因此新项目建议提前适配arm64-v8。注意事项需要注意的是,虽然ABI加载So会向下兼容。那


前言日常开发中经常使用第三个库。 基本的语音、视频等需要添加so库。


so库的体积一般非常大,不知道随便添加会导致apk的体积急剧增加。


本文只做一个简单的学习总结。 强烈建议您阅读文章:


为什么大型制造商的APP,如微信、支付宝(Alipay )等只适合armeabi-v7a/armeabi?


CPU体系结构的Android目前支持七种类型的应用程序二进制接口(abis ) :


mips、mips64、X86、x8664、ARM64-v8a、ARMeabi、ARMeabi-v7a CPU体系结构是ARM64-v8a第8代arm,64位的当前主流版本与arm兼容的so库的1%以下的mips64/mipsNDK r17很少用于移动电话,x86_64/X86 :可以忽略体系结构的移动电话包括英特尔提供的称为Hootel的移动电话


怎么选择? 看看大型制造商的APP如何选择so库:


Appcpu微信arm64-v8a支付宝(Alipay ) armeabiQQarmeabi手机淘宝armeabi-v7a有趣的是,这四种APP都只适应一种Cpu架构。


上面的这些APP只支持一种CPU体系结构。 例如,仅支持armeabi-v7a。 如果arm64-v8a等其他体系结构的手机上有APP,会崩溃吗?


答案是否定的。 由于armeabi-v7a和arm64-v8a向后兼容,因此仅支持armeabi的APP在armeabi、x86、x86_64、armewabi-v7a和arm64-v8中仅支持armeabi-v7a 我明白。


匹配方案综合上述市场占有和大型工厂的匹配方案来看,只要适合arm体系结构即可。 即,armeabi、armewabi-v7a、arm64-v8这三种选择。


1 .仅适用于方案armeabi的好处:基本上适用于所有CPU架构。 缺点(不包括已废除的mips和mips_64 ) :低性能等同于大多数移动电话需要辅助ABI或动态转码来兼容。 方案2 )与仅适用于方案armeabi-v7a相同的方案,但仅筛掉了一部分旧的,在性能和兼容性之间取得平衡3 .方案:仅适合于arm64-v8的优点:性能放弃部分旧设备用户的Google Play,从2019年8月开始,将APP与arm64-v8a匹配,并逐渐淘汰32位armeabi-v7a


因此,全面符合arm64-v8是迟早的事,因此建议在新项目中尽早符合arm64-v8。


我们要不放弃旧设备用户,也要保证性能,只能牺牲apk的体积。


ndk { abiFilters 'armeabi ',' arm64-v8a' }可以使用abiFilters指定app命中哪个Cpu体系结构的so库。 如果不指定,将被忽略。


注意事项是,ABI负载So向后兼容。 但是,如果您的APP同时存在两种体系结构,如:'armeabi '和' arm64-v8a '。 不同Cpu体系结构的手机只需加载相应的SO库,就不再向后兼容。 例如,a.so存在于armeabi中,而不存在于arm64-v8a中。 那么,arm64-v8a手机加载a.so库时会崩溃。 因此,必须同时将每个So库添加到每个架构中。 armeabi-v7a和armeabi都适用于32位CPU体系结构,因此理论上对于他们的So库是完全相同的。 也就是说,如果项目仅支持armeabi体系结构,但第三方框架仅提供armeabi-v7a库,则可以直接使用它。 但是,arm64-v8a为64位,因此无法通用。 一些无人维护的第三方库可能年久失修,没有arm64-v8a体系结构的So库。 此时,考虑是否符合arm64-v8a体系结构,或者是否使用其他库来代替。 后记性能兼容性是否兼容? 除了适合所有的CPU体系结构之外,还不能兼顾性能和兼容性吗? 其实谷歌早就想好了。


您可以轻松实现avisplet、分包和实现,并在gradle中添加以下配置:


安卓{ . splits {//configuresmultipleapksbasedonabi.ABI {//enablesbuildingmultipleapksperabi.enable true/by defi souse reset (andincludetospecifythatweonly//wantapksforx 86 andx 86 _ 64.//resetsthelistofabisthadleshouldcreateapksfforx specifiesalistofabisthatgradleshouldcreateapksfor.include ' x86 '、' x86_64 '、' arm64-v8a '、' armeabi ', ' arme ABI-v7a '//specifiesthatwedonotwanttoalsogenerateauniversalapkthatincludesallabis.universalapkfalse }是各自的CPU


这样,在确保性能的同时,xbdhs可以完美兼容,而无需添加APK的大小。 因为可以在所有体系结构中单独创建包,所以一举获得了很多好处。


Google Play支持在多个不同平台上上传APK,并且可以根据CPU体系结构下载不同的软件包。


但是,很遗憾,国内的APP应用商店目前不支持! 所以请看23333


见3https://MP.weixin.QQ.com/s/jnzpgarfqt5ul K9 thwmagg


推荐阅读
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • 深入解析 Android Drawable:第六阶段进阶指南 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 解决Android应用在手机安装时出现安全风险提示的方法与对策
    解决Android应用在手机安装时出现安全风险提示的方法与对策 ... [详细]
  • 在尝试为 Unity 编译一个简单的 Java 库时,运行 `ant jar` 命令后遇到了 Java I/O 异常。具体错误信息为“无法启动程序 ${aAPT},错误代码 2”,这通常表示指定的文件或目录不存在。此问题可能是由于环境配置不正确或路径设置有误导致的。建议检查相关路径和环境变量,确保所有依赖项都已正确安装和配置。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 为了优化直播应用底部聊天框的弹出机制,确保在不同设备上的布局稳定性和兼容性,特别是在配备虚拟按键的设备上,我们对用户交互流程进行了调整。首次打开应用时,需先点击首个输入框以准确获取键盘高度,避免直接点击第二个输入框导致的整体布局挤压问题。此优化通过调整 `activity_main.xml` 布局文件实现,确保了更好的用户体验和界面适配。 ... [详细]
  • Android ListView 自定义 CheckBox 实现列表项多选功能详解
    本文详细介绍了在Android开发中如何在ListView的每一行添加CheckBox,以实现列表项的多选功能。用户不仅可以通过点击复选框来选择项目,还可以通过点击列表的任意一行来完成选中操作,提升了用户体验和操作便捷性。同时,文章还探讨了相关的事件处理机制和布局优化技巧,帮助开发者更好地实现这一功能。 ... [详细]
author-avatar
手机用户2502891303_279
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有