• 开发Android系统内置应用小记


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

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

    2、编写Android.mk

    ROOT_DIR := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    ifeq ($(BOARD_HAS_MOTO_2D_SCANNER), true)
    
    # include the libarary
    LIBPATH := $(ROOT_DIR)/libs/armeabi
    LOCAL_PATH := $(LIBPATH)
    $(shell cp -rf $(LIBPATH)/*  $(TARGET_OUT)/lib/)  
    
    include $(CLEAR_VARS)
    LOCAL_MODULE_TAGS := optional
    LOCAL_PREBUILT_LIBS := libbarcodereader.so libIAL.so libSDL.so
    include $(BUILD_MULTI_PREBUILT)
    
    
    
    # the app
    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 := $(call all-java-files-under, src)
    LOCAL_PACKAGE_NAME := CheckCamera
    include $(BUILD_PACKAGE)
    
    
    
    endif

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

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

    # include the libarary
    LIBPATH := $(ROOT_DIR)/libs/armeabi
    LOCAL_PATH := $(LIBPATH)
    $(shell cp -rf $(LIBPATH)/*  $(TARGET_OUT)/lib/)  
    LOCAL_CERTIFICATE := platform 配置为apk使用系统签名

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

     3、在Android系统源码目录下build argetproductcore.mk文件中添加Package Name:

  • 相关阅读:
    为了抓包某APP所做的尝试(to be continued)
    VirtualBox的使用的一些Tips 网络配置|硬盘扩充
    斜线和反斜线简要历史,为什么windows和unix采用不同的路径分隔符
    求出二维数组主对角线、次对角线以及周边元素之和
    C#计算两个时间的时间差,精确到年月日时分秒
    C#获取MP3,WMA信息
    C#窗体随意移动
    DEV GridControl小结
    DEV 皮肤的使用
    C#窗体阴影
  • 原文地址:https://www.cnblogs.com/l2rf/p/5212193.html
Copyright © 2020-2023  润新知