Android Studio - 缺少目标API类

时间:2017-03-02 08:54:44

标签: java android android-studio

我正在使用Android Studio 2.2.3,目前正在使用app build.gradle文件中的以下构建条件开发应用程序:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "com.example.gery.syncadaptercustomtest"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner  "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

正如您所看到的,该应用程序的目标是API 24.我已安装(我认为)每个必需的SDK组件:

  • Android SDK Build-Tools 24.0.3
  • Android 24的来源
  • Android SDK Platform 24
  • Google API(针对API级别24)

在我的应用中,我正在使用本机AccountManager类的一种方法。如果我跳转到AccountManager.addAccountExplicitly()方法的声明,这就是我能看到的:

enter image description here

正如您在右侧的滚动区域中看到的那样,缺少几个声明,就像它们不会导入到类中一样。例如,在第733行,mService字段具有Android Studio无法找到的类类型,因此该方法也缺失(当将鼠标悬停在其上时,说“无法解析方法...”)。这就是该字段缺少的类类型的样子(在第269行):

enter image description here

我尝试重新安装每个SDK组件,甚至尝试过File>多次使高速缓存/重新启动无效,但问题仍然存在。我没有在SO上找到任何类似的东西,也没有找到其他任何东西。有人知道发生了什么吗?

更新1:在DKIT的回答之后我在Android Developers类引用中查找了,搜索IAccountManager类,但它无处可去 - 我不知道这是什么可能是什么,它会指的是什么。此外,AccountManager类在API级别5中引入了大多数方法,包括addAccountExplicitly();所以我看不出为什么它不会存在于任何现在常见的设备上。

顺便说一下,AccountManager中的以下类也是“未导入的”(技术上它们位于import部分,但它们的声明也缺失了)。也许这会有所帮助......

  • android.annotation.NonNull
  • android.annotation.RequiresPermission
  • android.annotation.Size
  • android.annotation.SystemApi(如第259行图2所示)
  • com.google.android.collect.Maps

更新2 :我之所以缺少原生Android类中的内部组件,是因为我想知道它们内部发生了什么。我认为在Android Studio中查看Android组件的工作非常简单,但是这个用例/功能可能存在于互联网上我不知道的其他地方......:D

感谢Ashwin Mothilal帮助我让每个人都明白这一点! ;)

2 个答案:

答案 0 :(得分:3)

好的,Android Studio不允许查看他们的私人成员以及上面评论中提到的内部发生的事情。

  1. 我确信android studio根据这个问题不允许这样做。
  2. 可能是别的东西。
  3. 我不确定第二点,但确定第一点。

      

    客户经理不是由您创建的吗?它存在于android.accounts包中;有可能查看他们的私有方法吗?绝对不。调用public boolean addAccountExplicitly(帐户帐户,字符串密码,Bundle userdata),你将获得结果,你不应该使用这个mService.addAccountExplicitly(account,password,userdata);

答案 1 :(得分:0)

您已将minSdkVersion指定为15。 因此,如果您调用的方法在API级别15中不存在,您将收到此警告。您可能必须通过检查API级别并在此基础上执行条件代码来处理代码在不存在此方法的设备上运行的情况。