Я хочу использовать мою stati c или общую готовую библиотеку libmylib.so or libmylib.a
. Моя цель сборки - устройство Hikey960. Я успешно строю чистый aosp проект и перепрошиваю на устройство Hikey960. Затем я хочу изменить /frameworks/av/media/libaudioclient/AudioTrack.cpp
, используя мой libmylib.so
.
Setp 1
Я сделал каталог mylib
в /system
и скопировал готовые библиотеки.
|-- Andoird.mk
|-- arm64-v8a
| |-- shared
| | `-- Release
| | `-- libmylib.so
| `-- static
| `-- Release
| `-- libmylib.a
|-- armeabi
| |-- shared
| | `-- Release
| | `-- libmylib.so
| `-- static
| `-- Release
| `-- libmylib.a
|-- armeabi-v7a
| |-- shared
| | `-- Release
| | `-- libmylib.so
| `-- static
| `-- Release
| `-- libmylib.a
|-- include
| `-- mylib.h
|-- x86
| |-- shared
| | `-- Release
| | `-- libmylib.so
| `-- static
| `-- Release
| `-- libmylib.a
`-- x86_64
|-- shared
| `-- Release
| `-- libmylib.so
`-- static
`-- Release
`-- libmylib.a
Шаг 2
Я создал Android.mk
файл в /system/mylib
следующим образом
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := system/mylib/$(TARGET_ARCH_ABI)/shared/Release/libmylib.so
LOCAL_EXPORT_C_INCLUDES:= include
include $(PREBUILT_SHARED_LIBRARY)
Шаг 3
Я вставил libmylib
строку в shared_libs: [
в frameworks/av/media/libaudioclient/Android.bp
следующим образом
cc_library_shared {
name: "libaudioclient",
aidl: {
export_aidl_headers: true,
local_include_dirs: ["aidl"],
include_dirs: [
"frameworks/av/media/libaudioclient/aidl",
],
},
srcs: [
// AIDL files for audioclient interfaces
// The headers for these interfaces will be available to any modules that
// include libaudioclient, at the path "aidl/package/path/BnFoo.h"
":libaudioclient_aidl_private",
":libaudioclient_aidl",
"AudioEffect.cpp",
"AudioRecord.cpp",
"AudioSystem.cpp",
"AudioTrack.cpp",
"AudioTrackShared.cpp",
"IAudioFlinger.cpp",
"IAudioFlingerClient.cpp",
"IAudioPolicyService.cpp",
"IAudioPolicyServiceClient.cpp",
"IAudioTrack.cpp",
"IEffect.cpp",
"IEffectClient.cpp",
"ToneGenerator.cpp",
"PlayerBase.cpp",
"RecordingActivityTracker.cpp",
"TrackPlayerBase.cpp",
],
shared_libs: [
"libaudiofoundation",
"libaudioutils",
"libaudiopolicy",
"libaudiomanager",
"libbinder",
"libcutils",
"libdl",
"liblog",
"libmedia_helper",
"libmediametrics",
"libmediautils",
"libnblog",
"libprocessgroup",
"libutils",
"libvibrator",
"libmylib",
],
export_shared_lib_headers: ["libbinder"],
local_include_dirs: ["include/media", "aidl"],
header_libs: [
"libaudioclient_headers",
"libbase_headers",
"libmedia_headers",
],
export_header_lib_headers: ["libaudioclient_headers"],
// for memory heap analysis
static_libs: [
"libc_malloc_debug_backtrace",
],
cflags: [
"-Wall",
"-Werror",
"-Wno-error=deprecated-declarations",
],
sanitize: {
misc_undefined : [
"unsigned-integer-overflow",
"signed-integer-overflow",
],
},
}
Вывод
К сожалению, сборка не удалась:
error: frameworks/av/media/libaudioclient/Android.bp:39:1: "libaudioclient" depends on undefined module "libmylib"
06:32:39 soong bootstrap failed with: exit status 1
Я думаю, что не включает в себя мои предварительно скомпилированные файлы библиотеки при сборке aosp. как включить мои библиотеки в сборку aosp. где я должен указать mylib?
И я думаю, что теперь я использую soong в качестве встроенного инструмента вместо nkd-build в aosp, поэтому я должен изменить созданный выше Android .mk файл на Android .bp?
Если вы знаете мой неверный шаг, пожалуйста, дайте мне знать, как это сделать. спасибо.