Android MMS定制

来源:互联网 发布:软件开发年终工作总结 编辑:程序博客网 时间:2024/06/06 09:38

MMS,也就是Android里面的短信系统,可以收发短信,彩信等。接下来我们对MMS工程进行编译和修改,增加我们自己要的功能,然后再下载到真机中运行。

一、编译MMS工程

1、编译MMS工程可以在源码树中编译,也可以在eclipse中编译。先从源码树中复制MMS工程,然后导入到eclipse中,会发现有很多没有的库,接下来创建一个User 库,勾选as system lib,然后导入源码树中的class.jar,然后整个工程都是正确的。

2、修改eclipsec.ini文件,把256m等数字全部改大,改成1024m等。

3、编译,一般情况下几秒就编完,假如编译很久都没编完,就直接在任务管理器终止,再次修改eclipsec.ini文件。

4、要将Mms.apk下载到虚拟机中运行,必须要先删除虚拟机里面的Mms.apk,直接使用adb命令无法删除,因为没有权限。先输入adb remount,获取最高权限,再执行adb rm /system/app/Mms.apk ,顺便把data/data中的com.android.mms也删除了。

5、点击eclipse中的运行按钮,顺利的话就能成功运行。

有时候会出现这个

Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE    --没有卸载干净。
Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE    ---没有系统签名,使用了android:sharedUserId="android.uid.system"的缘故。

使用目标系统的platform密钥来重新给apk文件签名。 首先找到密钥文件,在Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem 两个文件。 然后用Android提供的Signapk工具来签名,signapk的源代码是 在"build\tools\signapk"下, 我编译好之后的路径在out/host/linux-x86/framework下。用法为"java -jar signapk.jar  platform.x509.pem platform.pk8 input.apk output.apk"。

二、修改工程

1、MmsApp.java 

这个文件是最先执行的,可以把全局变量定义在这里,或者要添加的功能,比如说GPS定位等。

2、裁剪掉发送短信中附件功能,也就是去掉彩信功能,

修改res/xml/mms_config.xml,配置mms功能为false


三、运行

运行Mms.apk,在点击短信进行发送的过程中出现异常退出,提示如下错误

问题:java.lang.NoClassDefFoundError: com.android.common.userhappiness.UserHappinessSignals
解决:找不到com.android.common包下的类,这个包源码在/frameworks/ex/java下。

假如是在源码中编译通过的,可以直接在\out\target\common\obj\JAVA_LIBRARIES\android-common_intermediates\中找到classes.jar,改名为android-common.jar,导入到机器的system/framework中即可。

假如在eclipse中编译,那么把android-common.jar导入到工程中,优先于其他库,编译完就没有出错。











1 0
原创粉丝点击