Chyba: SHARED_LIBRARIES chybějící STATIC_LIBRARIES Android.mk

hlasů
0

Mám android aplikaci, která má rovněž kódu jazyka C ++ závislosti.

Chci se postavit tuto aplikaci jako aplikace systému podle kompilace s AOSP.

Podle mého android.mk, musím nejprve importovat statické knihovny (abc.a) a pak použít to postavit sdílené knihovny (xyz.so).

Jsem čelí stavět chybu jako chyba: XYZ (SHARED_LIBRARIES android-arm64) chybějící 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} )

Upevnění chyby obrazovky. zadejte popis obrázku zde

Položena 10/10/2019 v 00:45
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Platforma build systém není stejný jako ten používaný NDK. Neexistuje žádná taková pravidla jako PREBUILT_STATIC_LIBRARYnebo PREBUILT_SHARED_LIBRARY, takže tato pravidla nejsou provedeny. Platforma využívá BUILD_PREBUILT, a vy budete muset zadat vaše LOCAL_MODULE_CLASS. Viz https://android.googlesource.com/platform/packages/apps/Dialer/+/refs/heads/master/Android.mk pro příklad.

CMake není podporován na platformě.

Také pravděpodobně nebudete chtít používat Android.mk v platformě. Že build systém (který nemá žádný vztah k NDK-build) byl na své cestě ven po dobu několika let. Budete chtít použít Soong jak je popsáno v https://source.android.com/setup/build .

Odpovězeno 11/10/2019 v 01:27
zdroj uživatelem

hlasů
0

Vsadím se, že vaše static file knihovna libabc.a , není abc.a . Je-li montované statická knihovna nemá lib předponu, jednoduše přejmenovat ji, když ji připravit.

Odpovězeno 10/10/2019 v 05:10
zdroj uživatelem

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