android 內置系統app Android.mk makefile 文件编写 (缺动态库编译和引用动态库)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/engineer_james/article/details/82111473

举例 MUSIC

参考https://www.cnblogs.com/wainiwann/p/3837936.html C编译的配置

  • Android.mk
LOCAL_PATH:= $(call my-dir)
#每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。
#宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。

include $(CLEAR_VARS)
#CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.
#例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.
#这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能#避免相互影响。

LOCAL_MODULE_TAGS := optional
#user: 指该模块只在user版本下才编译
#eng: 指该模块只在eng版本下才编译
#tests: 指该模块只在tests版本下才编译
#optional:指该模块在所有版本下都编译 表示输出在out/target/product/../system

LOCAL_SRC_FILES := $(call all-java-files-under, src) \
    src/com/android/music/IMediaPlaybackService.aidl
#宏all-java-files-under定义在build/core/definitions.mk中
# 还可以加aidl
LOCAL_PACKAGE_NAME := Music
# 添加包名
LOCAL_SDK_VERSION := current
# 使用当前SDK版本
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
# 加入代码混淆
include $(BUILD_PACKAGE)
#编译打包成APK文件

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
# 编译子目录的makedile文件

[tips]
” := ” 只看赋值之前的
“=” 后面的赋值会覆盖前面的变量
“+=” 表示增加

  • 指定依赖的共享java类库
LOCAL_JAVA_LIBRARIES += telephony-common
  • 使用第三方静态库,添加如下:
LOCAL_STATIC_JAVA_LIBRARIES := xsocket jackson-mapper logging jackson-core javatar log4j

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := xsocket:lib/xSocket-2.8.14.jar \
    jackson-mapper:lib/jackson-mapper-asl-1.6.2.jar \
    logging:lib/commons-logging.jar \
    jackson-core:lib/jackson-core-asl-1.6.2.jar \
    javatar:lib/javatar-2.5.jar \
    log4j:lib/log4j-1.2.15.jar
  • 添加android 签名
# system
 LOCAL_CERTIFICATE := platform 
 AndroidManifest.xml的manifest节点中添加 android:sharedUserId=”android.uid.system# shared
 LOCAL_CERTIFICATE := media 
 AndroidManifest.xml的manifest节点中增加android:sharedUserId=”android.uid.shared#media
 LOCAL_CERTIFICATE := media 
 AndroidManifest.xml的manifest节点中增加 android:sharedUserId=”android.media

使用第三方库,就需要引入 预编译

include $(BUILD_MULTI_PREBUILT)

Music 的App 写完了,还需要在device 目录下
device/XXX/XXX/device.mk 添加

# Muisc
PRODUCT_PACKAGES += Music

然后删除make -j8 重新编译,增量编译

补充:

LOCAL_DEX_PREOPT := false

表示不会生成odex文件,有时候,需要在user-debug模式去开发,但是这个应用只想在apk 包下调试,这就特别好用,重新编译之前,将out 目录下,app的目录删除,重新make

猜你喜欢

转载自blog.csdn.net/engineer_james/article/details/82111473