无法获取用于项目的.so文件的lib文件夹以确保64位兼容性

时间:2019-08-22 17:37:07

标签: java android google-play 64-bit android-architecture

Android体系结构中的最新变化已迫使所有开发人员使其Android应用程序支持64位。

我已经阅读了文档。但是如图所示,它在其中查找可能包含“ .so”文件的“ lib”文件夹。

我尝试过同样的事情,但是显然我找不到“ lib”文件夹,我的应用程序完全用Java编写,没有任何native(C,C ++)代码。

任何人都可以建议我可以做什么,如何确保我的应用程序受64位支持,或者如何获取带有.so文件的库。

2 个答案:

答案 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 ""
    }
}

}