編輯:關於Android編程
BUILD_STATIC_LIBRARY:編譯為靜態庫。
BUILD_SHARED_LIBRARY :編譯為動態庫 BUILD_EXECUTABLE:編譯為Native C可執行程序
2.1.2:BUILD_SHARED_LIBRARY:指向一個編譯腳本,它收集自從上次調用 include $(CLEAR_VARS) 後的所有LOCAL_XXX信息。並決定如何將你列出的Source編譯成一個動態庫。 注意,在包含此文件前,至少應該包含:LOCAL_MODULE and LOCAL_SRC_FILES
例如: include $(BUILD_SHARED_LIBRARY)
2.1.3:BUILD_STATIC_LIBRARY:與前面類似,它也指向一個編譯腳本,收集自從上次調用 include $(CLEAR_VARS) 後的所有LOCAL_XXX信息。並決定如何將你列出的Source編譯成一個靜態庫。include $(BUILD_STATIC_LIBRARY)
2.1.4: BUILD_EXECUTABLE: 與前面類似,它也指向一個編譯腳本,收集自從上次調用 include $(CLEAR_VARS) 後的所有LOCAL_XXX信息。並決定如何將你列出的Source編譯成一個可執行Native程序。include $(BUILD_EXECUTABLE)
2.1.5:PREBUILT_SHARED_LIBRARY:把這個共享庫聲明為 “一個” 獨立的模塊。LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)armeabi For ARMv5TE armeabi-v7a
2.1.10:TARGET_ABI 2.2:
NDK提供的功能宏: GNU Make 提供的功能宏,只有通過類似: $(call function) 的方式來得到其值,它將返回文本化的信息。
2.2.1: my-dir: $(call my-dir):
返回最近一次include的Makefile的路徑。通常返回Android.mk所在的路徑。它用來作為Android.mk的開頭來定義LOCAL_PATH.
LOCAL_PATH := $(call my-dir)請注意:返回的是最近一次include的Makefile的路徑。所以在Include其它Makefile後,再調用$(call my-dir)會返回其它Android.mk 所在路徑。
例如:
LOCAL_PATH := $(call my-dir) ... declare one module
include $(LOCAL_PATH)/foo/Android.mk
LOCAL_PATH := $(call my-dir) ... declare another module
則第二次返回的LOCAL_PATH 為:$PATH/foo。 而非$PATH. 2.2.2: all-subdir-makefiles: 返回一個列表,包含'my-dir'中所有子目錄中的Android.mk。
例如: 結構如下:
sources/foo/Android.mk sources/foo/lib1/Android.mk sources/foo/lib2/Android.mk在If sources/foo/Android.mk 中, include $(call all-subdir-makefiles) 那則自動include 了sources/foo/lib1/Android.mk and sources/foo/lib2/Android.mk。
2.2.3:this-makefile: 當前Makefile的路徑。
2.2.4:parent-makefile: 返回include tree中父Makefile 路徑。 也就是include 當前Makefile的Makefile Path。
2.2.5:import-module: 允許尋找並inport其它modules到本Android.mk中來。 它會從NDK_MODULE_PATH尋找指定的模塊名。
$(call import-module,)
此類變量用來給Build System描述模塊信息。在'include $(CLEAR_VARS)' 和 'include $(BUILD_XXXXX)'之間。必須定義此類變量。
include $(CLEAR_VARS) script用來清空這些變量。include $(BUILD_XXXXX)收集和使用這些變量。
2.3.1: LOCAL_PATH: 這個值用來給定當前目錄。必須在Android.mk的開是位置定義之。
例如:
LOCAL_PATH := $(call my-dir) LOCAL_PATH不會被include $(CLEAR_VARS) 清理。
2.3.2: LOCAL_MODULE: modules名。在include $(BUILD_XXXXX)之前,必須定義這個變量。此變量必須唯一且不能有空格。 通常,由此變量名決定最終生成的目標文件名。
2.3.3: LOCAL_MODULE_FILENAME: 可選。用來override LOCAL_MODULE. 即允許用戶重新定義最終生成的目標文件名。
LOCAL_MODULE := foo-version-1 LOCAL_MODULE_FILENAME := libfoo
2.3.4:LOCAL_SRC_FILES: 為Build Modules而提供的Source 文件列表。不需要列出依賴文件。
注意:文件相對於LOCAL_PATH存放,且可以提供相對路徑。 例如:
LOCAL_SRC_FILES := foo.c \ toto/bar.c
2.3.5: LOCAL_CPP_EXTENSION: 指出C++ 擴展名。(可選)
LOCAL_CPP_EXTENSION := .cxx 從NDK R7後,可以寫多個:LOCAL_C_INCLUDES := sources/foo LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
2.3.8: LOCAL_CFLAGS: 一個可選的設置,在編譯C/C++ source 時添加如Flags。 用來附加編譯選項。
注意:不要嘗試在此處修改編譯的優化選項和Debug等級。它會通過您Application.mk中的信息自動指定。 也可以指定include 目錄通過:LOCAL_CFLAGS += -I。 這個方法比使用LOCAL_C_INCLUDES要好。因為這樣也可以被ndk-debug使用。
2.3.9: LOCAL_CXXFLAGS:
LOCAL_CPPFLAGS的別名。
2.3.10: LOCAL_CPPFLAGS:
C++ Source 編譯時添加的C Flags。這些Flags將出現在LOCAL_CFLAGS flags 的後面。
2.3.11: LOCAL_STATIC_LIBRARIES: 要鏈接到本模塊的靜態庫list。(built with BUILD_STATIC_LIBRARY)
2.3.12: LOCAL_SHARED_LIBRARIES: 要鏈接到本模塊的動態庫。
2.3.13:LOCAL_WHOLE_STATIC_LIBRARIES: 靜態庫全鏈接。 不同於LOCAL_STATIC_LIBRARIES,類似於使用--whole-archive 2.3.14:LOCAL_LDLIBS: linker flags。 可以用它來添加系統庫。 如 -lz:
LOCAL_LDLIBS := -lz
2.3.15: LOCAL_ALLOW_UNDEFINED_SYMBOLS:
2.3.16: LOCAL_ARM_MODE: 缺省模式下,ARM目標代碼被編譯為thumb模式。每個指令16位。如果指定此變量為:arm。 則指令為32位。
LOCAL_ARM_MODE := arm 其實也可以指定某一個或者某幾個文件的ARM指令模式。
2.3.17: LOCAL_ARM_NEON: 設置為true時,會講浮點編譯成neon指令。這會極大地加快浮點運算(前提是硬件支持) 只有targeting 為 'armeabi-v7a'時才可以。
2.3.18:LOCAL_DISABLE_NO_EXECUTE:
2.3.19: LOCAL_EXPORT_CFLAGS: 定義這個變量用來記錄C/C++編譯器標志集合,並且會被添加到其他任何以LOCAL_STATIC_LIBRARIES和LOCAL_SHARED_LIBRARIES的模塊的LOCAL_CFLAGS定義中
LOCAL_SRC_FILES := foo.c bar.c.arm
附1: Android.mk與jni目錄的關系:這是因為,當前Android.mk 未放置在jni目錄內。所以ndk-build無法找到Android.mk. (ndk-build會從此目錄向上一直找到jni目錄,並從jni目錄中找到Android.mk)且NDK_PROJECT_PATH, APP_BUILD_SCRIPT, NDK_APPLICATION_MK 是一個空的值。
如何解決這個問題呢。首先當然是創建jni目錄,並在其中添加Android.mk和Application.mk.也可以正常編譯。
注意:此處NDK版本為NDK R7C.(不同NDK版本,ndk-build所產生的Makefile並不完全相同)
1、完整生命周期 3、一個新的Activity實例 系統首先調用新Activity的onCreate()方
微信的訂閱號有很多很搞笑的視頻我們怎麼下載下來?朋友圈裡鏈接的視頻非常珍貴如何保存?相信大家都很想知道吧,下面讓我來給大家介紹怎麼下載微信中的視頻的方法吧。
首先新建一個binding Library項目,項目名隨意,我這裡起名Bmap 然後將jar文件放入jars目錄下,生成屬性改為EmbeddedJar這時候如果
android actionbar這個導航欄,相信大家愛已經不陌生了。自從android 3.0以上就有了這個導航欄功能。在郭大神博客有詳細介紹actionbar功能。我