您的位置:首页 > 编程语言 > Java开发

android 4.1.2系统 phone 导入eclipse编译

2015-09-10 21:21 337 查看
写下备忘

1.获取应用源代码

a)下载源代码 从源代码中提取phon app

b)可以从 https://android.googlesource.com/(需要翻墙)

2.导入源代码到eclips中

3.导入工程后添加系统的class.jar。

文件位置在android 源代码编译完成后的/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

下载class.jar

遇到的报错问题

导入上提到的class.jar中的包后。还会报几个错误:

1. CallNotifier.java等几个文件 报错。EventLog.writeEvent(EventLogTags.PHONE_UI_RINGER_QUERY_ELAPSED);中的EventLogTags编译不过,起初从源代码中找到EventLogTags,在工程中新建一个android.util包把EventLogTags放入,发现还是编译不过。查看代码发现EventLogTags并没有PHONE_UI_RINGER_QUERY_ELAPSED等常量。后来发现其实引入的EventLogTags是android早期版本(android2.3.4)中的文件,并且在com.android.phone包下面。无奈只能重新下载一个com.android.phone.EventLogTags.java
下载位置:


http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/2.3.4_r1/com/android/phone/EventLogTags.java

下载的这个EventLogTags.java也依赖前面提到的android.util.EventLogTags

这时候EventLogTags相关报错已经解决了,但是还没完,下面还有一个INetworkQueryServiceCallback.aidl文件报错。

2.INetworkQueryServiceCallback.aidl文件报错

报错位置在 import com.android.internal.telephony.OperatorInfo;告知无法引入OperatorInfo类。

后来采用 EventLogTags同样的方法在Phone工程下创建一个com.android.internal.telephony包,从源代码中将 OperatorInfo文件找出并放在改包下。本以为万事大吉,但是不幸的是依然报错,报错的位置依然那这行。后来找了下发现一个同志的一篇文章对这个问题解释的很详细

/article/1992293.html

按照这个文章的提示在com.android.internal.telephony包下面 创建 OperatorInfo.aidl。文件内容为:

package com.android.internal.telephony;

parcelable OperatorInfo;





ok,INetworkQueryServiceCallback终于不报错了

3.不要高兴的太早,还有一个报错。那就是SipSettings.java文件中的一行log

Log.v(TAG, "addPreferenceFor profile uri" + p.getUri());无打紧,我直接干掉了。

这下整个工程终于不报错了,接下来就的苦逼的修改源代码............................................
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: