Jor*_*mVF 24 64-bit android 32-bit android-ndk google-play
我刚收到并阅读了Google Play的时事通讯,提到从明年开始,该商店"将要求使用原生库的新应用和应用更新提供除32位版本之外的64位版本".
对于尚未阅读的人,它说:
2019年的64位支持要求
Android 5.0中引入了对64位体系结构的平台支持.今天,超过40%的在线Android设备具有64位支持,同时仍保持32位兼容性.对于使用本机库的应用程序,64位代码通常提供更好的性能,附加寄存器和新指令.
由于预计未来仅支持64位代码的Android设备,Play控制台将要求使用本机库的新应用和应用更新除了提供32位版本之外还提供64位版本.这可以在单个APK内,也可以作为发布的多个APK中的一个.
我们没有删除32位支持.Google Play将继续支持32位应用和设备.不包含本机代码的应用程序不受影响.
此更改将于2019年8月生效.我们今天提前通知,以便为尚未支持64位的开发人员提供充足的时间来规划转换.请继续关注未来的帖子,我们将深入了解Android上64位本机库的性能优势,并查看NDK的CPU和架构指南以获取更多信息.
在适用的情况下,我们需要做出哪些实际的改变才能完全符合这一新要求?
Jor*_*mVF 19
根据Google Play团队发送的官方电子邮件,所需的操作是:
如果您还没有,我们建议您尽快开始满足64位要求.许多应用程序完全使用非本机代码(例如Java编程语言或Kotlin)编写,不需要更改代码.
请注意,我们不会对32位支持的政策进行更改.Google Play将继续向32位设备提供具有32位本机代码的应用.该要求意味着这些应用程序也需要具有64位版本.
为了帮助您进行转换,我们准备了有关如何检查您的应用是否已支持64位以及如何成为64位兼容的文档.
我们还在下面提供了一个高级时间表.
因此,链接的文档说明:
如果您的应用程序仅使用用Java编程语言或Kotlin编写的代码,包括任何库或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设置一样简单:
Run Code Online (Sandbox Code Playgroud)// 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位版本相同的质量和功能集.
如果您没有本机(NDK)代码,那就是您只编写Java/Dex代码,那么您不需要做任何事情.
如果您有本机代码(或库),则需要提供其64位版本.
如果您的 Android APK 不包括 64 位支持,您无需担心。在 Android Studio 中转到 Build -> Analyze APK。您可以看到 APK 结构。在 lib 下,如果您看到armeabi-v7a库并且没有任何arm64-v8a或x86_64库,那么您的 APK 不支持 64 位架构。
只需转到应用程序级别build.gradle并添加如下abiFiltersNDK defaultConfig:
ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
Run Code Online (Sandbox Code Playgroud)
根据此处的文档,如果您的应用使用的是本机代码或外部库,例如基于本机的领域(如下图所示),则应提供对64位的支持。如果您的应用程序中使用任何C / C ++(本机)的任何外部库均应同时支持32位和64位体系结构,否则应与库所有者联系。在Android Studio中,我们可以通过Build> Analyze APK检查两种架构的版本是否可用,并显示以下窗口:
如果您正在使用NDK并创建本机代码,则应通过在gradle中将它们注册为以下内容来提供对这两种体系结构的支持:
defaultConfig {
ndk.abiFilters = 'armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31077 次 |
| 最近记录: |