2016-09-14 33 views
0

看起來像Build.CPU_ABI已棄用Build.SUPPORTED_ABIS.但是,如何找出目前正在使用我的應用程序的ABI?如何獲取應用程序的當前ABI?

例如,我的平板電腦先支持x86,然後支持armeabi-v7a。但是,打包的本地庫位於lib/armeabi-v7a目錄中。 apk中沒有lib/x86目錄。如果我根本沒有本地庫,那麼該設備將使用x86 ABI。但是,鑑於本地庫存在並且只是armeabi-v7a類型,應用程序必須回退到armeabi-v7a ABI。

那麼如何以編程方式確定我的應用當前正在運行哪個ABI? Build.SUPPORTED_ABIS會自動重新排列列表嗎?問候。

+1

也許還有更好的方法,但你可以在你的本地代碼的函數使用[cpufeatures庫(HTTPS: //developer.android.com/ndk/guides/cpu-features.html)並將該信息映射到ABI名稱之一。 – Michael

回答

0

使用此Java中

System.getProperty("os.arch") 

或C++

char arch_info[11] = ""; 

    // checking if CPU is of ARM family or not 
    if (android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM) { 
     strcpy(arch_info, "ARM"); 

     // checking if CPU is ARM v7 or not 
     uint64_t cpuFeatures = android_getCpuFeatures(); 
     if ((cpuFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7) != 0) { 
      strcat(arch_info, " v7"); 

      // checking if CPU is ARM v7 Neon 
      if((cpuFeatures & ANDROID_CPU_ARM_FEATURE_NEON) != 0) { 
       strcat(arch_info, "-neon"); 
      } 
     } 
    } 
相關問題