您的位置:首页 > 移动开发 > Android开发

开发Android系统内置应用小记

2016-02-24 10:57 381 查看
Android系统内置应用可以使用更多的API、更高的权限,与开发普通应用最大的差别在于编译,内置应用编译需要用到Android.mk文件。下面是我在开发过程中的一些小记。

1、在AndroidMainfest.xml中添加android:sharedUserId="android.uid.system"。通过sharedUserId属性,相同Userid的apk配置运行在同一进程中,把程序的Userid配置成android.uid.system,也就是让程序运行在系统进程中,这样程序就有权限来读写系统配置。



2、编写Android.mk

ROOT_DIR:=$(callmy-dir)

include$(CLEAR_VARS)

ifeq($(BOARD_HAS_MOTO_2D_SCANNER),true)

#includethelibarary
LIBPATH:=$(ROOT_DIR)/libs/armeabi
LOCAL_PATH:=$(LIBPATH)
$(shellcp-rf$(LIBPATH)/*$(TARGET_OUT)/lib/)

include$(CLEAR_VARS)
LOCAL_MODULE_TAGS:=optional
LOCAL_PREBUILT_LIBS:=libbarcodereader.solibIAL.solibSDL.so
include$(BUILD_MULTI_PREBUILT)

#theapp
include$(CLEAR_VARS)
LOCAL_PATH:=$(ROOT_DIR)
LOCAL_PROGUARD_FLAG_FILES:=proguard.cfgs
LOCAL_MODULE_TAGS:=optional
LOCAL_CERTIFICATE:=platform
LOCAL_DEX_PREOPT:=false
LOCAL_PRIVILEGED_MODULE:=true
LOCAL_SRC_FILES:=$(callall-java-files-under,src)
LOCAL_PACKAGE_NAME:=CheckCamera
include$(BUILD_PACKAGE)

endif


Android.mk文件放在工程的根目录中。

当你的项目中要是用的.so库时,需要用下面命令将so库拷贝到系统对于的目录中(/vendor/lib或/system/lib)

#includethelibarary
LIBPATH:=$(ROOT_DIR)/libs/armeabi
LOCAL_PATH:=$(LIBPATH)
$(shellcp-rf$(LIBPATH)/*$(TARGET_OUT)/lib/)


LOCAL_CERTIFICATE:=platform配置为apk使用系统签名

LOCAL_DEX_PREOPT:=falseLOCAL_DEX_PREOPT用于配置编译时是否将apk和odex分离


3、在Android系统源码目录下build\target\product\core.mk文件中添加PackageName:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: