Aufruf innere Android.mk-Datei erstellen Sie vorgefertigte Bibliotheken funktioniert nicht
Ich habe ein Projekt organisiert, wie folgt:
project/jni/Android.mk
project/jni/libA/Android.mk
project/jni/libB/Android.mk
project/lib/armeabi/libA.so
project/lib/armeabi/libB.so
Mein libA und libB sind set auf meinem main-Android.mk als vorgefertigte libs, weil ich nicht wollen, dass Sie gebaut werden, jedes mal, wenn ich bauen meine wichtigsten Android.mk. Hier ist, was ich habe:
LOCAL_PATH := $(call my-dir)
###########################################
# Declare the prebuilt A library
###########################################
include $(CLEAR_VARS)
LOCAL_MODULE := A-prebuilt
LOCAL_SRC_FILES := ../lib/$(TARGET_ARCH_ABI)/libA.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/libA
include $(PREBUILT_SHARED_LIBRARY)
###########################################
# Declare the prebuilt B library
###########################################
include $(CLEAR_VARS)
LOCAL_MODULE := B-prebuilt
LOCAL_SRC_FILES := ../lib/$(TARGET_ARCH_ABI)/libB.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/libB/include
include $(PREBUILT_SHARED_LIBRARY)
###########################################
# Declare our main module
###########################################
include $(CLEAR_VARS)
LOCAL_MODULE := libjnimain
LOCAL_SRC_FILES := \
main.c
# for logging
LOCAL_LDLIBS += -llog
# include the prebuilt libraries
LOCAL_SHARED_LIBRARIES := \
A-prebuilt \
B-prebuilt
#This will include all Android.mk files in sub-directories
#of the current build file's path.
include $(call all-subdir-makefiles)
include $(BUILD_SHARED_LIBRARY)
Das Hauptproblem, das ich habe ist Gebäude die fertige Bibliotheken. Ich kann nicht scheinen, um in der Lage zu sein die libA oder libB durch den Aufruf Ihrer Android.mk, weil wenn ich die wichtigsten Android.mk genannt wird. Jede Hilfe würde geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie der name schon sagt, die vorgefertigte Bibliotheken, die nie gebaut werden (Sie sind bereits gebaut). Wenn Sie brauchen, um zu bauen das vorgefertigte Bibliotheken wieder, Sie müssen Ihre Quellen und ändern Sie Android.mk, um diese Quellen zu bauen, die Module wieder mit BUILD_SHARED_LIBRARY. Sie können jedoch auch die ganze Bibliothek Quellcode in eine
libs
Ordner und Android.mk zu verkaufen.Bitte beachten Sie, dass die Bibliotheken, die Sie hinzufügen, werden nur gebaut, wenn Ihre änderungen am Quelltext und nicht bekommen betroffen, die von anderen Modulen ändern.
Ein einfaches Beispiel ist wie folgt:
Zunächst das layout des Projekts. Es gibt 3 Module:
Datei-Layout:
Nächsten, dem obersten Android.mk (es ist in jni/):
Die jni/libs/Android.mk, für inklusive aller libs:
Schließlich, Android.mk von libver.so (jni/libs/libver/Android.mk):
Im obigen Beispiel, die libmagic.so, wird nie gebaut werden, da es eine vorgefertigte lib. Allerdings libver.so gebaut wird, jedes mal wenn libver Quellen ändern. Es wird nicht wieder aufgebaut werden, wenn getver Quellen ändern. Illustrierte Beispiel unten(ich benutze touch Befehl zu simulieren ändern Sie in getver.c-Quelle):
Ersten mal bauen:
Simulieren Bearbeitung von getver Modul Quellen:
Neu erstellen(beachten Sie libver.so ist NICHT umgebaut):
Simulieren Bearbeitung von libver.so Quellen
Neu erstellen(beachten Sie getver neu aufgebaut wird, wie es hängt davon ab, libver.also:
Können Sie die folgenden in höheren Android.mk-Dateien rekursiv Durchlaufen der Verzeichnisse. Sie würde setzen Sie in Projekt/jni/Android.mk und es würde gehen in libA und libB und Prozess Android.mk-Dateien in Ihnen.