-
Difference between (share)java library and static java library
-
static java library:
LOCAL_STATIC_JAVA_LIBRARIES: will build the specified .jar into the application, the .jar must be built as static java library
BUILD_STATIC_JAVA_LIBRARY: build .jar as static java library
in the depended project -
shared java library
LOCAL_JAVA_LIBRARIES: won't build .jar into the application, the .jar must be built as shared java library
BUILD_JAVA_LIBRARY: build .jar as shared library
-
static java library:
-
Dependency on native libraries (thity-part libries)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := libbaidumapapi
LOCAL_JNI_SHARED_LIBRARIES := libBMapApiEngine_v1_3_1
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := MyMaps
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=libbaidumapapi:libs/baidumapapi.jar
LOCAL_PREBUILT_LIBS :=libBMapApiEngine_v1_3_1:libs/armeabi/libBMapApiEngine_v1_3_1.so
LOCAL_MODULE_TAGS := optional
include $(BUILD_MULTI_PREBUILT)
-
How build system find the projects
Android build system will tranverse all folders under the source tree until Android.mk is found, if you want build system continue to tranverse sub-folders, you'd add this line in Android.mk: include $(call all-makefiles-under, $(CUR_SDK_PATH))
-
LOCAL_MODULE_TAGS标志
LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
那么这些所谓的版本又是什么呢?
就是lunch 以后要选择的版本
eng This is the default flavor. A plain "make" is the same as "make eng". droid is an alias for eng.
* Installs modules tagged with: eng, debug, user, and/or development.
* Installs non-APK modules that have no tags specified.
* Installs APKs according to the product definition files, in addition to tagged APKs.
* ro.secure=0
* ro.debuggable=1
* ro.kernel.android.checkjni=1
* adb is enabled by default.
user "make user" This is the flavor intended to be the final release bits.
* Installs modules tagged with user.
* Installs non-APK modules that have no tags specified.
* Installs APKs according to the product definition files; tags are ignored for APK modules.
* ro.secure=1
* ro.debuggable=0
* adb is disabled by default.
userdebug "make userdebug" The same as user, except:
* Also installs modules tagged with debug.
* ro.debuggable=1
* adb is enabled by default.Build flavors/types
When building for a particular product, it's often useful to have minorvariations on what is ultimately the final release build. These are thecurrently-defined "flavors" or "types" (we need to settle on a real namefor these).
eng This is the default flavor. A plain "make" is the same as "make eng". droid is an alias for eng. - Installs modules tagged with: eng, debug, user, and/or development.
- Installs non-APK modules that have no tags specified.
- Installs APKs according to the product definition files, in addition to tagged APKs.
- ro.secure=0
- ro.debuggable=1
- ro.kernel.android.checkjni=1
- adb is enabled by default.
user "make user" This is the flavor intended to be the final release bits.
- Installs modules tagged with user.
- Installs non-APK modules that have no tags specified.
- Installs APKs according to the product definition files; tags are ignored for APK modules.
- ro.secure=1
- ro.debuggable=0
- adb is disabled by default.
userdebug "make userdebug" The same as user, except:
- Also installs modules tagged with debug.
- ro.debuggable=1
- adb is enabled by default.
If you build one flavor and then want to build another, you should run"make installclean" between the two makes to guarantee thatyou don't pick up files installed by the previous flavor. "makeclean" will also suffice, but it takes a lot longer.
-
xxx