如何找到所有版本的Android支持库源代码

18
我遇到了一些问题,想要找到Android支持库的源代码。例如,我想阅读support.appcompat-v7版本19.0.1和20.0.0中ActionBarActivity.java的源代码,并找出两个版本之间的差异。我在https://github.com/android/platform_frameworks_base上找到了源代码,但是发布的名称不是像19.0.1那样命名为android-x.x.x_rxx。

2
我不确定Github存储库存在问题。分支对应Android版本,直接映射到API版本号。例如,Marshmallow是API 23。 - OneCricketeer
2
@cricket_007 问题在于我使用的是Support Library v.23.4,而该仓库具有像“android-6.0.1 r49”和“marshmallow-dr1.5-release”这样的引用 :-( - Orc JMR
1
我已经追踪了23.4个堆栈跟踪,发现它们来自于3月30日的提交73ec51559a791cf9fe5cfe624eee8d82b9777fb5... 但是这个提交只涉及RecyclerView,而下一个RecyclerView提交(与堆栈跟踪不匹配)也是在同一天,所以我甚至无法自己标记源代码。 - Orc JMR
2
@OrcJMR 请参考 https://dev59.com/BFkS5IYBdhLWcg3w8acL#39314296,`/extras/android/m2repository` 包含每个支持库版本的 *-sources.jar - mixel
6个回答

4

我还编写了一个小脚本,用于自动下载指定支持包的所有可用源代码jar文件。https://gist.github.com/ktnr74/d402b6a083f63e0bb4398231e3cfd68d - Alex P.
因为您的回答非常有帮助,所以我向您颁发了奖金。但是我仍然不满意,并正在寻找从官方存储库获取差异的正确方法(请参见http://stackoverflow.com/q/39315958/746347)。 - mixel

2
您可以浏览到SDK目录和支持目录,您可以在那里找到AAR文件 - 在Mac上,它位于...(原文缺失)。
/Users/username/Library/Android/sdk/extras/android/m2repository/com/android/support/

请确认您所需查看的版本。然后在gradle.build文件中将版本更改为需要的版本。同步项目后,将Android Studio的浏览器模式更改为项目模式。

enter image description here

现在你可以浏览外部库以查看源代码。

enter image description here


1
谢谢@Sanjeet Ajnabee,这是一个解决方案,但需要IDE。 - binkery

-1
如此简单,只需创建一个版本为19.0.1的项目和另一个版本为20.0.0的项目,然后将您的Activity从ActionBarActivity(或其他)扩展,按住Ctrl键并单击ActionBarActivity即可。

-1
如果您已经下载了源代码,应该能够在以下三个位置之一找到它们的版本(使用OSX,但应该足够熟悉以推断出操作系统的位置): Android源代码 ~/Library/Android/sdk/sources/ Maven本地仓库

~/.m2/repository

Gradle缓存(位置可能是不同的名称)

~/.gradle/caches/modules-2/files-2.1

使用其中任何一种方法,对所需的源代码进行差异比较应该不难。

~/Library/Android/sdk/sources 包含 Android SDK 版本的源代码,而不包含 Android Support Library 版本的源代码。Maven 本地仓库和 Gradle 缓存中不包含源代码。 - mixel
@mixel Maven本地仓库和Gradle缓存将包含源代码作为jar文件。 - Shiraaz.M

-1

如果您不想使用任何集成开发环境(IDE),您可以从https://developer.android.com/studio/index.html#downloads仅下载命令行工具。

以下示例适用于OSX操作系统:

下载命令行工具后,您可以使用此命令运行SDK Manager:“sh android”,也许需要在命令前添加“sudo”。 SDK Manager将显示Android SDK Manager。 选择Android SDK的源或要下载的任何软件包Download sources。 点击“安装”按钮,并接受许可证。 下载成功后,您可以导航到放置SDK的文件夹,然后转到源并导航到ActionBarActivity或任何其他源Sources of Android code

你没有回答这个问题。OP正在寻找两个不同版本的支持库的来源,并想找出它们之间的区别。 - mixel
@mixel,为什么它没有回答呢?我们在下载所需的支持库后,可以找到源代码,例如Android Kitkat的支持库位于android-19文件夹中,或者Android Marshmallow的支持库位于android-23文件夹中。这基本上反映了版本本身,就像OP想要的那样。从那里,我们可以使用任何文本编辑器来检查每个源代码的不同之处,甚至可以使用终端中的“diff”命令。 - HendraWD
因为 OP 想要看到支持库版本之间的差异,而不是 Android 版本。19.0.1 和 20.0.0 不是 Android API 级别,而是支持库版本。实际上,支持库的源代码可以在 extras/android/m2repository 中的 *-sources.jar 存档中找到。 - mixel

-1

你可以使用grepcode查看Android源代码

例如,您想要查看support.appcompat-v7中版本19.0.1和20.0.0的ActionBarActivity.java源代码。

那么API 19.0.1将是Android版本4.4,如Wiki所示

现在,您可以从grepcode中选择所需的Android版本。例如,您可以在grepcode 此处 查看Android 4.4(API 19)的源代码。

接下来,您可以查看支持包中的ActionBarActivity源代码。

同样地,您可以查看不同构建版本的Android源代码,而无需使用IDE。


19.0.1不是Android的API版本,而是Android支持库的版本。它与Android有完全独立的版本控制。 - mixel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接