使用编译SDK版本21将Google Play服务添加到项目中?

时间:2018-01-06 07:34:47

标签: android google-play-services onesignal

因此,我尝试将compile 'com.google.android.gms:play-services:10.0.1'添加到 gradle 。应用级 gradle 如下:

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    maven { url 'https://maven.google.com' }
}

android {
compileSdkVersion 21
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "com.example.myapp"
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 11
    versionName "1.1"

dependencies {
    //    compile 'com.onesignal:OneSignal:[3.6.5, 3.99.99]'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.google.android.gms:play-services:10.0.1'
}

apply plugin: 'com.google.gms.google-services'

此处还有我的项目级gradle文件:

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    classpath 'com.google.gms:google-services:3.0.0'
}
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

当我添加播放服务依赖项时,会导致此错误:

Error:(4) Error retrieving parent for item: No resource found that matches the given name ' android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(34) Error retrieving parent for item: No resource found that matches 
the given name 'android:Widget.Material.Button.Colored'.
Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

我尝试了10.0.1之前的版本但得到了相同的结果。此外,我无法使用低于9.0.0的版本,因为我收到此错误:

Error:(50, 0) Version: 8.4.0 is lower than the minimum version (9.0.0) required for google-services plugin.

我无法更改编译SDK版本。它必须 21 。此问题也是一个更大问题的一部分:将OneSignal添加到我的项目中,以便我可以发送推送通知。我已经使用了 Firebase ,但我必须使用OneSignal,因为它具有特殊功能。 请注意,所有问题都归因于我的编译SDK版本降至21.如果我将其更改为 23 或更高,我可以轻松地将OneSignal添加到我的项目中。

2 个答案:

答案 0 :(得分:0)

  

我无法更改编译SDK版本。 必须是21。

不要将minSdkVersioncompileSdkVersion混为一谈 今天我们有版本27,如果你想使用最新的google play服务库,firebase,OneSignal,你必须改变这个级别,避免使用compileSdk = 21.

Check this post:

  

compileSdkVersion是告诉Gradle用于编译应用的Android SDK版本的方法。使用新的Android SDK是使用该级别添加的任何新API的必要条件。

     

应该强调的是,更改compileSdkVersion不会改变运行时行为
  因此强烈建议您始终使用最新的SDK进行编译

     

如果compileSdkVersion设置了最新的API,minSdkVersion 是您应用的下限。 minSdkVersion是Google Play商店用于指示的信号之一确定可以在其上安装应用程序的用户设备。

然后使用最新的OneSignal库,最新的GooglePlayServices库,并将compileSdk更改为27。

答案 1 :(得分:0)

我建议您添加已在Choose_Library_Dependency对话框中指定的Google Play服务的依赖项。 这件事总是对我有用。 只需浏览选项,您就会找到Google Play服务的匹配项。

屏幕截图:https://www.android-examples.com/wp-content/uploads/2016/06/choose-library-dependency.png