每当我在尝试构建项目时添加implemntation 'com.google.android.material:material:1.0.0-alpha1'
时,Android Studio 都会说:
程序类型已存在:android.support.v4.app.INotificationSideChannel$Stub$Proxy 消息{kind=ERROR,文本=程序类型已存在:android.support.v4.app.INotificationSideChannel$Stub$Proxy,sources=[未知源文件],工具名称=Optional.of(D8)}
这是我的 gradle 脚本:
apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "it.smart.bab3"
minSdkVersion 21
targetSdkVersion 'p'
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'])
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.google.android.material:material:1.0.0-alpha1'
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.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
}
我是这种类型的错误的新手,我没有发现这个错误的动漫。谢谢
我也一直在为这个问题而苦苦挣扎。最后,我设法成功编译并运行了该项目。
首先,摆脱这个:
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
在您的 gradle.properties 文件中添加以下内容:
android.useAndroidX = true
android.enableJetifier = false
最后,同步项目,然后编译。
如果不起作用,请清理项目,然后重新生成。
PS:我无法让targetSdkVersion 'p'工作。我的build.gradle文件最终如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "com.github.alvarosct02.demo"
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'])
implementation 'com.google.android.material:material:1.0.0-alpha1'
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'
}
希望它也适合您。
我浪费了 2 天时间寻找解决方案。任何仍在寻找解决方案的人都可以按照以下步骤操作:
-
将您的 Android Studio 更新到最新版本。
-
将 compileSdkVersion 和 targetSdkVersion 更新为 28。
android { compileSdkVersion 28 defaultConfig { applicationId "com.your.appid" minSdkVersion 19 targetSdkVersion 28 versionCode 50 versionName "1.50" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true setProperty("archivesBaseName", "your-app-$versionName") resConfigs "en" } }
-
转到您的项目结构并将您的 gradle 版本更改为4.10。
-
首先添加此依赖项:
implementation 'com.google.android.material:material:1.0.0'
-
现在删除所有支持库依赖项:
implementation "com.android.support:design:$SUPPORT_LIBRARY_VERSION" implementation "com.android.support:support-v4:$SUPPORT_LIBRARY_VERSION" implementation "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION" implementation "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION" implementation "com.android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION" implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:multidex:1.0.3' testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" androidTestImplementation('com.android.support.test.espresso:espresso- core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.google.code.findbugs', module: 'jsr305' })
-
现在将以下内容粘贴到您的gradle.properties文件中:
android.useAndroidX = true android.enableJetifier = true
-
在项目级build.gradle文件中:
dependencies { classpath 'com.android.tools.build:gradle:3.2.0' classpath 'com.google.gms:google-services:4.1.0' };
对于那些使用Butterknife的用户,请在项目级别build.gradle文件中添加以下行:
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
}
在您的模块build.gradle文件中添加以下依赖项:
implementation "com.jakewharton:butterknife:9.0.0-SNAPSHOT"
annotationProcessor "com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT"
- 现在转到构建>重建项目,那么您可能会收到很多错误。
- 现在参考此链接。
它包含所有旧的(android.support)与新的(androidx.*)依赖项的列表。
用新的
替换所有旧的导入(使用安卓工作室的替换所有功能[ctrl + shift + R],这将为您节省一些时间)。
- 最后,用新库重构所有旧库后:
再次重建项目,希望它应该可以工作。
注意:您也可以在 android 工作室中使用Refactor> 迁移到 androidx,但它对我不起作用。
将 ButterKnife 升级到 8.8.1 版后,我开始收到此错误。
因此,我运行命令gradle -q dependencies
生成依赖项报告,之后您应该看到 D8 的来源。就我而言,来自"黄油刀"库:
+--- com.jakewharton:butterknife:8.8.1
| | --- com.android.support:support-compat:d8
您也可以通过转到Android Studio Gradle视图(在Android Studio工具栏中导航到"View/Tool Windows/Gradle")并在"My-Project-Name/Tasks/android"下选择目标"androidDependencies"(双击运行或右键单击并运行)来查看您的Android依赖项。
为了解决这个问题,我将这段代码exclude module: 'support-compat'
添加到我的"app/build.gradle"中,如下所示:
implementation ('com.jakewharton:butterknife:8.8.1') {
exclude module: 'support-compat'
}
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
希望它对其他人有用:]干杯!
Android Studio v3.2+ 解决了这个问题。它还在"重构"菜单下添加了"迁移到 AndroidX"项。无需变通方法或回滚。
从测试版频道更新 Android Studio 以使用 3.2+ 或等待稳定版本发布。
编辑:Android Studio v3.2现在处于稳定频道。请务必不要再使用支持库并迁移到 AndroidX 库,因为对旧支持库的支持已结束。
如果您要包含的库对 Android 支持库具有传递依赖性,您还必须使用 Android Gradle 插件版本 3.2.0-alpha14 或更高版本的jetifier
功能。您可以通过运行 Gradledependencies
任务来确定您是否有依赖于支持库的库。
来自 Android 开发者的博客文章 (https://android-developers.googleblog.com/2018/05/hello-world-androidx.html):
如果您依赖于引用较旧支持库的库, Android Studio 将更新该库以引用 androidx 通过依赖关系转换。依赖项转换会自动 由 Android Gradle 插件 3.2.0-alpha14 应用,它重写了 JAR 和 AAR 依赖项(以及可传递)的字节码和资源 依赖项)来引用新的 androidx 打包类和 工件。我们还将提供一个独立的翻译工具作为 .JAR。
在gradle.properties
文件中,确保您具有:
android.enableJetifier=true
android.useAndroidX=true
我在一个小项目中遇到了Leak Canary的问题,通过将Android Gradle插件升级到适当的版本来解决。 https://github.com/square/leakcanary/issues/1103
转到 app/build.gradle,在依赖项中,删除以下行:
implementation "com.android.support:appcompat-v7
尝试添加
android.enableD8 = false
到 gradle.properties 文件。
如果你想使用
com.android.support:support-v4:28.0.0-alpha1
,那么你必须使用
com.android.support:design:28.0.0-alpha1
而不是
com.google.android.material:material:1.0.0-alpha1.
使用这个
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 28
defaultConfig {
applicationId "ir.uncode.newdesign"
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguardrules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
implementation 'com.android.support:design:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'
implementation 'com.android.support:animated-vector-drawable:28.0.0-alpha3'}
repositories {
mavenCentral()
}
如果问题仍然存在,请在类和 xml 上更改"导入"。
喜欢:
import androidx.fragment.app.Fragment;
import android.support.v4.app.Fragment;
或
import androidx.core.app.ActivityCompat;
import android.support.v4.app.ActivityCompat;
或
com.google.android.material.bottomappbar.BottomAppBar
android.support.design.bottomappbar.BottomAppBar
如果你使用的是Android Studio V. 3.2.1,你可以简单地去工具栏打开重构->迁移到AndroidX,Android studio会负责剩下的工作。
我正在使用安卓工作室3.3版本。我浪费了一天半的时间寻找这个解决方案。我尝试了这篇文章中的所有答案,但没有任何帮助。然后我找到了帮助我解决错误的链接。
我删除了我添加的以下依赖项,
implemntation 'com.google.android.material:material:1.0.0'
相反,我使用了安卓设计支持库,
implementation 'com.android.support:design:27.1.1'
尝试设置android.enableJetifier=true
并android.useAndroidX=true
在您的 gradle.properties 文件中。
如果您必须更改为3.2.0
3.1.0
:
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
移动到
androidx
删除所有以
import android.support.*
将所有导入更改为
import androix.*
和相应的组件。