1

いくつかのPocoライブラリ関数に静的ライブラリを使用するいくつかのネイティブコードを特徴とするAndroidプロジェクトがあります。私は現在、以下のmakeファイルの静的ライブラリのarm7ビルドにリンクしています。今、私がグーグルプレイでこのアプリを配布したい場合、移植性のために私はapkに他のアーキテクチャを含める必要があります。たとえば、arm6の静的libPocofoundation.aとarm7の静的libPocoFoundation.aをapkの共有ライブラリに含めるにはどうすればよいですか?

include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := PocoFoundation
LOCAL_SRC_FILES := Poco/libPocoFoundation.a   #<- How do i set this conditional-
#                                                 or add multiple architectures?
LOCAL_EXPORT_C_INCLUDES := /Users/poco-1.5.1-all/Foundation/include
LOCAL_EXPORT_CFLAGS := -DFOO=1 -fpermissive
LOCAL_EXPORT_LDLIBS := -llog
include $(PREBUILT_STATIC_LIBRARY)

Android.mk

LOCAL_PATH := $(call my-dir)
ROOT_PATH := $(LOCAL_PATH)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
LOCAL_PATH = $(ROOT_PATH)

include $(CLEAR_VARS)
#LOCAL_MODULE_TAGS    := eng
LOCAL_ARM_MODE       := arm
LOCAL_MODULE    := JsonPoco # Your own library.
LOCAL_SRC_FILES := JsonPoco.cpp \


 # Your own library source.
LOCAL_WHOLE_STATIC_LIBRARIES := PocoFoundation \
PocoJSON
LOCAL_LDLIBS     := -llog
LOCAL_CFLAGS     := -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY
LOCAL_CPPFLAGS   := -frtti -fexceptions 
include $(BUILD_SHARED_LIBRARY)
4

2 に答える 2

4

私がよく理解しているなら、あなたはこの静的ライブラリの異なるビルドを、異なるパスに配置したいと思うでしょう。

Rajithaが言ったように、複数のプラットフォームをサポートするための最初のステップは、でそれらに言及することApplication.mkです。たとえば、ARMv5 / 6およびARMv7をサポートするには、次のようにします。

APP_ABI := armeabi armeabi-v7a

次に、で、Android.mk現在構築されているプラ​​ットフォームに応じて、静的ライブラリに使用するパスを変更する必要があります。

ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    LOCAL_SRC_FILES := /path/to/armv-7/libPocofoundation.a
else
    LOCAL_SRC_FILES := /path/to/armv-6/libPocofoundation.a
endif

たとえば、x86をサポートする場合は、より多くのアーキテクチャでif/else条件を実行できます。

于 2013-03-27T09:07:31.953 に答える
0

を変更APP_ABIするApplication.mk

APP_ABI := all
于 2013-03-27T08:41:34.067 に答える