android - 错误:SHARED_LIBRARIES 缺少 STATIC_LIBRARIES Android.mk
问题描述
我有一个 android 应用程序,它也有 c++ 代码依赖项。
我想通过使用 AOSP 编译将此应用程序构建为系统应用程序。
在我的 android.mk 中,我必须先导入一个静态库 (abc.a),然后使用它来构建一个共享库 (xyz.so)。
我面临构建错误为“错误:xyz (SHARED_LIBRARIES android-arm64) 缺少 abc (STATIC_LIBRARIES android-arm64)”
安卓.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := abc
LOCAL_SRC_FILES := $(LOCAL_PATH)/$(TARGET_ARCH_ABI)/abc.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
#LOCAL_LDFLAGS := -llog -ldl
LOCAL_MODULE := libxyz
LOCAL_SRC_FILES := \
xyz.cpp \
xyz1.cpp
LOCAL_STATIC_LIBRARIES := abc
LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter -Wno-switch
#LOCAL_SDK_VERSION := 19
#LOCAL_NDK_STL_VARIANT := c++_static # LLVM libc++
include $(BUILD_SHARED_LIBRARY)
Cmakelists:
cmake_minimum_required(VERSION 3.4.1)
add_library( # Sets the name of the library.
abc
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/abc.cpp
src/main/cpp/abc.hxx
......................)
find_library( # Sets the name of the path variable.
log-lib
log pthread)
add_library( xyz
STATIC
IMPORTED )
set_target_properties( # Specifies the target library.
xyz
# Specifies the parameter you want to define.
PROPERTIES IMPORTED_LOCATION
# Provides the path to the library you want to import.
../../../../${ANDROID_ABI}/xyz.a )
target_link_libraries( # Specifies the target library.
abc
xyz ${log-lib} )
附上错误截图。
解决方案
平台构建系统与 NDK 使用的不同。没有PREBUILT_STATIC_LIBRARY
or之类的规则PREBUILT_SHARED_LIBRARY
,所以这些规则没有被执行。平台使用BUILD_PREBUILT
,您必须指定您的LOCAL_MODULE_CLASS
. 有关示例,请参见https://android.googlesource.com/platform/packages/apps/Dialer/+/refs/heads/master/Android.mk 。
该平台完全不支持 CMake。
您也可能不想在平台中使用 Android.mk。该构建系统(与 ndk-build 无关)已经退出了好几年。您需要按照https://source.android.com/setup/build的描述使用 Soong 。
推荐阅读
- amazon-web-services - Amazon Connect - 如何根据 CTR 生成报告
- azure - 如何使用 REST API 获取 Azure 虚拟机中可用的所有服务?
- jquery - 加入表格 Laravel 结合 JQuery 和 AJAX 请求
- javascript - 在移动设备上强制后置摄像头?
- image - Pillow 7.0.0 中的 PIL.ImageDraw.ImageDraw.text 特征属性似乎没有给结果带来任何差异
- python - 如何从 docker 容器连接到 rtsp 摄像头?
- c++ - 如何修复 C++ 中预期分号的错误?
- c++ - 可变参数模板参数包推演失败
- sqlite - SQLite datetime() 是否接受小数修饰符值?
- javascript - 如何在反应中将对象数组从父组件传递给子组件