Erro: SHARED_LIBRARIES falta STATIC_LIBRARIES Android.mk

votos
0

Tenho uma aplicação android que também tem c ++ dependências de código.

Quero construir esta aplicação como aplicação do sistema através da compilação com AOSP.

Na minha android.mk, eu tenho que primeiro importar uma biblioteca estática (abc.a) e, em seguida, usá-lo construir uma biblioteca compartilhada (xyz.so).

Estou enfrentando construir erro como erro: xyz (SHARED_LIBRARIES android-arm64) abc falta (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} )

Colocar erro imagem. digite descrição da imagem aqui

Publicado 10/10/2019 em 00:45
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

O sistema de plataforma de construção não é o mesmo que o utilizado pela NDK. Não existe essa regra como PREBUILT_STATIC_LIBRARYou PREBUILT_SHARED_LIBRARY, então essas regras não estão sendo executados. A plataforma usa BUILD_PREBUILT, e você tem que especificar o seu LOCAL_MODULE_CLASS. Veja https://android.googlesource.com/platform/packages/apps/Dialer/+/refs/heads/master/Android.mk para um exemplo.

CMake não é suportado em tudo na plataforma.

Você também provavelmente não quer usar Android.mk na plataforma. Esse sistema de construção (que não está relacionado com ndk-build) foi em seu caminho para fora por vários anos. Você vai querer usar Soong como descrito por https://source.android.com/setup/build .

Respondeu 11/10/2019 em 01:27
fonte usuário

votos
0

Aposto que seu arquivo de biblioteca estática é libabc.a , não abc.a . Se uma biblioteca estática pré-construídos não tem o lib prefixo, simplesmente renomeá-lo quando você prepará-lo.

Respondeu 10/10/2019 em 05:10
fonte usuário

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