MID内置APK教程
By YWW
首先申明,这里的方法介绍是针对我司自己项目中的具体开发板而做的。
Mg701内置APK有三种方式
一、 这种方法必须要自己编写Android.mk文件(关于Android.mk可以参考),在研发中,自己有源码时,可以将APK的源码包置于Android源码中(比如:alps/package/apps中),然后需要编写Android.mk文件。然后执行命令:
./makeMtk
二、 使用这种方法,会将此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/
5. 将从###.apk解压出来的库###.so拷到
alps/vendor/mediatek/
6. 在alps目录下执行
./mk
特别注意:依照上述步骤制作,在编译时会出现错误而停止编译,这主要是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=
3. 手动将so文件拷贝到(无so库的apk内置时,去掉此步骤)
cp ###.so alps/out/product/
4. 将APK文件拷贝到
cp ###.apk alps/out/product/
5. (假定处于alps根目录下)执行命令:
make snod(或者m snod命令)