我已经成功修改了AOSP的一些应用程序(启动器,短信,图库,电子邮件,日历),但我遇到了修改Phone,Contacts
应用程序的问题。
我已经完成了以下步骤来修改Launcher,SMS,Gallery,Email,Calendar
个应用程序:
com.android.launcher2
至com.test.launcher2
Step 1
和Step 2
之后,由于缺少框架类,我在单个应用程序中遇到了错误。我通过在我的应用程序中导入缺少的类来解决它们。现在,我在修改Step 3
内的联系人,电话应用程序时遇到问题:
- >当我在我的应用程序中导入java.*
或javax.*
的缺失框架类时,控制台会通过Ill-advised or mistaken usage of a core class (java.* or javax.*) when not building a core library.
- >为了克服这些问题,我尝试在Android.mk
文件中包含几个jar库,并在构建下载的AOSP(ICS)时生成。但它没有解决我的问题。
- >我想com.android.phone.common
jar文件可以解决问题,但是我无法解决它,因为我怀疑那个文件中缺少的类是我从build.So我试图在互联网上找到它几天,但是我找不到它。所以如果有人拥有这个jar文件的完整(工作)版本,请分享。
注意:我的开发机器有Windows 7.我的短期目标是修改联系人,手机应用程序的UI并运行它。
编辑: Buildpath的屏幕截图
编辑将TimSort.java放入默认包后
我已经在github演示中描述了这一步,并说“当我导入TimSort.java时,它试图访问Arrays.java类的一些隐藏方法,所以我需要导入该类”。这个错误就是为什么我创建了java.util包以包含Arrays.java class.otherwise我很高兴导入TimSort.java.by的方式,在截图中我们可以看到comment
特别说明了下两个方法
答案 0 :(得分:5)
正如我在上一篇评论中所说,主要问题是你包含java. *和javax。*,它已经存在于android.jar中。因此,构建器认为您正在构建核心库而不是。
我只是删除项目中的java.util。*包。没有错误。 android.jar已经包含了很多包,包括java.xxx和javax.xxx。如果您确实需要使用缺少的java核心库,请尝试重构。
我检查了Android源代码,dx将首先通过调用:
来检查源代码的名称private static void checkClassName(String name) {
boolean bogus = false;
if (name.startsWith("java/")) {
bogus = true;
} else if (name.startsWith("javax/")) {
int slashAt = name.indexOf('/', 6);
if (slashAt == -1) {
// Top-level javax classes are verboten.
bogus = true;
} else {
String pkg = name.substring(6, slashAt);
bogus = (Arrays.binarySearch(JAVAX_CORE, pkg) >= 0);
}
}
if (! bogus) {
return;
}
/*
* The user is probably trying to include an entire desktop
* core library in a misguided attempt to get their application
* working. Try to help them understand what's happening.
*/
DxConsole.err.println("\ntrouble processing \"" + name + "\":\n\n" +
IN_RE_CORE_CLASSES);
errors++;
throw new StopProcessing();
}
IN_RE_CORE_CLASSES
是您在控制台中看到的错误字符串。这就解释了为什么它显示错误。
更新:
添加TimSort.java后的屏幕截图。