zoukankan      html  css  js  c++  java
  • 开发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:

  • 相关阅读:
    HDU 2236 无题II
    P2220 [HAOI2012]容易题
    UVA11383 Golden Tiger Claw
    AT2272 [ARC066B] Xor Sum
    CentOS7 静默安装oracle12c
    SNAT与DNAT
    Linux下离线安装Docker
    TJOI2017 DNA 和 BJOI2015 隐身术
    LOJ6169 相似序列
    BJOI2019 删数
  • 原文地址:https://www.cnblogs.com/l2rf/p/5212193.html
Copyright © 2011-2022 走看看