Android make 文件编写mk编译脚本

来源:互联网 发布:分析软件 编辑:程序博客网 时间:2024/05/22 07:40

Android.mk
LOCAL_PACKAGE_NAME := SystemUI //应用编译后的名称:SysemUI
LOCAL_PRIVILEGED_MODULE := true // 预置到 /system/pri-app/
不添加此属性,编译后的路径为/system/app/SystemUI
在同样具有系统权限情况下,/system/pri-app下的apk权限比/system/app下大
LOCAL_MODULE_PATH := (TARGETOUTDATAAPPS)//apk,LOCALMODULEPATH:=(TARGET_OUT)/vendor/operator/app
// 预置的apk用户可以卸载,恢复出厂设置可恢复
4.LOCAL_MODULE_PATH: 最后的目标安装路径
在build/core/envsetup.mk中定义;TARGET_ROOT_OUT:表示根文件系统;TARGET_OUT:表示system文件系统;TARGET_OUT_DATA:表示data文件系统。

AndroidManifest.xml:
android:sharedUserId=”android.uid.systemui” //SystemUI属于系统apk
coreApp=”true” //SystemUI属于核心apk
android:persistent=”true” //SystemUI不会被KILL,即被KILL后会自动重启

一、Android.mk添加第三方jar

LOCAL_PATH:= (callmydir)include(CLEAR_VARS)

LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt telephony-common
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v13 jsr305 fc909 quciifplib \
umeng
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := \
(callalljavafilesunder,src) src/com/android/settings/EventLogTags.logtagsLOCALRESOURCEDIR:=(LOCAL_PATH)/res
LOCAL_SRC_FILES += \
src/com/android/location/XT/IXTSrv.aidl \
src/com/android/location/XT/IXTSrvCb.aidl
LOCAL_PACKAGE_NAME := Settings
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
LOCAL_OVERRIDES_PACKAGES := Email
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
include frameworks/opt/setupwizard/navigationbar/common.mk
include $(BUILD_PACKAGE)

Use the following include to make our test apk.

ifeq (,(ONESHOTMAKEFILE))include(call all-makefiles-under,(LOCALPATH))endifinclude(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := umeng:libs/umeng-analytics-v6.0.1.jar

冒号前面为jar别名,后面为jar文件的实际路径

include $(BUILD_MULTI_PREBUILT)

一、编译一个简单的APK

LOCAL_PATH := (callmydir)include(CLEAR_VARS)

Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage

Tell it to build an APK

include $(BUILD_PACKAGE)
二、编译一个依赖静态.jar文件的APK

LOCAL_PATH := (callmydir)include(CLEAR_VARS)

List of static libraries to include in the package

LOCAL_STATIC_JAVA_LIBRARIES := static-library

Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage

Tell it to build an APK

include $(BUILD_PACKAGE)
注:LOCAL_STATIC_JAVA_LIBRARIES 后面应是你的APK程序所需要的JAVA库的JAR文件名。
三、编译一个需要platform key签名的APK

LOCAL_PATH := (callmydir)include(CLEAR_VARS)

Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage
LOCAL_CERTIFICATE := platform

Tell it to build an APK

include $(BUILD_PACKAGE)
注:LOCAL_CERTIFICATE 后面应该是签名文件的文件名
四、编译一个需要特殊vendor key签名的APK

LOCAL_PATH := (callmydir)include(CLEAR_VARS)

Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage
LOCAL_CERTIFICATE := vendor/example/certs/app

Tell it to build an APK

include $(BUILD_PACKAGE)
五、装载一个普通的第三方APK

LOCAL_PATH := (callmydir)include(CLEAR_VARS)

Module name should match apk name to be installed.

LOCAL_MODULE := LocalModuleName
LOCAL_SRC_FILES := (LOCALMODULE).apkLOCALMODULECLASS:=APPSLOCALMODULESUFFIX:=(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)
六、装载需要.so(动态库)的第三方apk

LOCAL_PATH := (mydir)include(CLEAR_VARS)
LOCAL_MODULE := baiduinput_android_v1.1_1000e
LOCAL_SRC_FILES := (LOCALMODULE).apkLOCALMODULECLASS:=APPSLOCALMODULESUFFIX:=(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

#
# copy the library to /system/lib
#

include (CLEARVARS)LOCALMODULE:=libinputcore.soLOCALMODULECLASS:=SHAREDLIBRARIESLOCALMODULEPATH:=(TARGET_OUT_SHARED_LIBRARIES)
LOCAL_SRC_FILES := lib/(LOCALMODULE)OVERRIDEBUILDMODULEPATH:=(TARGET_OUT_INTERMEDIATE_LIBRARIES)
include $(BUILD_PREBUILT)
七、编译一个静态java库

LOCAL_PATH := (callmydir)include(CLEAR_VARS)

Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

Any libraries that this library depends on

LOCAL_JAVA_LIBRARIES := android.test.runner

The name of the jar file to create

LOCAL_MODULE := sample

Build a static jar file.

include $(BUILD_STATIC_JAVA_LIBRARY)
注:LOCAL_JAVA_LIBRARIES表示生成的java库的jar文件名。

八、support包的添加

LOCAL_PATH := $(call my-dir)

—————————————

Build OmaDrmEngineDemo application

#

Output: OmaDrmEngineDemo.apk

—————————————-

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := \
$(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := OmaDrmEngineDemo

LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v4 \
android-support-v7-appcompat \
android-support-v7-recyclerview \
android-support-v7-gridlayout \
android-support-design
LOCAL_RESOURCE_DIR = \
$(LOCAL_PATH)/res \
frameworks/support/v7/appcompat/res \
frameworks/support/v7/recyclerview/res \
frameworks/support/v7/gridlayout/res \
frameworks/support/design/res

$(LOCAL_PATH)/../../../../prebuilts/sdk/current/support/v7/appcompat/res

LOCAL_AAPT_FLAGS := \
–auto-add-overlay \
–extra-packages android.support.v7.appcompat \
–extra-packages android.support.v7.recyclerview \
–extra-packages android.support.v7.gridlayout \
–extra-packages android.support.design

LOCAL_PROGUARD_ENABLED := disabled

LOCAL_DEX_PREOPT := false

LOCAL_MODULE_TAGS := eng development

include $(BUILD_PACKAGE)

1 0