Android第三方应用集成到Android系统的解决方法

    最近项目中需要将开发中的应用继承到Android系统设备中,使得设备在出版本的时候Android系统会自带这个应用。如果这个我们自己开发的应用有用到第三方是用到第三方的SDK库的话,则还必须对这些库(.jar、.so)等进行统一的管理,操作步骤如下:

1. 将开发的第三方应用比如应用名为 VTest,项目结构如下图所示:


将项目移到Android系统源码:workspace_Android/packages/apps路径下 [workspace_Android为Android工程,名字是自定义命名的],注意Android工程首先必须是全编过的。

2. 在当前目录(workspace_Android/packages/apps/VTest)下新建一个 Android.mk 文件(这个文件的作用自己google),当然也可以从已有的系统项目,比如Browser中拷贝Android.mk文件然后修改。

修改如下所示:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

# Only compile source java files in this apk.
LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := VTest
LOCAL_CERTIFICATE := platform
LOCAL_STATIC_JAVA_LIBRARIES := baiduMapAPI
LOCAL_SHARED_LIBRARIES := baiduMapApiEngine

include $(BUILD_PACKAGE)
# ============================================================
include $(CLEAR_VARS)  

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=baiduMapAPI:libs/baidumapapi.jar
LOCAL_PREBUILT_LIBS :=baiduMapApiEngine:libs/armeabi/libBMapApiEngine_v1_3_5.so  
LOCAL_MODULE_TAGS := optional  
include $(BUILD_MULTI_PREBUILT)
[说明]:其中 LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_SHARED_LIBRARIES 为静态库和共享库,其中的区别自己搜索,这里不再阐述。

3. 设置好Android.mk文件之后就可以将一些不必要的文件配置文件删除。同时管理好第三方的SDK库,整个工程目录如下图2所示注意把(.jar.so) 统一放在lib包下管理


4. 以上步骤基本上可以完成单模块的编译要求,但是如果系统全的话,则可能这个模块会没办法编译到,所以我们还需要在路径 workspace_Android\build\target\product下的 core.mk文件中的 PRODUCT_PACKAGES 字段下追加需要编译的应用 VTest 名称。如下代码片段所示:

PRODUCT_PACKAGES := \
    ApplicationsProvider \
    Antitheft \
    VTest \
    BackupRestoreConfirmation \
    Browser \
    CarSettings \
    Contacts \


5. 然后就可以在Linux环境下进行编译了,如果有第三方库,编译在生成apk的同时,还会生成第三方库的so文件,如下图所示:所以要将它们各自push到Android指定目录里面。



你可能感兴趣的:(AndroidDevelop)