Hata: STATIC_LIBRARIES Android.mk eksik SHARED_LIBRARIES

oy
0

Ayrıca c ++ kod bağımlılıkları vardır bir android uygulaması var.

Ben AOSP ile derleyerek sistem uygulaması olarak bu uygulamayı kurmak istiyorum.

Benim android.mk, ben öncelikle statik kitaplığı (abc.a) ithal etmek zorunda ve sonra paylaşılan bir kitaplık oluşturmak kullanmak (xyz.so).

Ben hatayı inşa karşı karşıyayım : xyz (SHARED_LIBRARIES android-arm64) eksik abc (STATIC_LIBRARIES android-arm64) hatası

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

Hata ekran görüntüsü ekleme. Burada görüntü açıklama girin

Oluştur 10/10/2019 saat 00:45
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Platform inşa sistemi NDK tarafından kullanılan ile aynı değildir. Orada diye bir kural var PREBUILT_STATIC_LIBRARYya PREBUILT_SHARED_LIBRARY, bu yüzden bu kurallar idam edilmiyor. Platform kullanır BUILD_PREBUILTve size belirtmek gerekir LOCAL_MODULE_CLASS. Bkz https://android.googlesource.com/platform/packages/apps/Dialer/+/refs/heads/master/Android.mk bir örnek için.

CKağıt platformda hiç desteklenmemektedir.

Ayrıca muhtemelen platformda Android.mk kullanmak istemiyorum. (Ndk-yapı ilgisi yoktur) Bu yapı sistemi birkaç yıldır dışarı yolunda olmuştur. Sen tarif ettiği Soong kullanmak isteyeceksiniz https://source.android.com/setup/build .

Cevap 11/10/2019 saat 01:27
kaynak kullanıcı

oy
0

Ben senin statik kitaplık dosyası bahis libabc.a değil, abc.a . Bir önceden oluşturulmuş statik kütüphane yoksa lib öneki bunu hazırlamak zaman, basitçe yeniden adlandırın.

Cevap 10/10/2019 saat 05:10
kaynak kullanıcı

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