搜索
 找回密码
 立即注册

简单一步 , 微信登陆

Android源码中添加一个APK项目

作者:LiuJy | 时间:2015-12-4 15:59:52 | 阅读:4987| 只看该作者
添加一个APK项目可能是很多应用工程师经常遇到的问题,以下要介绍的是如何给Android源码中添加一个APK项目。
首先,假设已经在Eclipse下新建了一个名称为HelloApkAndroid应用项目,下面要做的就是要将这个项目移植到Android的源码中。
编译中枢会搜索Android根目录下除out目录外的所有子目录,并找出Android.mk文件作为一个子项目。因此,理论上讲可以将HelloApk项目放在任何目录下,只不过为了目录的清晰,厂商一般习惯于将自定义的项目放到vendor下的相应目录中,因此,本例就将HelloApk放到vendor/smc/k/apps目录下。
然后,删除HelloApk目录下的bingen目录,因为这两个目录是Eclipse编译的输出目录而其对Android编译系统而言是多余的,它甚至会认为这是两个源码目录。
接下来就需要新建一个Android.mk文件,并将其放到HelloApk目录下,该Android.mk的内容如以下代码所示。
       LOCAL_PATH:=$(call my-dir)
       Include $(CLEAR_VARS)
       LOCAL_MODULE_TAGS:=optional
       LOCAL_SRC_FILES :=$(callall-java-files-under,src)
       LOCAL_PACKAGE_NAME :=HelloApk
       LOCAL_SDK_VERSION :=current
       LOCAL_CERTIFICATE :=platform
       LOCAL_PROGUARD_FLAG_FILES :=proguard.cfg
       Include $(BUILD_PACKAGE)
以上mk文件说明如下:
LOCAL_MODULE_TAGS用于指定该项目的标签值,对应用类子项目而言,只能指定为三种情况,分别是optionaltestseng,本例中使用的是optional。因此,必须在device/smc/k/k.mk文件中包含该项目,如以下代码所示,否则产品将不会包含该项目。
PRODUCT_PACKAGES:=\
                     HelloMake \
                     HelloApk
LOCAL_SRC-FILE用于指定该项目中的Java源码,编译中枢中提供了一个函数,可以直接遍历指定目录下的所有Java文件,从而不必手工列出所有的Java文件列表。
LOCAL_PACKAGE_NAME用于描述APK项目的名称。
LOCAL_SDK_VERSION用于指定该APK项目所需的SDK版本,current代表了当前Android源码的版本。
LOCAL_CERTIFICATE用于指定该APK项目将使用何种签名文件签名最后生成的apk文件。系统一共包含四种签名文件,分别如下。
       platform,Framework源码最后将生成一个jar包,该jar包默认使用该类型签名。
       shared,一些系统应用程序使用该类型签名,比如Contacts等。
       user,一些私有项目使用该签名。
       tests,调试过程中一般使用该签名。
至于选择何种签名取决于项目的需求,一般当需要和特定的程序共享数据库资源时,两个项目必须拥有相同的签名。
LOCAL_PROGUARD_FLAG_FILES,该变量的作用暂不详,不过从实验的结果来看,应该赋值为Eclipse项目中的proguard.cfg文件。
最后,使用include包含BUILD_PACKAGE命令宏告诉编译中枢该项目的目标是一个APK程序。
以上介绍的是以源码的方式添加一个项目,有些时候可能还需要以一个APK文件的方式添加一个项目,在这种情况下,本质上添加的不是一个项目,而仅仅是一个文件。前面讲过,一个product中包含的项目分为三种,其中最后一种就是私有的项目或者文件,而这种方式实际中就是私有的文件,因此,需要在product相关的脚本文件中声明该product中包含该apk文件。本例中就应该在k.mk文件中添加以下代码,其中赋值的源路径是主机系统上的路径,而目标路径是设备上的路径,两者使用冒号分隔。
       PRODUCT_COPY_FILES :=\
              vendor/smc/k/helloapk/helloapk.apk:/system/app
该段代码仅仅是将该HelloApk.apk复制到最终设备的/system/app目录下。
如果想给该APK进行签名怎么办?对不起,编译中枢中没有单独提供这个功能,也就是说,在把HelloApk.apk复制到源码中前,应该事先给该APK进行签名。

收藏
收藏0
分享
分享
点赞
点赞1
反对
反对0
该会员没有填写今日想 ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版