Android体系结构中的最新变化已迫使所有开发人员使其Android应用程序支持64位。
我已经阅读了文档。但是如图所示,它在其中查找可能包含“ .so”文件的“ lib”文件夹。
我尝试过同样的事情,但是显然我找不到“ lib”文件夹,我的应用程序完全用Java编写,没有任何native(C,C ++)代码。
任何人都可以建议我可以做什么,如何确保我的应用程序受64位支持,或者如何获取带有.so文件的库。
答案 0 :(得分:1)
简短答案:
如果您没有本机(NDK)代码,即只编写Java / Dex代码,则无需执行任何操作。
如果您具有本机代码(或库),则需要提供其64位版本。
详细答案(解释):
Google Play小组建议采取以下措施:
如果您还没有的话,我们建议您开始使用64位 要求尽快。许多应用都是完全用 非本机代码(例如Java编程语言或Kotlin)和 不需要更改代码。
请注意,我们不会更改32位政策 支持。 Google Play将继续提供32位本机应用程序 代码到32位设备。该要求意味着这些应用将 还需要具有64位版本。
为了帮助您进行过渡,我们已经准备了documentation 检查您的应用程序是否已经支持64位以及如何成为 符合64位。
我们还在下面提供了一个高级时间表。
总结以上引用的段落中提供的文档链接:
如果您的应用仅使用以Java编程语言或 Kotlin,包括所有库或SDK,您的应用已准备就绪 64位设备。如果您的应用使用任何本机代码,或者您不确定 确实如此,您将需要评估您的应用并采取行动。
.....
检查64位库的最简单方法是检查 APK文件的结构。构建后,APK将与 应用程序所需的任何本机库。本机库存储在 基于ABI的各种文件夹。不需要支持每个 64位架构,但是对于每个本机32位架构, 支持,您必须包括相应的64位体系结构。
对于ARM体系结构,32位库位于 armeabi-v7a。等效的64位是arm64-v8a。
对于x86体系结构,为32位寻找x86,为32位寻找x86_64。 64位。
要做的第一件事是确保您在两个目录中都具有本机库 这些文件夹中......
如果您的APK已经具有NDK代码和64位库,请按照以下步骤操作:
大多数Android Studio项目使用Gradle作为基础构建 系统,因此本节适用于两种情况。启用构建 您的本机代码就像添加arm64-v8a和/或x86_64一样简单, 根据您希望支持的架构, 应用程序的“ build.gradle”文件中的ndk.abiFilters设置:
// Your app's build.gradle apply plugin: 'com.android.app' // 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' // ...
我希望这会有所帮助。
答案 1 :(得分:0)
因此,如果您真的要在本机Java项目中创建.so文件。请按照以下步骤操作:
第1步:要安装NDK,CMake和LLDB,请执行以下操作: 打开项目后,单击工具> SDK Manager。 单击SDK工具选项卡。 安装NDK,CMake和LLDB。 步骤2:完成这些步骤后,请在project / src / main中创建一个cpp文件夹。
第3步:在cpp文件夹下,添加native-lib.cpp。
第4步:在项目文件夹下创建SMakeLists.txt文件。
第5步:在Gradle中添加externalLibrary:
android{
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
defaultConfig {
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
externalNativeBuild {
cmake {
cppFlags ""
}
}
}