您的位置:首页 > 移动开发 > Android开发

自定义程序 第三方apk 编译进Android方法

2013-09-27 12:47 387 查看
Android的编译系统详细的讲解见《Android内核剖析》柯元旦 第18章

自己试着按照书上和网上的方法编译,不知道为什么就老是出问题。不知道是不是因为系统版本的原因,网上许多教程都有问题,断断续续弄了两天终于弄完了。

一,自定义程序

有源码那种==,可以完全模仿系统内置的程序,如Calender,等,这里我的项目名字是HelloAndroid。

1,理论上,源码放置的位置没什么关系。我是放在packages/app里面,

在项目根目录下新建Android.mk 内容可以从Calender里面的Android.mk直接复制 然后修改下

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under,src)

# TODO: Remove dependency of application on the test runner (android.test.runner)

# library.

LOCAL_JAVA_LIBRARIES := android.test.runner

LOCAL_STATIC_JAVA_LIBRARIES += android-common

LOCAL_PACKAGE_NAME := HelloAndroid

include $(BUILD_PACKAGE)

# Use the following include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

具体修改了 LOCAL_PACKAGE_NAME := HelloAndroid 即改为应用的名字,其他命令的具体含义可以参见我推荐的那本书。

2,修改跟目录/build/target/product/下的generic.mk文件添加上你的应用名字如下:

PRODUCT_PACKAGES := \

AccountAndSyncSettings \

DeskClock \

AlarmProvider \

Bluetooth \

Calculator \

Calendar \

Camera \

CertInstaller \

DrmProvider \

Email \

Gallery3D \

LatinIME \

Launcher2 \

Mms \

Music \

Provision \

Protips \

QuickSearchBox \

Settings \

Sync \

SystemUI \

Updater \

CalendarProvider \

SyncProvider \

HelloAndroid \

然后就可以了~,由于make机制的原因又是需要修改下原来的文件 才会重新make, 不过最保险的做法,还是重新make clean 然后再make......

二,把第三方apk编译进android系统

这个可能做ROM的会比较熟悉一点。。。下面推荐我认为最简单的方法==

使用yaffs2

yaffs2包含了两个工具 mkyaffs2image和mkyaffsimage 也就是可以直接把一个文件夹生成system.img的工具

1,yaffs2安装方法:

apt安装 git

新建一个文件夹 yaffs2 进入到该文件夹下执行git clone git://www.aleph1.co.uk/yaffs2 完成后进入yaffs2 直接make就行了。

2,生成system.img

进入编译好的Android系统目录 /out/target/product/generic 把你的apk放入当前目录下的/system/app目录下 ,如果该apk中有其他依赖的库
可以解压apk,将其中的lib/ .so文件copy到/system/lib下

然后在/out/target/product/generic 下执行

mkyaffs2image -f system system.img

也就是把当前的system打包成system.img

emulator -system system.img -data userdata.img -ramdisk ramdisk.img
指定下运行的系统为加载刚刚的system.img就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: