我尝试使用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'
}
答案 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)