Framework开发内置系统应用

目标

将APK内置到系统中

流程

一、为应用在apps中创建应用目录,并将apk拷贝至目录

Example:

  • 内置路径:packages/apps/TestApp
  • 应用目录:TestApp
  • 应用名称:TestApp.apk

二、为应用创建Android.mk

在应用目录下创建Android.mk文件

LOCAL_PATH:= $(call my-dir)
# Android.mk通常需要定义好LOCAL_PATH,表示当前工作路径,函数my-dir是编译系统提供的,返回当前路径

include $(CLEAR_VARS)
# 这一步操作主要是清空之前定义的LOCAL_XXX开头的变量,是必须要的操作。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 还是eng 版本都会编译此app

LOCAL_MODULE := TestApp
#模块名称

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
# 定义编译模块所需的源文件,应用名称必须要匹配一致

LOCAL_PRIVILEGED_MODULE := true
#增加权限
#将apk编进“/system/priv-app/目录”,如果为false,或者不加这句话,就会编进“/system/app” 目录, 二者区别在于前者的权限要高于后者,即不可卸载

LOCAL_MODULE_CLASS := APPS
#定义编译完成之后的类型:除了APPS,还有ETC,EXECUTABLES(.bin)SHARED_LIBRARIES(.so) 等选择值

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#定义编译完成之后模块的后缀

LOCAL_CERTIFICATE := platform
#定义使用原app签名可用选择项platform,shared,media

include $(BUILD_PREBUILT)
#定义编译出来的目标文件,如动态库,静态库,jar包以及apk

三、将应用添加至编译打包项中

  • 在Device中,找到Devices.mk文件,

  • 在PRODUCT_PACKAGES中添加应用目录+=TestApp

Example

路径:device/rockchip/rk3399pro/device.mk

PRODUCT_PACKAGES += \
    memtrack.$(TARGET_BOARD_PLATFORM) \
    WallpaperPicker \
    Launcher3 \
    libcrypto_vendor.vendor\
    TestApp

四、重新编译文件

首次编译:

make -j64
#64表示CPU进程数

END:刷机验证

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. Spring Framework: Spring是一个轻量级的Java应用系统框架,可以帮助开发人员构建各种企业级应用程序。它提供了许多模块,包括IOC容器,AOP框架,JDBC模板等,可以让开发人员更快地开发高质量的应用程序。 2. Play Framework: Play是一个高生产力的Java框架,专注于Web应用程序的开发。它具有轻量级,快速开发和简单易用等优点,支持Java和Scala语言。 3. Struts Framework: Struts是一个基于MVC模式的Web应用程序框架,它提供了一个控制器,用于处理请求和响应,并将模型和视图分离。它支持JSP和Velocity模板,还可以与Hibernate等ORM框架集成。 4. Hibernate Framework: Hibernate是一个ORM(对象关系映射)框架,用于将Java对象映射到关系型数据库中。它提供了一个简单易用的API,可以帮助开发人员更快地开发应用程序,并提高应用程序的性能。 5. Apache Camel: Apache Camel是一个开源的集成框架,用于将不同的应用程序和服务集成在一起。它提供了一个灵活的路由引擎,可以将消息从一个端点传递到另一个端点,并支持多种协议和数据格式。 6. Vaadin Framework: Vaadin是一个Web应用程序框架,用于构建基于浏览器的用户界面。它提供了一个组件库,可以轻松创建各种UI元素,例如表格,表单,图表等。它还提供了一个服务器端框架,可以处理所有UI事件和数据交互。 7. Dropwizard Framework: Dropwizard是一个轻量级的Web应用程序框架,专注于快速开发RESTful服务。它提供了许多开箱即用的组件,例如Jetty服务器,Jackson JSON解析器等,可以帮助开发人员快速构建高质量的服务。 8. Grails Framework: Grails是一个基于Groovy编程语言的Web应用程序框架,用于构建高效,可扩展和易于维护的应用程序。它提供了许多内置的特性,例如ORM,路由引擎,安全性,缓存等,可以让开发人员更快地开发应用程序。 9. Apache Stripes: Apache Stripes是一个基于MVC模式的Web应用程序框架,专注于开发简单,快速和易于维护的应用程序。它提供了一个简单易用的API,可以帮助开发人员更快地开发应用程序,并提高应用程序的性能。 10. Apache Wicket: Apache Wicket是一个Web应用程序框架,用于构建复杂的Web应用程序。它提供了一个组件库,可以轻松创建各种UI元素,例如表格,表单,图表等。它还提供了一个组件模型,可以将UI和业务逻辑分离。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值