Android compileSdkVersion 24失败,26,27工作正常

时间:2018-03-07 10:46:26

标签: android

我尝试使用Facebook登录按钮编译示例应用程序。应用程序使用AppCompatActivity。使用compileSdkVersion 26,27可以很好地构建应用程序,但是使用旧版本的API是否有任何限制?这可能与Google公告https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html有关,要求所有新应用程序从2018年8月起以目标API 26为目标。如果需要定位API 26,则无需为旧版API编译提供库支持...这篇文章我检查过API 25无法编译同样的错误。我的问题:是否可以使用compileSdkVersion 24构建我的应用程序?我的问题是由新库准备好遵守目标API> = 26要求引起的吗? 此致,Jacek

compileSdkVersion会出现类似错误的错误:

/home/jb/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.0.2.aar/8d2c125a87d6df61543bb0cc5de9ca22/res/values-v26/values-v26.xml
Error:(9, 5) error: resource android:attr/colorError not found.

错误指向资源文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Base.Theme.AppCompat" parent="Base.V26.Theme.AppCompat"/>
    <style name="Base.Theme.AppCompat.Light" parent="Base.V26.Theme.AppCompat.Light"/>
    <style name="Base.V26.Theme.AppCompat" parent="Base.V23.Theme.AppCompat">
        <!-- We can use the platform styles on API 26+ -->
        <item name="colorError">?android:attr/colorError</item>
    </style>
    <style name="Base.V26.Theme.AppCompat.Light" parent="Base.V23.Theme.AppCompat.Light">
        <!-- We can use the platform styles on API 26+ -->
        <item name="colorError">?android:attr/colorError</item>
    </style>
    <style name="Base.V26.Widget.AppCompat.Toolbar" parent="Base.V7.Widget.AppCompat.Toolbar">
        <item name="android:touchscreenBlocksFocus">true</item>
        <item name="android:keyboardNavigationCluster">true</item>
    </style>
    <style name="Base.Widget.AppCompat.Toolbar" parent="Base.V26.Widget.AppCompat.Toolbar"/>
</resources>

我使用如下导入:

import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import com.facebook.CallbackManager;
import com.facebook.FacebookException;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

这是我的build.gradle,appcompat注释掉或不提供相同的结果。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    defaultConfig {
        applicationId "ijbd.eu.test123"
        minSdkVersion 16
        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'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.facebook.android:facebook-android-sdk:4.31.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
//    implementation 'com.android.support:support-v4:24.2.1'
//    implementation 'com.android.support:appcompat-v7:24.2.1'
//    implementation "com.android.support:support-core-utils:24.2.1"

    //    testCompile 'junit:junit:4.12'
}

1 个答案:

答案 0 :(得分:0)

android.R.attr.colorError的文档在API级别26和#34;中添加了&#34;这意味着它不存在于比api-26更早的api-s中(即在api-24中)。你必须使用api-26或更新版本编译(compileSdkVersion&gt; = 26),你必须确保&#34; colorError&#34;如果android运行时早于api-26(targetSdkVersion)

,则不使用

[更新] 错误消息说&#34; appcompat-v7-27.0.2.aar&#34;使用colorError,它位于你的libs目录中,或者直接在你的一个build.gradle文件中引用,或者由你的一个依赖项间接引用(即&#34; com.facebook.android:facebook-android-sdk:4.31.0&# 34)