我刚刚收到并阅读了Google Play的时事通讯,其中提到从明年开始,该商店“将要求具有本机库的新应用程序和应用程序更新除了32位版本外还提供64位版本”。
对于那些还没有读过的人来说,它指出:
2019年64位支持需求
Android 5.0 中引入了对 64 位架构的平台支持。如今,超过40%的Android设备上线支持64位,同时仍保持32位兼容性。对于使用本机库的应用,64 位代码通常提供明显更好的性能,并提供额外的寄存器和新指令。
预计未来的Android设备将只支持64位代码,Play Console将要求新应用程序和带有原生库的应用程序更新除了提供32位版本外,还提供64位版本。这可以包含在单个APK中,也可以作为发布的多个apk中的一个。
我们没有删除32位支持。Google Play将继续支持32位应用程序和设备。不包含本机代码的应用程序不受影响。
此更改将于 2019 年 8 月生效。我们今天提供提前通知,以便为尚不支持 64 位的开发人员留出充足的时间来规划过渡。请继续关注以后的帖子,我们将深入了解 Android 上 64 位原生库的性能优势,并查看 NDK 的 CPU 和架构指南以获取更多信息。
在适用的情况下,我们需要做出哪些实际改变才能完全符合这一新要求?
根据此处的文档,如果您的应用程序使用本机代码或外部库,例如,基于本机的领域(下图中),则应提供64位支持。如果应用程序中使用任何C/C(本机)的任何外部库应同时支持32位和64位体系结构,则应与库所有者联系。在AndroidStudio中,我们可以通过Build检查两种架构的版本是否可用
如果您使用NDK并创建本机代码,您应该通过在gradle中登记它们来为所有架构提供支持:
defaultConfig {
ndk.abiFilters = 'armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64'
}
如果你没有原生(NDK)代码,也就是说你只编写Java/Dex代码,那么你不需要做任何事情。
如果您有本机代码(或库),则需要提供它们的64位版本。
根据Google Play团队发送的一封官方电子邮件,需要采取的行动是:
如果您还没有,我们鼓励您尽快开始64位需求的工作。许多应用程序完全用非本机代码(例如Java编程语言或Kotlin)编写,不需要更改代码。
请注意,我们不会对32位支持的策略进行更改。Google Play将继续向32位设备提供具有32位本地代码的应用程序。这一要求意味着这些应用程序也需要64位版本。
为了帮助您进行转换,我们准备了如何检查您的应用程序是否已经支持64位以及如何变得64位兼容的留档。
我们还在下面提供了一个高级时间表。
因此,链接留档解释说:
如果您的应用仅使用Java编程语言或静态编程语言(包括任何库或SDK)编写的代码,则您的应用已准备好用于64位设备。如果您的应用使用任何本机代码,或者您不确定是否使用,您将需要评估您的应用并采取行动。
[...]
检查64位库的最简单方法是检查APK文件的结构。构建后,APK将与应用程序所需的任何本地库打包。本机库存储在基于ABI的各种文件夹中。不需要支持每一个64位体系结构,但是对于您支持的每一个本机32位体系结构来说,您必须包括相应的64位体系。
对于 ARM 架构,32 位库位于 armeabi-v7a 中。64 位等效项是 arm64-v8a。
对于 x86 体系结构,请查找 32 位的 x86 和 64 位的 x86_64。
首先要做的是确保这两个文件夹中都有本地库。[...]
此外,要构建64位库,您基本上需要遵循以下说明:
大多数Android Studio项目使用Gradle作为底层构建系统,因此本节适用于这两种情况。根据您希望支持的架构,为您的本机代码启用构建非常简单,只需将arm64-v8a和/或x86_64添加到应用程序的“build.gradle”文件中的ndk.abiFilters设置即可:
// Your app's build.gradle
apply plugin: 'com.android.app'
android {
compileSdkVersion 27
defaultConfig {
appId "com.google.example.64bit"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
// ...
最后,请简要说明:
64位版本的应用程序应该提供与32位版本相同的质量和功能集。
顺便说一句,这段官方视频稍微谈到了这一点。
问题内容: 我已经使用Java一段时间了,而我典型的设置新开发机的习惯要求从Oracle站点下载并安装最新的JDK。 今天这引发了一个不寻常的问题, 回想起来,我已经安装了之前的两个版本,并且很高兴将普通的工具链插入(Eclipse)。在我的日常编程中,我不会回想起曾经因为使用64位JRE(或为此目的而针对64位JRE)而不得不以其他方式进行更改或思考的事情。 根据我对64位和32位的理解- 确实
问题内容: 我正在创建一个非常简单的应用程序,该应用程序可以读取和显示文本文件并进行搜索。 我问自己是否有兴趣向用户提出32位和64位版本。 区别仅在于使用64位版本访问更多的内存堆大小,还是还有其他兴趣? 32位编译程序是否可以在64位JVM上运行(我认为是) 问题答案: 任何 程序的32位和64位版本之间的唯一区别是机器字的大小,可寻址内存的数量以及所使用的操作系统ABI。对于Java,语言规
我有一个小功能,可以在32位架构上将虚拟内存地址转换为物理地址: 在过去的10年里,它的编译和运行没有出现任何问题。 我改变了编译器,为新的体系结构构建了repo(现在首次支持64位)。 编译失败 从' uint8_t*' {aka 'unsigned char*'}到' uint 32 _ t ' { aka ' unsigned int ' }[-fpermissive]的转换无效 现在,我理
本文向大家介绍32位和64位皆适用的MyEclipse安装教程,包括了32位和64位皆适用的MyEclipse安装教程的使用技巧和注意事项,需要的朋友参考一下 MyEclipse *的下载,找到MyEclipse的各种历史版本下载页面:http://www.myeclipsecn.com/ 简单说下,MyEclipse自己会带一个JDK,他是eclipse加插件的增强版,就不用安装eclipse了
问题内容: 我们已经继承了一个ant构建文件,但现在需要同时部署到32位和64位系统。 非Java位是通过GNUMakefiles完成的,我们只调用“ uname”来获取信息。有没有类似或什至更简单的方法来模仿蚂蚁呢? 问题答案: 您可以使用$ {os.arch}从ant 获得Java系统属性(http://java.sun.com/javase/6/docs/api/java/lang/Syst
本文向大家介绍谈谈,64位和32位的区别?相关面试题,主要包含被问及谈谈,64位和32位的区别?时的应答技巧和注意事项,需要的朋友参考一下 考察点: 操作系统 操作系统只是硬件和应用软件中间的一个平台。32位操作系统针对的32位的CPU设计。64位操作系统针对的64位的CPU设计。