Android FAT APK:如何强制使用ARMv7

时间:2012-12-10 21:46:44

标签: android android-ndk arm armv7

我从NDK示例中的hello-gl2示例构建了FAT APK。 它有2个文件夹armeabi和armeabi-v7a

我在其中添加了以下方法

JNIEXPORT jstring JNICALL Java_com_android_gl2jni_GL2JNILib_status(JNIEnv * env, jobject obj)
{
   const char * result = "Hop";
   #ifdef __ARM__
      result = "__ARM__";
   #endif
   #ifdef __ARM_ARCH_5TE__
      result = "__ARM_ARCH_5TE__";
   #endif
   #ifdef __ARM_ARCH_7A__
      result = "__ARM_ARCH_7A__";
   #endif
   return env->NewStringUTF(result);
}

当app运行时,它会调用该方法并在弹出对话框中显示返回值。 当我在装有ARMv7 CPU的设备上运行app时,我收到__ARM_ARCH_5TE__消息,而不是__ARM_ARCH_7A__

然后我删除APK中的armeabi文件夹并重新安装APK。我看到__ARM_ARCH_7A__消息

如果我仅编译armeabi-v7a APK,那么我会看到__ARM_ARCH_7A__,但它无法在ARMv6设备上运行。

我希望编译FAT APK,它将在ARMv7 CPU上运行armeabi-v7a lib,在ARMv6 CPU上运行armeabi

我做错了什么或想做什么?