【问题标题】:Android NDK build to support all available devicesAndroid NDK 构建以支持所有可用设备
【发布时间】:2015-11-13 07:21:02
【问题描述】:

我在我的项目中同时使用 java 文件和本机 c++ 代码。我想让该应用程序可用于所有设备和硬件(API lvl >= 15)。如果这很重要,我也在 java 和我的本机 c++ 中使用 OpenCV4Android。我不太确定我当前的配置是否足以支持所有可用的硬件:

应用程序.mk

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-9

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on

include C:/OpenCV4Android/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk

LOCAL_MODULE    := myNativeLib
LOCAL_SRC_FILES := myNativeLib.cpp
LOCAL_LDLIBS +=  -llog -ldl

include $(BUILD_SHARED_LIBRARY)

我已经在一些设备上测试了这个配置,它似乎可以工作,但APP_ABI := armeabi-v7a 没有将支持的设备缩小到只有armeabi-v7a 的设备,或者实际上每个设备都可以运行它?也许我应该像这里提到的那样插入APP_ABI := allhttps://developer.android.com/ndk/guides/application_mk.html

让应用程序响应并在所有设备上运行对我来说非常重要。

【问题讨论】:

  • 要支持所有平台,您应该使用 APP_ABI := all 并且对于 api 15 使用 APP_PLATFORM := android-15
  • 谢谢,确实我完全错过了 APP_PLATFORM 属性,但我对 APP_ABI 有点怀疑?如果将其设置为 all 使我们的应用程序自动适用于所有硬件,那么为什么 APP_ABI 不默认设置为 all 呢?
  • 如果您将其设置为“全部”,它将为每个平台创建一个二进制文件,这意味着您的应用程序的大小会更大
  • 哦,我明白了!这解释了很多,谢谢!
  • 最广泛用于 arm 拥有者是 "armeabi-v7a" ,对于新的 64 位拥有者是 "arm64-v8a",对于 x86 处理器是 "x86",对于 x86 64 位拥有者是 " x86_64"。大多数平台都将支持“armeabi-v7a”和“x86”,包括新的 64 位平台。欲了解更多信息,请阅读“APP_ABI”部分:developer.android.com/ndk/guides/application_mk.html

标签: android opencv android-ndk opencv4android


【解决方案1】:

要支持所有平台,您应该使用APP_ABI := all .对于 API 15,请使用 APP_PLATFORM := android-15。 请注意,您支持的平台越多,您的 apk 文件就越大,因为它会为您的 APK 中的每个支持的平台创建一个二进制文件。

【讨论】:

  • 捆绑大小可以显着减小。将其包含在您的答案中
猜你喜欢
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多