Я читал новый веб-сайт с материальным дизайном, но у меня возникла проблема с его реализацией.
Приложение, над которым я сейчас работаю, представляет собой простое тестовое приложение, в котором нет ничего, кроме кнопки и некоторых текстовых представлений.
Проблема возникает после помещения implementation 'com.google.android.material:material:1.0.0-alpha1' в файл gradle.
вот мой файл build.gradle (приложение)
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.user.firebasemessagingtest"
minSdkVersion 19
targetSdkVersion 27
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(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.2'
implementation 'com.google.firebase:firebase-ml-vision:15.0.0'
implementation 'com.google.android.material:material:1.0.0-alpha1'
}
apply plugin: 'com.google.gms.google-services'
У меня 4 ошибки,
error: resource android:attr/dialogCornerRadius not found.
error: resource android:attr/fontVariationSettings not found.
error: resource android:attr/ttcIndex not found.
error: failed linking references.
Я включил maven в файл Gradle проекта, как указано в документации.
Попробуй это
изменить версию compileSdkVersion и Support Libraries
compileSdkVersion 'android-P'
Support Libraries to '28.0.0-alpha1'
и использовать
api 'com.android.support:design:28.0.0-alpha1'
РЕДАКТИРОВАТЬ
Update your SDK Platform update - Android P Preview (latest)
and also make
targetSdkVersion 'P'
Чем Clean-Re_Build-Run ваш проект
apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "com.example.nilesh.testapp"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
compile 'com.android.support:design:28.0.0-alpha1'
compile 'com.android.support:cardview-v7:28.0.0-alpha1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
testImplementation 'junit:junit:4.12'
implementation 'com.google.android.material:material:1.0.0-alpha1'
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.2'
implementation 'com.google.firebase:firebase-ml-vision:15.0.0'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
repositories {
mavenCentral()
}
Надеюсь это поможет
По-прежнему возникает ошибка - "Тип программы уже присутствует: android.support.v4.app.INotificationSideChannel"
Добавление android.useAndroidX = true android.enableJetifier = false в gradle.properties устранило ошибку сборки, но когда я попытался запустить его на своем мобильном телефоне, он снова получил ошибки.
@ Demonic218, проверьте мой edit2, он отлично работает в студии Android
Извини, чувак, но все равно никуда. В моем диспетчере SDK Android P Preview говорит, что он установлен частично, если я его открою, Android SDK Platform P будет единственной установленной, это нормально или все они должны быть загружены?
@ Demonic218 да Пожалуйста, обновите платформу SDK до Android P Preview (последней версии)
Теперь у меня есть все, что находится под Android P sdk, загружено и установлено, и у меня все еще та же проблема.
Установите compileSdkVersion как 'android-P'.
Совместите библиотеку поддержки с compileSdkVersion. Например, implementation 'com.android.support:support-v4:28.0.0-alpha1' вместо implementation 'com.android.support:appcompat-v7:27.1.1'.
Замените implementation 'com.google.android.material:material:1.0.0-alpha1' на api 'com.android.support:design:28.0.0-alpha1'.
Приложение build.gradle должно выглядеть примерно так.
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "com.wolfrevokcats.myapp"
minSdkVersion 15
targetSdkVersion 27
versionCode 16
versionName "2.3"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable false
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
api 'com.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
implementation ('com.someone.addons:library:1.6.1@aar'){
exclude group: 'com.android.support'
exclude module: 'appcompat-v7'
exclude module: 'support-v4'
}
implementation 'com.google.android.gms:play-services-location:15.0.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Поскольку используется 'com.android.support:design:28.0.0-alpha1', наш код придется изменить на android.support.design вместо библиотек com.google.android.material. Вот пример использования нового виджета Bottom App Bar.
<android.support.design.bottomappbar.BottomAppBar
android:id = "@+id/toolbar"
style = "@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_gravity = "bottom"
app:fabAttached = "true"
app:fabAlignmentMode = "center"/>
На самом деле я решил пойти именно по этому пути, поскольку в руководстве на веб-сайте Material.io используется support: design вместо android.material. Не могли бы вы сказать мне, в чем разница между ними?
Google развертывает новую структуру пакетов, чтобы различать, что входит в операционную систему Android, а что нет. Те, которые не будут, будут выпущен под новым пакетом androidx. * hiearchy. Узнать больше о AndroidX
com.android.support:design будет заменен библиотекой com.google.android.material:material:xxx, как показано на странице Рефакторинг AndroidX.
Версии android.support. * Перестанут работать после выпуска 28.0.0.
Так разве внедрение android.support.design сейчас не будет пустой тратой времени, ведь он будет заменен?
Это немного помогло, хотя только начало выдавать другие ошибки. Я пробовал следовать за ответом, опубликованным Здесь, но все равно не пошел.