Android 15 自杀式“升级”:16K内存分页的适配

Android 15 将强制16K Page Size(内存分页),估计是谷歌里的那些印度人拍脑门了。

一、你的App有没有用到动态库so?

把你的apk拖到Android Studio,后者会把apk按压缩包打开,找到压缩包里的lib文件夹,看里边的各子文件有没有so;不能直接从工程文件夹里找so来判断,因为有的so是你打包后才会形成的。

二、处理流程

if( 你的App没有用到动态库so) {恭喜你:无须针对此“升级”适配;
}else {if(第三方so动态库) {if(第三方so是大厂的) {等着他们更新,你再更新相关库;// 例如昨天在weibo sdk群问,他们说本周内更新,并且不会再用so。} else {// 第三方so是个人的// 你倒霉了:因为他们做共享库都是玩票性质,大多好多年没更新了,他们为了适配16k内存分页而复出更新是不太可能的,你也难以联系他们你大概率只能去掉相关第三方so的功能或找到替代的纯aar/jar(谈何容易);}} else {// 自己的so本文重点();}
}

三、本文重点()// 自己的so如何适配

1、搭建16K Page Size的模拟器,以便测试

网上有不少资料了,主要就是升级到Android Studio的最新版Koala,然后SDK platforms下载Android VanillaIceCream Preview(即 Android 15 预览版),勾选其子项包括 16K Page Size 字样的System Image(X86_64和ARM64),下载。

然后创建相应System Image的模拟器,跑一下你的App,用到so的相关界面大概率是崩溃了(我的app里用到so的界面全部崩溃)。

2、更新NDK编译配置

升级NDK版本至27,然后在Application.mk里加一行:

APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true

不过我的工程这么做后,导致编译so时报错,就换回旧版22了;上述那行版本22肯定不认,所以理论上可以删除,不过我留着了:以后有空解决27编译报错,这句就有用了。

既然恢复到22,那怎么才能让so编译成16K Page Size的呢?

这时就要编辑Android.mk,加一行:

LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"

我自己有多个so,所以有多个Android.mk文件在不同文件夹下,别忘记每个Android.mk文件都要加这行。

3、重新编译so

编译的前提是:AGP升至8.3+。升级后,重新编译so,运行至第1步里的16K 模拟器,发现用到自己这些so的相关界面都正常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式人工智能(15-基于树莓派4B的电机控制-直流电机TB6612)

电机是传动以及控制系统的重要组成部分,现在的电机已从过去简单的传动向复杂的控制转移,尤其是对电机的速度、位置、转矩的精确控制,本系列将介绍如何使用树莓派驱动并控制3种最为常见的控制电机:直流电机(风扇&#x…

大语言模型推理优化--键值缓存--Key-value Cache

文章目录 一、生成式预训练语言模型 GPT 模型结构二、FastServe 框架三、Key-value Cache1.大模型推理的冗余计算2.Self Attention3.KV Cache 一、生成式预训练语言模型 GPT 模型结构 目前,深度神经网络推理服务系统已经有一些工作针对生成式预训练语言模型 GPT 的独…

安全防御---防火墙综合实验3

安全防御—防火墙综合实验3 一、实验拓扑图 二、实验要求 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 13,办公区…

Ubuntu22.04安装OMNeT++

一、官网地址及安装指南 官网地址:OMNeT Discrete Event Simulator 官网安装指南(V6.0.3):https://doc.omnetpp.org/omnetpp/InstallGuide.pdf 官网下载地址:OMNeT Downloads 旧版本下载地址:OMNeT Old…

【动态规划】整数拆分

整数拆分&#xff08;难度&#xff1a;中等&#xff09; 该题对应力扣网址 AC代码 class Solution { public:int integerBreak(int n) {//动态规划//感觉这个题和零钱兑换有点像&#xff0c;只是零钱兑换提供了coin列表vector <int> dp(n1,0);//1、定义子问题//将原问题…

PolarisMesh源码系列--Polaris-Go注册发现流程

导语 北极星是腾讯开源的一款服务治理平台&#xff0c;用来解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题。在分布式和微服务架构的治理领域&#xff0c;目前国内比较流行的还包括 Spring Cloud&#xff0c;Apache Dubbo 等。在 Kubernete…

[RK3588-Android12] 关于如何取消usb-phy的充电检测

问题描述 RK3588如何取消usb-phy的充电检测 解决方案&#xff1a; 打上如下补丁 diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c index bbdcf3f..21ef614 100644 --- a/drivers/phy/rockchip/phy-rockchip-i…

多个返回值QT/C++

1. 通过引用参数: #include <iostream>// 通过引用参数实现多个返回值 void multipleReturns(int a, int b, int& sum, int& product) {sum = a + b;product = a * b; }int main() {int x = 3, y = 4, resultSum, resultProduct;multipleReturns(x, y, resultS…

错误:PHP:Deprecated: Required parameter $xxx follows optional parameter $yyy

前言 略 错误 Deprecated: Required parameter $xxx follows optional parameter $yyy 解决办法 设置 error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICT 参考 https://blog.csdn.net/lxw1844912514/article/details/100028023

创建自己的 app: html网页直接打包成app;在线网页打包app工具fusionapp、pake

1、html网页直接打包成app 主要通过hbuilderx框架工具来进行打包 https://www.dcloud.io/hbuilderx.html 参考&#xff1a; https://www.bilibili.com/video/BV1XG411r7QZ/ https://www.bilibili.com/video/BV1ZJ411W7Na 1&#xff09;网页制作 这里做的工具是TodoList 页面&a…

【数据结构--查找】

目录 一、查找&#xff08;Searching&#xff09;的概念1.1、基本概念1.2、算法的评价指标 二、顺序查找2.1、算法思想2.2、算法实现2.2.1、常规顺序查找2.2.2、带哨兵的顺序查找 2.3、效率分析2.4、优化2.4.1、针对有序表2.4.2、被查效率不相等 三、折半查找3.1、算法思想3.2、…

C语言项目篇:二、课程管理系统

为加强对于C语言的巩固和复习&#xff0c;以实战项目为导向&#xff0c;串起所有C语言的语法&#xff0c;达到活学活用的目的&#xff0c;本篇博客&#xff0c;详细总结利用C语言编码简单编码实现生活中的课程管理系统后台开发的整个过程&#xff0c;学习多文件编程和调试&…

【前端】Babel详解

Babel 是什么&#xff1f; Babel 中文文档 | Babel中文网 Babel是一个非常流行的JavaScript编译器工具&#xff0c;其主要功能是将新版本的JavaScript代码&#xff08;如ES6&#xff09;转换为旧版本的代码&#xff08;如ES5&#xff09;&#xff0c;以便能够在旧版本的浏览器…

Internet 控制报文协议 —— ICMPv4 和 ICMPv6 详解

ICMP 是一种面向无连接的协议&#xff0c;负责传递可能需要注意的差错和控制报文&#xff0c;差错指示通信网络是否存在错误 (如目的主机无法到达、IP 路由器无法正常传输数据包等。注意&#xff0c;路由器缓冲区溢出导致的丢包不包括在 ICMP 响应范围内&#xff0c;在 TCP 负责…

嵌入式软件工作能力

1. 工作能力 技术能力强&#xff0c;并不代表工作能力 2. 流程把控 3. 项目管理 4. “找茬”能力 5. 文档输出能力

Docker、containerd、CRI-O 和 runc 之间的区别

容器与 Docker 这个名称并不紧密相关。你可以使用其他工具来运行容器 您可以使用 Docker 或一堆非Docker 的其他工具来运行容器。docker只是众多选项之一&#xff0c;Docker&#xff08;公司&#xff09;在生态系统中创建了一些很棒的工具&#xff0c;但不是全部。 容器方面有…

利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】

目录 一、图与网络的基本概念 1. 无向图与有向图 2. 简单图、完全图、赋权图 3. 顶点的度 4. 子图与连通性 5. 图的矩阵表示 MATLAB代码实例 Python代码实例 二、最短路径问题 1. 最短路径问题的定义 2. Dijkstra算法 MATLAB代码实例 Python代码实例 三、最小生…

如何在 Nacos 中实现弱依赖健康检查

背景 Nacos 作为一个微服务的注册中心和配置中心&#xff0c;其高可用性对整个微服务系统的稳定性至关重要。然而&#xff0c;目前很多微服务对 Nacos 的健康状态有着强依赖性&#xff0c;例如通过健康探测接口 /api/status/ready 来监控 Nacos Server 的健康状况。如果 Nacos…

无法启动此程序,因为计算机丢失api-ms-win-core-path-l1-1-0.dll的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Microsoft Visual C++ 2010 Express 使用

Microsoft Visual C 2010 Express 使用 Microsoft Visual C 2010 Express&#xff08;简称VC 2010 Express&#xff09;是一款免费的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为C和C语言的开发者设计。 安装 下载|本站链接【VC2010简体中文版】的安装包并解压…