2016-09-14 3 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名の1つにマップします。 – 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"); 
      } 
     } 
    } 
関連する問題