Android 根据变化的框架开发应用程序

Android 根据变化的框架开发应用程序,android,adt,android-source,Android,Adt,Android Source,我下载了android源代码,对框架做了一些更改,并添加了一些新方法。现在我正在尝试开发一个应用程序来测试新的更改,我正在使用eclipse,它指向原始sdk(android sdk eclipse捆绑包中包含的sdk),如何更改项目的设置以使其看起来像新构建的源代码?我不是专家,但我认为您可能需要使用ant、maven或gradle之类的工具,而不仅仅是使用eclipse 转到: 窗口->首选项->Android并浏览到SDK文件夹。在Eclipse中 然后将您的清单更改为: 如果您正确地保

我下载了android源代码,对框架做了一些更改,并添加了一些新方法。现在我正在尝试开发一个应用程序来测试新的更改,我正在使用eclipse,它指向原始sdk(android sdk eclipse捆绑包中包含的sdk),如何更改项目的设置以使其看起来像新构建的源代码?

我不是专家,但我认为您可能需要使用ant、maven或gradle之类的工具,而不仅仅是使用eclipse

转到:
窗口->首选项->Android并浏览到SDK文件夹。
在Eclipse中

然后将您的清单更改为:


如果您正确地保护任何新的api调用,您可以降低minSdk,问题是eclipse不知道您对自己的个人构建做了什么。为了让eclipse识别这些更改,您需要在aosp SDK之前加载自己的框架jar

构建AOSP时,应在此处生成一个文件:

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-full-debug.jar
这是一个jar文件,包含aosp生成的所有方法,包括标记为@hide的方法。将其包括在项目的构建路径中,并在“订单”和“导出”下确保首先加载它

这里有一个详细说明android.jar(sdk)如何工作的内部和隐藏部分,以及如何为您的项目加载到不同的jar。如果您不想使用我上面描述的从aosp树的out目录中拉出它的方法,您也可以将它从设备中拉出,以确保您使用的是设备上应用程序可用的确切类集。第2部分:

adb pull /system/framework/framework.jar

但是如果没有关于你正在改变什么的额外信息,我就不能给出比这更多的建议了。如果您阅读了整个指南,它将解释为什么如果您对internal进行了更改,您仍然无法让eclipse在不做额外工作的情况下识别这些更改。

问题是我无法在我的out目录下找到SDK文件夹。我尝试使用:find-name“sdk”我得到了以下结果:./host/common/obj/JAVA_LIBRARIES/sdk_common_mediates/classes/com/android/ide/common/sdk./target/common/docs/doc comment check/tools/sdk./target/common/docs/doc comment check/intl/ja/sdk./target/common/doc comment check/sdk当我尝试添加这个sdk文件夹时,我得到了错误:在SDK中找不到文件夹“tools”。它不会存储在您的项目中。你必须从网上下载。如果您还没有,这里是:我的新API应该如何在默认SDK中显示??!我希望看到我通过更改android源代码对android框架所做的新更改。我下载了API 17,对其进行了更改,现在我想使用修改后的API 17。我不知道当eclipse是ide时,您使用原始sdkant、maven和gradle是构建系统的目的是什么。它不起作用,仍然无法识别我的新API。它问我来源,但我不知道附加什么。@FoadRezek你到底改变了什么?如果您已经在构建路径中包含了构建类完整jar文件,并将其按顺序移动到列表的顶部并导出,那么它应该可以工作,您不应该有构建问题。如果没有,则说明其他问题,我们需要更多信息来帮助您。@FoadRezek如果它向您询问来源,我想它也会向您抛出错误消息?我添加了jar文件并将其移动到顶部,应用了更改,没有出现错误,只是我使用的新API无法识别。例如:在Hardware/systemsensormanager.java中添加了一个名为injectEvent()的方法,这是我仍然存在的错误:“类型SensorManager的方法injectEvent(SensorEvent)未定义”,因此我在SystemSesnorManager.java中添加了方法public injectEvent()(我添加了@hide标记),构建了AOSP,并像我在项目中所说的那样包含了full-jar类,将其移动到顶部,eclipse识别出了该方法。你错过了一步,或者没有给我足够的信息来帮助我。我能想到的唯一其他问题是,您错误地将该方法放入SystemSensorManager的许多内部类中。如果你得到更多的信息,请告诉我,我会尽力进一步帮助你。我已经在这里详细描述了这个过程:希望这能对你有所帮助。