Errore: SHARED_LIBRARIES mancanti STATIC_LIBRARIES Android.mk

voti
0

Ho un'applicazione Android che ha anche C ++ dipendenze di codice.

Voglio costruire questa applicazione come applicazione di sistema per la compilazione con AOSP.

Nel mio android.mk, devo importare prima una libreria statica (abc.a) e quindi utilizzarlo costruire una libreria condivisa (xyz.so).

Sono di fronte a costruire errore come Errore: xyz (SHARED_LIBRARIES Android-arm64) abc mancante (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} )

Fissaggio errore di screenshot. entrare descrizione dell'immagine qui

È pubblicato 10/10/2019 alle 00:45
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

Il sistema di piattaforma di costruzione non è lo stesso di quello utilizzato dal NDK. Non esiste una regola, come PREBUILT_STATIC_LIBRARYo PREBUILT_SHARED_LIBRARY, quindi non vengono eseguite tali norme. La piattaforma utilizza BUILD_PREBUILT, e si deve specificare il vostro LOCAL_MODULE_CLASS. Vedere https://android.googlesource.com/platform/packages/apps/Dialer/+/refs/heads/master/Android.mk per un esempio.

CMake non è supportato a tutti nella piattaforma.

Inoltre, probabilmente non si vuole utilizzare Android.mk nella piattaforma. Questo sistema di compilazione (non legata alla NDK-build) è stato sulla sua via d'uscita per diversi anni. Ti consigliamo di utilizzare Soong come descritto da https://source.android.com/setup/build .

Risposto il 11/10/2019 a 01:27
fonte dall'utente

voti
0

Scommetto che il file libreria statica è libabc.a , non abc.a . Se una libreria statica precompilati non ha la lib prefisso, è sufficiente rinominarlo quando si prepara.

Risposto il 10/10/2019 a 05:10
fonte dall'utente

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