Android 适配 64 位架构

目前很多第三方库已经同时支持 32 和 64 位了,但是有些还不支持,如何找出这部分不支持的库或者文件呢?如果项目中的 so 文件数量很多,就很难通过肉眼的方式来查找,这里提供一个 gradle 脚本可以很方便快速得找出那些不支持 64 位的库。 在主模块的 build.gradle 最后面添加如下代码:

tasks.whenTaskAdded { task ->
if (task.name==‘mergeDebugNativeLibs’) {
task.doFirst {
println(““)
def v7a = []
def arm64 = []
it.inputs.files.each { file ->
if (file.absolutePath.endsWith(”/jni")) {
// println("
" + file.absolutePath)
if (file.isDirectory()) {
file.listFiles().each { soFileDir ->
if (soFileDir.absolutePath.contains(“armeabi-v7a”)) {
if (soFileDir.isDirectory()) {
soFileDir.listFiles().each {
println(it.absolutePath)
v7a.add(it.name)
}
}
}
if (soFileDir.absolutePath.contains(“arm64-v8a”)) {
if (soFileDir.isDirectory()) {
soFileDir.listFiles().each {
println(it.absolutePath)
arm64.add(it.name)
}
}
}
}
}
}
}
println(“v7a size: ${v7a.size()}”)
println(“arm64 size: KaTeX parse error: Expected '}', got 'EOF' at end of input: …t)) { println("it”)
}
}
println("
==========”)
}
}
}

然后执行 .\gradlew assembleDebug,这里的 Debug 可以根据实际项目中的 Flavor 进行替换。Demo 工程的输出如下:

Task :app:mergeDebugNativeLibs
==========================================================
xxx\5d0e00f6a703ec622708978bebed0322\mmkv-static-1.2.8\jni\arm64-v8a\libmmkv.so
xxx\5d0e00f6a703ec622708978bebed0322\mmkv-static-1.2.8\jni\armeabi-v7a\libmmkv.so
xxx\7206efbbb5863dbe5969c1c384b81177\openDefault-4.2.7\jni\armeabi-v7a\libweibosdkcore.so
xxx\ccd11b53aab95a933b06ef9e74f9fb44\sentry-android-ndk-3.1.3\jni\arm64-v8a\libsentry-android.so
xxx\ccd11b53aab95a933b06ef9e74f9fb44\sentry-android-ndk-3.1.3\jni\arm64-v8a\libsentry.so
xxx\ccd11b53aab95a933b06ef9e74f9fb44\sentry-android-ndk-3.1.3\jni\armeabi-v7a\libsentry-android.so
xxx\ccd11b53aab95a933b06ef9e74f9fb44\sentry-android-ndk-3.1.3\jni\armeabi-v7a\libsentry.so
v7a size: 4
arm64 size: 3
so in v7a, but not in arm64:
libweibosdkcore.so
==========================================================

从输出可以快速看出哪些已经支持 64 位,找到哪些还不支持 64 位的 so 文件,以及他们所在的路径。

Demo 工程见:github.com/callmepeanu…

适配 64 位

找到不支持 64 位的 so 列表后,如果是第三方库或者从外部引入的 so 文件,需要看是否有适配过 64 位的新版本,或者找提供方获取支持 64 位的版本。 如果是自己项目中的 C/C++ 源码编译出来的,需要在编译选项和源码层面做对 64 位架构的适配并生成对应架构的 so 库文件。

打包

可以把所有支持的 abi 的 so 都打在一个包里,这样一个安装包就可以适配所有设备,缺点就是包体积会增大,特别是原生库比较多的情况。 目前应用市场提供了分别上传32位兼容包和64位包的能力,所以可以利用构建多个 APK 的能力来打出支持不同 abi 的包,应用市场根据用户手机 CPU 类型分发对应的包,可以减少用户下载包的大小。 支持构建多个 APK 只需要在 build.gradle 中添加如下配置:

android {

splits {
abi {
enable true
reset()
include ‘armeabi-v7a’, ‘arm64-v8a’
universalApk false
}
}
}
生成的安装包如下图所示:
image.png
参考:

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

小结

有了这么多优秀的开发工具,可以做出更高质量的Android应用。

当然了,“打铁还需自身硬”,想要写出优秀的代码,最重要的一点还是自身的技术水平,不然用再好的工具也不能发挥出它的全部实力。

在这里我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

学习,也可以分享给身边好友一起学习

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 页面架构主要由以下几个组件组成: 1. Activity(活动):Activity 是 Android 应用程序的主要用户界面组件,它负责管理用户与应用程序之间的交互。每个 Activity 都有一个布局文件,用来定义界面的外观和布局。 2. Fragment(片段):Fragment 是一个可嵌入到 Activity 中的独立模块,它可以独立管理自己的生命周期和UI。Fragment 可以用于构建可复用的界面组件,以及实现更灵活的屏幕和布局。 3. View(视图):View 是 Android 界面的基本构件,它是用户界面上的可见元素,如按钮、文本框、图片等。View 通过使用布局文件进行组合和排列,构成完整的用户界面。 4. Layout(布局):Layout 是用来定义界面元素的位置和尺寸的容器,可以使用预定义的布局容器,如 LinearLayout、RelativeLayout 等,也可以自定义布局。 5. Intent(意图):Intent 是 Android 中用于在不同组件之间传递数据和触发操作的对象。通过 Intent,可以启动其他 Activity、启动服务、发送广播等。 6. Manifest(清单):AndroidManifest.xml 是 Android 应用程序的清单文件,它包含了应用程序的置信息和组件声明,如权限声明、Activity 声明等。 7. Resources(资源):Resources 是 Android 应用程序中的静态资源,如字符串、颜色、图像等。资源可以在布局文件和代码中引用,以提供灵活的界面和多语言支持。 这些组件共同构成了 Android Studio 页面架构,开发者可以通过组合和使用这些组件来构建强大的 Android 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值