Błąd: SHARED_LIBRARIES brakujące STATIC_LIBRARIES Android.mk

głosy
0

Mam Android, który ma również C ++ zależności kodu.

Chcę zbudować tę aplikację jako aplikacja systemu kompilując z AOSP.

W moim android.mk, muszę najpierw zaimportować bibliotekę statyczną (abc.a), a następnie użyć go budować wspólną bibliotekę (xyz.so).

Jestem stoi budować błąd jako błąd: xyz (SHARED_LIBRARIES Android arm64) brakujący abc (STATIC_LIBRARIES android-arm64)

Android.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} )

Mocowanie błędzie ekranu. wprowadzić opis obrazu tutaj

Utwórz 10/10/2019 o 00:45
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

System nie budować platforma jest taka sama jak ta stosowana przez NDK. Nie ma takich jak zasada PREBUILT_STATIC_LIBRARYalbo PREBUILT_SHARED_LIBRARY, więc przepisy te nie są wykonywane. Platforma wykorzystuje BUILD_PREBUILT, i trzeba określić swoje LOCAL_MODULE_CLASS. Zobacz https://android.googlesource.com/platform/packages/apps/Dialer/+/refs/heads/master/Android.mk dla przykładu.

CUpewnij nie jest obsługiwana w ogóle w platformie.

Ty też pewnie nie chcesz używać Android.mk w platformie. Że system budowania (która nie jest związana z NDK-build) był na jego drodze od kilku lat. Będziemy chcieli, aby korzystać Soong jak opisał https://source.android.com/setup/build .

Odpowiedział 11/10/2019 o 01:27
źródło użytkownik

głosy
0

Założę plik biblioteki statyczne jest libabc.a nie abc.a . Jeśli Montowane biblioteka statyczna nie ma lib prefiksu, po prostu zmień go, gdy go przygotować.

Odpowiedział 10/10/2019 o 05:10
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more