在ICS AOSP中对个人应用程序(电话,联系人)进行UI修改

时间:2013-04-22 08:47:08

标签: android android-source

我已经成功修改了AOSP的一些应用程序(启动器,短信,图库,电子邮件,日历),但我遇到了修改Phone,Contacts应用程序的问题。

我已经完成了以下步骤来修改Launcher,SMS,Gallery,Email,Calendar个应用程序:

  1. 我已经下载了ICS AOSP并在eclipse中导入了个人应用程序。
  2. 我更改了包名.i.e。 com.android.launcher2com.test.launcher2
  3. Step 1Step 2之后,由于缺少框架类,我在单个应用程序中遇到了错误。我通过在我的应用程序中导入缺少的类来解决它们。
  4. 我修改了我的应用程序的UI。
  5. 我在模拟器上运行了应用程序。它运行正常。
  6. 现在,我在修改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的屏幕截图 enter image description here enter image description here

    编辑将TimSort.java放入默认包后

    enter image description here

    我已经在github演示中描述了这一步,并说“当我导入TimSort.java时,它试图访问Arrays.java类的一些隐藏方法,所以我需要导入该类”。这个错误就是为什么我创建了java.util包以包含Arrays.java class.otherwise我很高兴导入TimSort.java.by的方式,在截图中我们可以看到comment特别说明了下两个方法

1 个答案:

答案 0 :(得分:5)

正如我在上一篇评论中所说,主要问题是你包含java. *和javax。*,它已经存在于android.jar中。因此,构建器认为您正在构建核心库而不是。

我只是删除项目中的java.util。*包。没有错误。 android.jar已经包含了很多包,包括java.xxx和javax.xxx。如果您确实需要使用缺少的java核心库,请尝试重构。

Eclipse Snapshot

我检查了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后的屏幕截图。

Screenshot after adding TimSort.java