无法设置SDK:错误:未找到'应用程序'模块的平台'Google Inc .:Google APIs:21'

10
Failed to set up SDK: Error:Module 'app': platform 'Google Inc.:Google APIs:21' not found.

我完全不知道为什么这不起作用。试图将SDK更新到23,但意识到自己没有准备好处理所有新的过时警告等,因此我回滚到Mercurial上的旧版本。我除此之外什么也没有做,回滚应该解决了一切。不幸的是,我卡在无法连接我的应用程序并构建它的地方。我甚至从头重新安装了Android Studio,但我仍然收到相同的警告,我的应用程序根本无法构建。可能出了什么问题?

这是我的Build Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'Google Inc.:Google APIs:21'
    buildToolsVersion '21.1.2'

    defaultConfig {
        applicationId "com.elgami.customizer"
        minSdkVersion 14
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled false
            //runProguard false
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

dependencies {
    compile 'com.ogaclejapan.smarttablayout:library:1.5.0@aar'
    compile 'com.github.antonyt:InfiniteViewPager:v1.0.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
    // recyclerview
    compile 'com.android.support:recyclerview-v7:23.1.1'
    // google analytics
    compile 'com.google.android.gms:play-services-analytics:8.3.0'
    // pager sliding strip
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    // http library (for using beanstream REST)
    compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
    // amaazon S3 uploads
    compile 'com.amazonaws:aws-android-sdk-s3:2.1.+'
    // paypal purchasing
    compile files('libs/PayPalAndroidSDK-2.7.1.jar')
    // Module dependency on ParseLoginUI library sources
    compile project(':ParseLoginUI')
    // Parse libs
    compile files('libs/ParseCrashReporting-1.9.2.jar')
    compile files('libs/Parse-1.9.1.jar')
    compile files('libs/ParseFacebookUtilsV4-1.9.1.jar')
    // android support v4
    compile files('libs/android-support-v4.jar')
    // facebook SDK
    compile 'com.facebook.android:facebook-android-sdk:4.1.0'
    //butterknife
    compile 'com.jakewharton:butterknife:6.1.0'
    // Subsampling-scale-image-view (for templating)
    //compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.1.4'
    compile files('libs/AppRater.jar')
}
4个回答

11

你可以使用 compileSdkVersion 21 替换你的版本。

    android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'

    defaultConfig {
        applicationId "com.elgami.customizer"
        minSdkVersion 14
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled false
            //runProguard false
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

好的,有些东西开始工作了。现在我收到了“错误:原因:无法找到目标21:D:\Android\sdk1<a href="install.android.platform">安装缺失的平台并同步项目</a>”,但是它不允许我安装它。有没有办法从其他地方手动下载这个?我猜重新安装Android Studio后它下载了Sdk 23,但是现在我真的需要将其保留在21。 “忽略未知的软件包过滤器'android-21'警告:软件包过滤器删除了所有软件包。没有可安装的内容。请考虑尝试在没有软件包过滤器的情况下再次更新。” - Martin Erlic
你在项目中进行了 Clean-Rebuild-Restart-sync 操作吗? - IntelliJ Amiya
1
是的,我一直遇到同样的问题。 - Martin Erlic
谢谢,但现在我甚至无法打开这个项目。这太荒谬了。 - Martin Erlic
1
成功了!非常感谢。哈哈,真是一场磨难。我花了好几个小时才让它重新运行起来。 - Martin Erlic
2
你实际上仍然可以针对 Google 版本的 API 进行编译,但需要从旧版 SDK 管理器中安装它们(请参见我在此帖子中的回答)--- 如果您仍需要该版本的功能(例如旧地图 v1),这是唯一真正的解决方案。 - Daniele Segato

8
目前被接受的答案是用21替换Google Inc.:Google APIs:21,但如果您还有一些使用Google地图v1(例如)的旧应用程序,则此方法不适用。

如果您处于这种情况下,确实需要针对Google Inc.:Google APIs:21或23等版本进行编译...

解决方法如下:
步骤1
点击Android Studio SDK Manager下方的Launch Standalone SDK Manager链接,或通过在命令行中执行${ANDROID_SDK_DIR}/tools/android sdk直接打开旧版SDK管理器界面。
然后找到所需SDK版本的Google APIs并安装:
screenshot of the SDK Manager
由于某种原因,此包在Android Studio中被隐藏,我预计谷歌最终会将其删除。目前可用的是SDK 24(棉花糖),但是没有SDK 25(牛轧糖),他们可能会在未来添加,也可能不会。我们将拭目以待。

如果您处于此情况,并且Google决定停止提供,则必须使用地图v2重新编写功能。
步骤2
即使执行此操作并清理+ gradle同步,您仍将从Android Studio获得此错误:
Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable to point to the according directory.

但是,如果您尝试从命令行执行(./gradlew assembleDebug),它将编译通过。

原因似乎与Android Studio嵌入的Java JRE有关。 为了使其在Android Studio内编译,请打开Android Studio中的项目结构并为您计算机上安装的JDK提供自定义路径(您必须安装OpenJDK / OracleJDK)。

注意:可能需要浏览到该位置而不是复制路径,以使Android Studio接受更改。不要选择jre目录,选择 JDK (包含jre的文件夹)。

警告:这种更改并非特定于项目,而是将应用于Android Studio本身,并用于任何其他项目。


1

当它对我失败时,我下载了Google API,就像@Daniel Segato所解释的那样,这是正确的做法,但我还是一次又一次地收到了这条消息。

直到我这样做。我打开了模块的设置(Ctrl + Alt + Shift + S文件 > 项目结构),对于我的模块,我从列表中选择了其他任何一个选项作为编译 SDK 版本。然后我重新同步了 gradle,然后将选项改回 Google APIs(API 23)。然后它就起作用了!这真的非常非常讨厌,Android Studio 在你在对话框中更改之前无法识别 SDK。但这只发生过一次。其他时候,只需下载适当的 Google API 就可以了!但这很讨厌。


0

我的问题出在 build.gradle 文件中!当我打开它时,它是这样的:

android {
    compileSdkVersion 'Google Inc.:Google APIs:21'
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.pixelnx.sam.allinone_room"
        minSdkVersion 21
        targetSdkVersion 21

怎么修复?!

  1. 移除 'Google Inc.:Google APIs:21' 并将其替换为 29

2.将 targetSdkVersion 设置为 29

结果:

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "com.pixelnx.sam.allinone_room"
        minSdkVersion 21
        targetSdkVersion 29

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