MID內置APK教程
By YWW
首先申明,這裏的方法介紹是針對我司自己項目中的具體開發板而做的。
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命令)