当前位置: 首页 > news >正文

安卓手机APP开发__支持64位的架构

安卓手机APP开发__支持64位的架构

目录

概述

读取你的APP

快速的状态检查

你的APP使用了原生的代码吗?

你的APP包含了64位的代码库吗?

确保在这些目录中有原生的代码库.

使用APK分析器查看原生的代码库

通过解压缩APK查看原生的代码库

用安卓工作台或者是Gradle构建

用CMake构建

用ndk-build构建


概述

在谷歌的应用中发布的APP需要支持64位的架构。添加上你的APP的64位的版本,
提供了性能上的提升,并且能够运行在仅支持64位的硬件上。

如下的步骤确保你的32位的程序支持64位的设备。

读取你的APP

如果你的APP仅使用Java编程语言或者是Kotlin,包括所有的库和SDK,那么
你的APP支持64位的设备。如果你的APP使用了任何的原生的代码,或者是
你不确定是否使用了原生的代码,那么读取你的APP检查一下。

快速的状态检查

使用谷歌应用的命令行,浏览一下已存在的发布版本是否是合规的。

谷歌应用的命令行也显示你的程序发布过是否会有和64位环境需求相关的问题的告警。
如果出现了一个告警,按如下的步骤操作,让你的APP与64位的设备兼容。

你的APP使用了原生的代码吗?

包括如下的三个方面:
在你的APP中内嵌了C/C++(原生)代码。
链接了第三方的原生的代码库
由第三方的APP构造器来构建的,而这个构造器使用了原生的代码库。

你的APP包含了64位的代码库吗?

检查一下你的APK文件的结构。当构建的时候,APK的打包带着被APP需要使用的原生的代码库。
原生的代码库被存储在基于ABI的各个文件夹中。为了支持每一个64位的架构,它是不必需的,
但是对于每一个你支持的原生的32位架构,你必须包含相应的64位的架构。

对于ARM架构,32位的库在目录armeabi-v7a中,64位的库在arm64-v8a目录中。

对于x86架构,32位的库在目录x86中,64位的库在x86_64目录中。

确保在这些目录中有原生的代码库.

注意的是,依赖于你的APP,在每一个文件夹中可能没有相同的库。目标是确保你的APP能在
仅64位的环境下运行。

在一个经典的情况下,一个APK能同时为32位和64位构架而构建,每个目录下都有相应的库。
如果这不支持64位,你可能仅看到了32位的ABI的目录,而没有64位的目录。


使用APK分析器查看原生的代码库

APK分析器是一个工具,让你能评估一个构建好的APK的各个方面。使用它,
来查找各个原生的库,并且确保64位的库是存在的。

打开安卓工作台,打开项目。
从菜单上选择 构建〉分析APK
启动APK分析器
选择你要评估的APK

看lib目录,如果有的话,文件以.so后缀结尾。如果没有的话,那么
你的APP支持64位的设备,没有其它的动作要做了。如果你看到了
armeabi-v7a 或者是 x86目录,那么你有32位的库。
检查一下看看有没有.so文件。


通过解压缩APK查看原生的代码库

APK的文件是结构化的,像zip文件。使用命令行或者是其它的抽取工具,
抽取APK的文件。依赖于你的抽取工具,你可能不得不重命名文件为.zip.

浏览被抽取的文件,遵循上述的指导来确定你的APP是否支持64位设备。
你能在命令行上运行如下的命令例子:

:: Command Line
> zipinfo -1 YOUR_APK_FILE.apk | grep \.so$
lib/armeabi-v7a/libmain.so
lib/armeabi-v7a/libmono.so
lib/armeabi-v7a/libunity.so
lib/arm64-v8a/libmain.so
lib/arm64-v8a/libmono.so
lib/arm64-v8a/libunity.so

注意的是在这个例子中,armeabi-v7a和 arm64-v8a的代码库的存在性,
这意味着APP支持64位的架构。

用安卓工作台或者是Gradle构建

使用如下的代码:

Kotlin

