Android 32位 兼容 64位 so处理

最近华为商店平台已经要求App64位才能上架了。在下半年,所有平台都差不多会强制要求。在不久,硬件也只支持64位了,意味着,32位以后将会被淘汰。

好巧不巧,最近处理的以前别人的项目,刚好全是32位的,下手特别狠,可能为了代码量小,直接把64位的so包删掉了。那么直接开门见山,讲重要几点

一:设置64位的代码

    defaultConfig {
        ndk {
            abiFilters "armeabi-v7a"
            // 如果添加armeabi-v7a就必须添加arm64-v8a
            abiFilters "arm64-v8a"
            abiFilters "x86"
            // 添加x86必须添加x86_64
            abiFilters "x86_64"
        }
    }

二:以前32位的设置能兼容64位手机呀?为什么现在不行呢

现在也行,只是平台要求必须设置64位才能上架,包括以后硬件也会淘汰

三:可以把32位的so放在64位包上吗

不行,运行报错

四:我怎么知道so文件来源于哪些库呢

在 app 模块的 build.gradle 中,增加以下代码:

// 列出所有包含有so文件的库信息
tasks.whenTaskAdded { task ->
    task.doFirst {
        println("------------------- find so files start -------------------")
        println("------------------- find so files start -------------------")
        println("------------------- find so files start -------------------")

        it.inputs.files.each { file ->
            printDir(new File(file.absolutePath))
        }

        println("------------------- find so files end -------------------")
        println("------------------- find so files end -------------------")
        println("------------------- find so files end -------------------")
    }
}

def printDir(File file) {
    if (file != null) {
        if (file.isDirectory()) {
            file.listFiles().each {
                printDir(it)
            }
        } else if (file.absolutePath.endsWith(".so")) {
            println "find so file: $file.absolutePath"
        }
    }
}

然后执行 "gradlew assembleDebug"命令,ctrl+F搜索关键字 find so file:

1649845636(1).jpg

后续有什么关于如何处理这个问题的,再更新
欢迎收藏

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容