Android開發中內置apk程序

 

 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命令)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章