Android Studio 2.0中未找到Android API 23平台的源代码

103

Android Studio不能正确地将我重定向到API源。当我调用任何函数时,它会反编译.class文件字节码,而不是从sdk/sources树中访问正确的文件。

点击“下载”和“刷新”选项没有任何作用。这对于实现监听器特别烦人,因为它从文档中生成函数头而没有变量名称(即var1、var2等)。我已经安装了API 23(SDK平台、工具、文档、源代码)。我已经将编译和目标SDK设置为23。

我尝试重新安装SDK工具、从金丝雀通道更新AS、使缓存失效,但迄今为止都没有帮助。

我切换到API 21,它可以正常工作。

我错过了什么?

我的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        applicationId "com.myapp.app"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile project(':volley')
    compile 'com.jakewharton:butterknife:7.0.1'
}

以下是一个空白项目(没有第三方库)的Gradle输出,其API版本设置为23,与原版行为相同。

Executing tasks: [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies]

Configuration on demand is an incubating feature.
Incremental java compilation is an incubating feature.
:clean
:app:clean
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAnimatedVectorDrawable2330Library
:app:prepareComAndroidSupportAppcompatV72330Library
:app:prepareComAndroidSupportDesign2330Library
:app:prepareComAndroidSupportRecyclerviewV72330Library
:app:prepareComAndroidSupportSupportV42330Library
:app:prepareComAndroidSupportSupportVectorDrawable2330Library
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:mergeDebugShaders
:app:compileDebugShaders
:app:generateDebugAssets
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
:app:processDebugManifest
:app:processDebugResources
:app:generateDebugSources
:app:preDebugAndroidTestBuild UP-TO-DATE
:app:prepareDebugAndroidTestDependencies
:app:compileDebugAndroidTestAidl
:app:processDebugAndroidTestManifest
:app:compileDebugAndroidTestRenderscript
:app:generateDebugAndroidTestBuildConfig
:app:mergeDebugAndroidTestShaders
:app:compileDebugAndroidTestShaders
:app:generateDebugAndroidTestAssets
:app:mergeDebugAndroidTestAssets
:app:generateDebugAndroidTestResValues UP-TO-DATE
:app:generateDebugAndroidTestResources
:app:mergeDebugAndroidTestResources
:app:processDebugAndroidTestResources
:app:generateDebugAndroidTestSources
:app:mockableAndroidJar
:app:preDebugUnitTestBuild UP-TO-DATE
:app:prepareDebugUnitTestDependencies

BUILD SUCCESSFUL

我附上了我的build.gradle文件。谢谢回复。 - Luke
你是在Linux上使用它吗? - Aamir Abro
我遇到了同样的问题。 - Aamir Abro
2
这对我有帮助,https://dev59.com/mWEi5IYBdhLWcg3wfsbI#26352763 - Aamir Abro
这些解决方案很好,可能适用于所有人。但我发现了另一种解决方法,只是为那些无法通过上述方法解决此错误的人添加它,我只是从模拟器中删除了一些应用程序以释放空间,就这样。错误已解决。 - Ankit Patel
显示剩余2条评论
6个回答

215

显然,这个问题在Android Studio 2.1中已经得到了解决。 重新运行Android Studio中的Android SDK Manager设置,应该可以解决您的问题。

在Android Studio中:

Windows:文件 -> 设置(ctrl+alt+s)-> 外观和行为 -> 系统设置 -> Android SDK。

Mac:Android Studio -> 首选项(cmd +,)-> 外观和行为 -> 系统设置 -> Android SDK。

在Android SDK位置的右侧点击编辑。 一路单击下一步,这应该可以解决问题。

此答案来自这里的不同问题的解答。


4
重新启动以使其生效。 - Kai Wang
1
太棒了!你是冠军。重新导入修复了我的问题。 - Robert Massaioli
3
你愿意嫁给我吗? - Andrea Baccega
2
有人能在Android Studio 2.3.3和API 26上使其工作吗?在这种情况下问题完全相同,但是按照这些说明并重新启动并没有帮助。 - jwBurnside
无法工作。 向导的结果是“无事可做!Android SDK已经是最新的。” 重启AS后没有任何变化。 - Valentin Yuryev
显示剩余2条评论

