一些应用程序正在发布编解码器包等,例如新应用程序。(例如用于 MX Player 等的 armv7-neon 优化编解码器等...)
我很想知道这一点,因为目前我正在禁用霓虹灯以使 android 应用程序与更多设备兼容。如果我能理解那里发生了什么,我可以为自己做一个类似的事情,所以新设备的所有者可以安装霓虹灯优化库?
一些应用程序正在发布编解码器包等,例如新应用程序。(例如用于 MX Player 等的 armv7-neon 优化编解码器等...)
我很想知道这一点,因为目前我正在禁用霓虹灯以使 android 应用程序与更多设备兼容。如果我能理解那里发生了什么,我可以为自己做一个类似的事情,所以新设备的所有者可以安装霓虹灯优化库?
在本Application.mk
机代码的文件中,您可以指定要定位的 ABI。例如:
APP_ABI := armeabi armeabi-v7a
这表示您想为 ARMv7 和较旧的 ARMv6(或者可能是 v5)构建本机代码。这两个版本的库都将包含在您的应用程序中,最合适的版本将在运行时自动加载。
然后你可以在你的Android.mk
里面放这样的东西:
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_CFLAGS := -DHAVE_NEON=1
LOCAL_ARM_NEON := true
endif
然后,您可以将特定于 NEON 的代码放在源文件中的#ifdef HAVE_NEON ... #endif
. 另一种选择是将所有 NEON 特定代码放在其自己的源文件中,并且仅将这些文件添加到LOCAL_SRC_FILES
whenifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
为 true 时。