目前很多第三方库已经同时支持 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\5d0e00f6a703ecbebed0322\mmkv-static-1.2.8\jni\arm64-v8a\libmmkv.so
xxx\5d0e00f6a703ecbebed0322\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 库文件。
打包
总结
最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:


上述【高清技术脑图】以及【配套的架构技术PDF】可以关注我免费获取
Android学习PDF+架构视频+面试文档+源码笔记
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。




由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)

学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-hvrTVWFx-55)]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/75926.html