如何临时生成共享库并将其打包到APK包中

时间:2017-04-20 02:52:02

标签: android makefile android-ndk android-build android-install-apk

我有一个名为" ABC"需要打包一个名为" libxxx-jni.so"的jni共享库。所以源代码树如下所示:

ABC
+- Android.mk
+- java
+- res
+- jni
    +- Android.mk
    +- xxx.cpp

ABC app的Android.mk是:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := ABC
LOCAL_SRC_FILES := $(call all-java-files-under, java)

LOCAL_RESOURCE_DIR += \
        $(LOCAL_PATH)/res

LOCAL_JNI_SHARED_LIBRARIES := libxxx-jni

include $(BUILD_PACKAGE)

# Also build sub-targets under this one: the shared library.  
include $(call all-makefiles-under, $(LOCAL_PATH))

jni库xxx的Android.mk是:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libxxx-jni
LOCAL_SRC_FILES := xxx.cpp

LOCAL_SHARED_LIBRARIES := \
    libutils \
    libcutils

LOCAL_LDLIBS += -llog

LOCAL_C_INCLUDES += \
    $(JNI_H_INCLUDE)

include $(BUILD_SHARED_LIBRARY)

我将这些源代码放在android aosp源代码树中,并使用android构建环境构建整个系统。

我的问题是我需要将libxxx-jni.so打包到我的设置apk中。目前,在构建完成后,我看到libxxx-jni.so位于/ system / lib。在APK的lib子文件夹中,我只看到了/system/lib/libxxx-jni.c的链接。

这不是我的期望。我想在我的APK的lib子文件夹中打包,而不仅仅是链接。而且我不想要libxxx-jni.so出现在/ system / lib中。

我没有使用IDE(eclipse或android studio),我只在aosp源代码树中使用Android.mk。

我应该如何修改这些Android.mk以满足我的期望?感谢。

0 个答案:

没有答案