Android开发中内置apk程序
首先申明,这里的方法介绍是针对我司自己项目中的具体开发板而做的。
Mg701内置APK有三种方式
一、 这种方法必须要自己编写Android.mk文件(关于Android.mk可以参考),在研发中,自己有源码时,可以将APK的源码包置于Android源码中(比如:alps/package/apps中),然后需要编写Android.mk文件。然后执行命令:
./makeMtk <project_name> remake android <module_name>
二、 使用这种方法,会将此APK加入到编译系统。当使用new时,此APK仍然会编译到系统中。具体步骤为:
1. 在alps/packages/apps/下新建一个目录,假定为Test。
2. 将###.apk(需要内置的apk)改名为Test.apk并放置在第一步新建的Test目录下。
3. 请将以下内容复制并保存为Android.mk ,同样放在Test目录下
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := user
LOCAL_PREBUILT_PACKAGE := $(LOCAL_PATH)/Test.apk
LOCAL_PACKAGE_NAME := Test
LOCAL_CERTIFICATE := platform
include $(PREBUILT_PACKAGE)
注意:
要想用户能卸载内置的apk,请在Android.mk文件中把变量值
LOCAL_MODULE_TAGS由user改为tests
4. 在alps/build/target/product/<project_name>.mk文件中的PRODUCT_PACKAGES这一项添加一行Test
5. 将从###.apk解压出来的库###.so拷到
alps/vendor/mediatek/<project_name>/artifacts/out/target/product/<project_name>/system/lib/目录下(无so库的apk内置时,去掉此步骤)。
6. 在alps目录下执行
./mk <project_name> remake android。
特别注意:依照上述步骤制作,在编译时会出现错误而停止编译,这主要是LOCAL_MODULE_TAGS := user而引起的。
LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
所以将以上Android.mk中的user改为test或者potional都可以,至于user版本的编译是指在发布版中。我们这里的发布版的编译命令是:./makeMtk -opt=TARGET_BUILD_VARIANT=user yecon73v1 new
三、使用这种方法,仅仅操作out目录下的文件,来将APK和so文件打包到Image中,所以不会影响工程的源码或编译系统。但是当重新new时,新系统中不会有此APK。
1.(假定处于alps根目录下)执行命令:source ./build/envstup.sh
2. 执行命令:
export TARGET_PRODUCT=<project_name>
3. 手动将so文件拷贝到(无so库的apk内置时,去掉此步骤)
cp ###.so alps/out/product/<project_name>/system/lib/
4. 将APK文件拷贝到
cp ###.apk alps/out/product/<project_name>/system/app/
5. (假定处于alps根目录下)执行命令:
make snod(或者m snod命令)
Android开发中内置apk程序的更多相关文章
- 在android开发中如何使用JavaMail程序
javaMail,是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于Microsoft ...
- Android开发之使用意图调用内置应用程序
意图可以调用活动,也常被用来调用内置应用程序,如加载web页面,拨号页面,内置地图应用等等.下面就用例子来说明该用法. 效果图如下: 实现代码如下: 上图中的启动MyBrowser是用意图来调用MyW ...
- 在Eclipse+ADT中开发Android系统的内置应用
转自: http://www.iteye.com/topic/1050439 在Eclipse+ADT中开发Android系统的内置应用 Android系统内置有:Browser(浏览器).Mms( ...
- Android学习笔记(十七)——使用意图调用内置应用程序
使用意图调用内置应用程序 1.创建一个新的Android项目并命名为Intents,在main.xml文件里加入两个Button: <Button android:id="@+id/b ...
- Dagger2在Android开发中的应用
世界是普遍联系的,任何事物和个体都直接或间接相互依赖,在时空长河中共同发展.在面向对象的世界中,更是如此,类与类之间的依赖,关联关系,模块(亦或是分层架构中的层)之间的耦合关系,都是我们在软件开发实践 ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- 在android开发中使用multdex的方法-IT蓝豹为你整理
Android系统在安装应用时,往往需要优化Dex,而由于处理工具DexOpt对id数目的限制,导致其处理的数目不能超过65536个,因此在Android开发中,需要使用到MultiDex来解决这个问 ...
- 如何在Android开发中让你的代码更有效率
最近看了Google IO 2012年的一个视频,名字叫做Doing More With Less: Being a Good Android Citizen,主要是讲如何用少少的几句代码来改善And ...
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
随机推荐
- Redis是什么
Redis是什么 Redis是什么,首先Redis官网上是这么说的:A persistent key-value database with built-in net interface writte ...
- java Socket 列子 一些参数设置比较全
http://blog.csdn.net/a19881029/article/details/11596945
- FORM表单不刷新提交POST数据
很多时候表单太多项,JQ懒的去处理了 使用这个提交吧.和她讨论出去旅游,去哪里好呢,此时还和以前一样吗? function testaction(){ var f = $("#publish ...
- 一些特殊css
属性 描述 outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用. outline:#00FF00 dotted thick; 可以按顺序 ...
- aliyun opts 集锦
<一,>,aliyun 使用数据盘(aliyun新增数据盘使用,创建vg,aliyun 镜像系统本身未使用lvm-vg-lv) 1.1直接挂载文件系统 较易,不做分析 http://hel ...
- 删除input或textarea输入框在移动版显示的阴影(Safari/iPhone)
移动端浏览网页元素时,自动给input和textarea添加了内部阴影的效果,只需加入样式即可去除 input,textarea{-webkit-appearance: none;} input[ty ...
- PHP批量下载方法
PHP批量下载方法 界面: $.get(“< ?php echo url::base(true);?>inventory/report/buildCsv”, //后台路径 {‘para ...
- uva 10026 Shoemaker's Problem(排序)
题目连接:10026 Shoemaker's Problem 题目大意:有一个鞋匠接了n双要修的鞋子, 修每双鞋需要d天,每推迟一天修将亏损val元,问按什么样的顺序修鞋可以保证损失最少,如果有多种情 ...
- Linux/UNIX进程控制(1)
进程控制(1) 进程标识符 每一个进程都有肺腑的整形表示唯一的进程ID.按一个进程终止后,其进程ID就能够再次使用了.例如以下是几个典型进程的ID及其类型和功能. ID 进程名 ...
- 设计模式入门之桥接模式Bridge
Abstraction:抽象部分的父类,定义须要实现的接口.维护对实现部分的引用,从而把实现桥接到Implementor中去 Implementor:实现部分的接口 RefinedAbstractio ...