47
对于遇到同样问题的人,解决方案在此帖中适用于Linux系统,在同一主题这里适用于Windows(感谢Aamir Abro)。基本上,您需要编辑缺失API级别的jdk.table.xml文件。我不知道为什么,但是Android 2.0和2.1 RC没有填充代码中的<root type="composite" />,因此我更新了源码路径<root type="simple" url="file://D:/android/sdk/sources/android-23" />,现在它可以正常运行。

对于Windows用户文件位置C:\Users{USER_NAME}.AndroidStudio2.0\config\options\jdk.table.xml

对于Linux用户文件位置~/Library/Preferences/AndroidStudioBeta/options/jdk.table.xml

编辑:

对于某些人,重置SDK位置有助于解决问题来源


我尝试过了,但在Android Studio 2.1和Ubuntu 16.04中不起作用。 - L. Swifter
14
有人在这里写道,重置 SDK 位置有助于解决问题。您还可以尝试在 SDK 管理器中重新安装 API 源,并确保 jdk.table.xml 中有一个指向您使用的 API 级别的正确路径条目。 - Luke
2
重置SDK位置确实有帮助,即使我没有修改jdk.table.xml文件。 - L. Swifter
1
对于Mac用户而言,路径是相同的:~/Library/Preferences/AndroidStudioBeta/options/jdk.table.xml。 - evan
1
这是一个关于它的问题:https://code.google.com/p/android/issues/detail?id=207555 - tse
老天,我正在使用 Studio 3.2 Canary 11,刚刚遇到了相同的问题。除了现在文件是 $HOME/.AndroidStudioPreview3.2/config/options/jdk.table.xml,而缺失的 XML 是 <root type="composite"><root url="file://$USER_HOME$/Android/Sdk/sources/android-23" type="simple" /></root> - A. L. Flanagan

8

正如qbeck在他的评论中提到的那样,将SDK路径重置为默认值可以解决一些人的问题。

解决方案:

Android Studio 2.1报告:通过重置SDK解决了该问题。

首选项 -> 外观和行为 -> 系统设置 -> Android SDK。

单击Android SDK位置右侧的“编辑”按钮。接下来,按下“下一步”直到完成向导,问题解决!


1
这个修复了在Android Studio 2.3和SDK 25中的问题。 - Jon
在Linux上,它是:文件 -> 设置 -> 外观和行为 -> 系统设置 -> Android SDK - lenooh

3

在Windows 10上使用Android Studio 3.2.1时,遇到了API级别28的相同问题。刷新无效。

重启Android Studio后问题得到解决。


1

要将您的Android Studio更新到Api 23,请转到:

工具 > Android > SDK管理器,

然后可以转到SDK工具选项卡或单击Launch Standalone SDK Manager。勾选Android SDK Build-tools 23.0.2以安装。

更新:

请从依赖项中删除:

compile project(':volley')

将其翻译为中文:

并替换为:

compile 'com.android.volley:volley:1.0.0'

1
我已经安装了API 23(SDK平台、工具、文档、源代码)。事实上,我尝试重新安装所有内容,但没有帮助。 - Luke
好的,我认为问题与Volley库有关,请检查我的更新答案。 - Mounir Elfassi
仍然没有什么进展。我甚至在没有任何外部依赖的情况下设置了一个新项目,但问题仍然存在。看起来更像是Android Studio相关的问题。 - Luke
嗯,清理一下你的项目 => 重新构建并检查Android Studio右下角的Gradle控制台.. 更新你的问题并附上你看到的日志。 - Mounir Elfassi
我附上了另一个(空白)项目的Gradle输出,其中发生了相同的事情。感谢您的帮助。 - Luke

0
有时会出现两个错误,第一个错误会说:“未找到平台android 28”,点击下一步,“接受某些许可协议...”。一旦您接受了协议,这两个错误都将消失。

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