// Your app's build.gradle
plugins {id("com.android.app")
}android {compileSdkVersion(27)defaultConfig {appId = "com.google.example.64bit"minSdkVersion(15)targetSdkVersion(28)versionCode = 1versionName = "1.0"ndk {abiFilters += listOf("armeabi-v7a","arm64-v8a","x86","x86_64")}
// ...

用CMake构建

命令如下:

:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …

用ndk-build构建

需要修改的是'Application.mk'的文件的APP_ABI变量。

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

相关文章:

安卓手机APP开发__支持64位的架构

安卓手机APP开发__支持64位的架构 目录 概述 读取你的APP 快速的状态检查 你的APP使用了原生的代码吗? 你的APP包含了64位的代码库吗? 确保在这些目录中有原生的代码库. 使用APK分析器查看原生的代码库 通过解压缩APK查看原生的代码库 用安卓工…...

Foxmail使用经验总结

目录 1.概述 2.版本历史 3.使用方法 3.1.安装和设置账户 3.2.收取和阅读邮件 ​​​​​​​3.3.发送邮件 ​​​​​​​3.4.管理联系人 ​​​​​​​3.5.日程安排和任务管理 ​​​​​​​3.6.定制设置和插件 ​​​​​​​3.7.跨平台同步 4.小结 1.概述 Fox…...

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…...

实验三:机器学习1.0

要求: 针对实验1和实验2构建的数据集信息分析 设计实现通过数据简介进行大类分类的程序 代码实现: 训练集数据获取: read_data.py import json import pickledef read_intro():data []trypathr"E:\Procedure\Python\Experiment\f…...

Vue 3 + Vite项目实战:常见问题与解决方案全解析

文章目录 一、项目使用本地图片打包后不显示1、在html中时候,本地运行和打包后线上运行都ok。2、用动态数据,本地运行ok,打包后线上运行不显示3、适用于处理单个链接的资源文件4、用动态数据且本地和线上访问都可显示 二、使用插件vite-plugi…...

飞天使-k8s知识点31-rancher的正确打开方式

文章目录 安装之前优化一下内核参数以及系统内核版本 rancher安装主要是使用以下命令nginx的配置为解决办法 安装之前优化一下内核参数以及系统内核版本 内核版本 4.17 cat > /etc/modules-load.d/iptables.conf <<EOF ip_tables iptable_filter EOF 然后重启服务器…...

Vue.component v2v3注册(局部与全局)组件使用详解

在Vue中&#xff0c;可以通过两种方式注册组件&#xff1a;局部注册和全局注册。 局部注册是在父组件中通过import和components选项注册的组件&#xff0c;仅在当前父组件及其子组件中可用。 // 父组件中import ChildComponent from ./ChildComponent.vue;export default {co…...

HNU-算法设计与分析-作业5

第五次作业【回溯算法】 文章目录 第五次作业【回溯算法】<1> 算法分析题5-3 回溯法重写0-1背包<2> 算法分析题5-5 旅行商问题&#xff08;剪枝&#xff09;<3> 算法实现题5-2 最小长度电路板排列问题<4> 算法实现题5-7 n色方柱问题<5> 算法实现…...

基础之音视频2

01 前言 02 mp 03 mp实例 简易音乐播放器 04 音频 sound-pool 1.作用 播放多个音频&#xff0c;短促音频 2.过程 加载load- 3.示例 模拟手机选铃声 步骤&#xff1a; 创建SoundPool对象&#xff0c;设置相关属性 音频流存入hashmap 播放音频 05 videoview 3gp 体积小 mp4 …...

两小时看完花书(深度学习入门篇)

1.深度学习花书前言 机器学习早期的时候十分依赖于已有的知识库和人为的逻辑规则&#xff0c;需要人们花大量的时间去制定合理的逻辑判定&#xff0c;可以说是有多少人工&#xff0c;就有多少智能。后来逐渐发展出一些简单的机器学习方法例如logistic regression、naive bayes等…...

21【Aseprite 作图】画白菜

1 对着参考图画轮廓 2 缩小尺寸 变成这样 3 本来是红色的描边&#xff0c;可以通过油漆桶工具&#xff08;取消 “连续”&#xff09;&#xff0c;就把红色的轮廓线&#xff0c;变成黑色的 同时用吸管工具&#xff0c;吸取绿色和白色&#xff0c;用油漆桶填充颜色 4 加上阴影…...

2024.05.15 [AI开发配环境]个人使用最新版远程服务器配环境大纲:docker、云盘、ssh、conda等

不包括在宿主机安装docker。 docker 找到心仪的镜像&#xff0c;比如从网上pull&#xff1a;https://hub.docker.com/r/pytorch/pytorch/tags?page&page_size&ordering&name2.0.1 docker pull pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel# 新建容器 docker r…...

opencv 轮廓区域检测

直线检测 void LineDetect(const cv::Mat &binaryImage) {cv::Mat xImage,yImage,binaryImage1,binaryImage2;// 形态学变化&#xff0c;闭操作 先膨胀&#xff0c;再腐蚀 可以填充小洞&#xff0c;填充小的噪点cv::Mat element cv::getStructuringElement(cv::MORPH_RE…...

2024-5-16

今日安排&#xff1a; 完结 nf_tables 模块的基本学习&#xff0c;然后开始审计源码mount 的使用&#xff0c;学习 namespace (昨昨昨昨天残留的任务)&#xff08;&#xff1a;看我能搁到什么时候静不下心学习新知识就做 CTF 题目&#x1f991;&#x1f991;&#x1f991; 今…...

IT行业的现状与未来:技术创新引领时代变革

随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。本文将探讨当前IT行业的现状及未来发展趋势&#xff0c;并邀请行业领袖、技术专家和创…...

Redis分布式锁【简单版】

文章目录 概要例子1【SETNX EXPIRE】例子2【 Redisson 】 概要 redis分布式锁六种方案 SETNX EXPIRE 方案&#xff1a; 描述&#xff1a;使用Redis的SETNX命令来尝试设置一个键值对&#xff0c;如果该键不存在&#xff0c;则设置成功并设置过期时间&#xff0c;实现锁的功能…...

18.Blender 渲染工程、打光方法及HDR贴图导入

HDR环境 如何导入Blender的HDR环境图 找到材质球信息 在右上角&#xff0c;点击箭头&#xff0c;展开详细部分 点击材质球&#xff0c;会出现下面一列材质球&#xff0c;将鼠标拖到第二个材质球&#xff0c;会显示信息 courtyard.exr 右上角打开已渲染模式 左边这里选择世界…...

VBA在Excel中部首组查字法的应用

VBA在Excel中部首组查字法的应用 文章目录 前言一、网站截图二、操作思路三、代码1.创建数据发送及返回方法2.创建截取字符串中的数值的方法3.获取部首对应的编码4.获取特定部首的汉字运行效果截图前言 使用汉语字典查生字、生词,多用拼音查字法和部首查字法。以前都是用纸质…...

ASP.NET MVC 4升级迁移到ASP.NET MVC 5

背景&#xff1a;今天针对一个老项目进行框架升级&#xff0c;老项目使用的是MVC 4&#xff0c;现在要升级到MVC5。 备份项目.NET升级4.5以上版本通过Nuget&#xff0c;更新或者直接安装包 包名oldVersionnewVersion说明Microsoft.AspNet.Mvc4.0.05.x.xMicrosoft.AspNet.Razo…...

AIGC时代已至,你准备好抓住机遇了吗?

一、行业前景 AIGC&#xff0c;即人工智能生成内容&#xff0c;是近年来人工智能领域中发展迅猛的一个分支。随着大数据、云计算、机器学习等技术的不断进步&#xff0c;AIGC已经取得了显著的成果&#xff0c;并且在广告、游戏、自媒体、教育、电商等多个领域实现了广泛应用。…...

Asian Beauty Z-Image Turbo实战:用nvidia-smi监控显存,小白也能轻松调优

Asian Beauty Z-Image Turbo实战&#xff1a;用nvidia-smi监控显存&#xff0c;小白也能轻松调优 如果你正在使用Asian Beauty Z-Image Turbo生成东方风格人像&#xff0c;是否遇到过生成过程中程序突然崩溃&#xff0c;或者生成速度越来越慢的情况&#xff1f;这些问题的罪魁…...

RyTuneX:WinUI3驱动的Windows性能优化引擎

RyTuneX&#xff1a;WinUI3驱动的Windows性能优化引擎 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目地址: https:/…...

Homebox开发者手册:从源码构建到自定义扩展的完整教程

Homebox开发者手册&#xff1a;从源码构建到自定义扩展的完整教程 【免费下载链接】homebox Homebox is the inventory and organization system built for the Home User 项目地址: https://gitcode.com/gh_mirrors/ho/homebox Homebox是一款为家庭用户打造的库存和组织…...

HTML函数在高负载下自动关机是硬件问题吗_过热保护机制【汇总】

HTML没有函数&#xff0c;更不会导致关机&#xff1b;所谓“HTML函数关机”是误解&#xff0c;实际是高负载JS/渲染引发CPU/GPU过热&#xff0c;触发系统级温控断电。HTML 函数在高负载下自动关机&#xff1f;压根不存在这个函数HTML 是标记语言&#xff0c;没有“函数”&#…...

YOLOv8n-face:工业级人脸检测技术的精度与效率平衡之道

YOLOv8n-face&#xff1a;工业级人脸检测技术的精度与效率平衡之道 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face 一、行业痛点诊断&#xff1a;企业级人脸检测的现实挑战 1.1 复杂场景…...

Qwen-Image-2512-SDNQ开源大模型:SVR低秩微调技术落地解析

Qwen-Image-2512-SDNQ开源大模型&#xff1a;SVR低秩微调技术落地解析 1. 引言 你有没有遇到过这样的烦恼&#xff1f;想用AI生成一张图片&#xff0c;要么得自己折腾复杂的模型部署&#xff0c;要么得忍受在线服务漫长的排队和模糊的画质。特别是对于开发者来说&#xff0c;…...

通义千问2.5-7B-Instruct环境部署:Docker镜像快速启动教程

通义千问2.5-7B-Instruct环境部署&#xff1a;Docker镜像快速启动教程 你是不是也遇到过这样的情况&#xff1a;想试试最新的大模型&#xff0c;但一看到“编译依赖”“CUDA版本匹配”“量化配置”就头皮发麻&#xff1f;下载模型权重、配置环境、调试端口……光是准备就花掉半…...

TRAE SOLO模式实战:如何用AI上下文工程师5分钟搞定JWT登录接口开发

TRAE SOLO模式实战&#xff1a;5分钟构建JWT登录接口的AI开发革命 清晨的阳光透过百叶窗洒在键盘上&#xff0c;咖啡杯里升起最后一缕热气。作为一名全栈开发者&#xff0c;你刚收到产品经理的紧急需求&#xff1a;"今天下班前上线用户登录功能&#xff0c;支持邮箱密码验…...

深入解析DolphinScheduler API调用:从文档到实战

1. DolphinScheduler API调用入门指南 第一次接触DolphinScheduler的API时&#xff0c;我也是一头雾水。官方文档虽然全面&#xff0c;但对于新手来说信息量太大&#xff0c;不知道从哪里入手。经过几个项目的实战&#xff0c;我总结出了一套快速上手的方法。 DolphinScheduler…...

linux sed/awk命令检索区间日志的问题

开发时如果需要检索一段时间内或者某个批量执行期间的所有日志&#xff0c;也就是区间日志时&#xff0c;手动检索会有一些问题&#xff1a;如要查询一段时间前的日志&#xff08;比如归档日志&#xff09;&#xff0c;需要一页一页翻&#xff0c;费时且费眼睛使用grep筛选日志…...