问题原因:
kotlin插件升级到1.2.41时提示kotlin-stdlib-jre7过时
解决办法:
将org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21
改成org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21
原文:https://blog.csdn.net/u010117864/article/details/89416505
如上错误原来是values.xm资源文件中,元素定义了id后,就不能在后面给值了
发现
- false
改为
在 Android Studio 上新建项目,出现 Unable to start the daemon process. 错误,具体错误信息如下:
Error:Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at https://docs.gradle.org/4.1/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
解决方法
方法一:删除 C:\Users\UserName\.gradle 目录,重新启动 Android Studio即可。重启动后,它会自动为你创建一个新的。
build.gradle文件引入资源配置问题
修改前
compile(name: 'lib', ext: 'jar')
修改后
//compile(name: 'lib', ext: 'jar')
compile files('libs/guavalib.jar')
即可解决
其他原因 包重复 分包处理
添加依赖compile com.android.support:multidex:1.0.1,
让application继承MultiDexApplication
删除重复的依赖
1.检查lib目录下是否有重复引用的jar包
2.删除或者注释主项目中的support依赖
dependencies {
//implementation 'com.android.support:appcompat-v7:26.1.0'
}
保留Lib库的依赖
dependencies {
implementation 'com.android.support:appcompat-v7:26.1.0'
}
在Android项目里使用guava-21.0报错:
Error:com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\cc\.gradle\caches\modules-2\files-2.1\com.google.guava\guava\21.0\3a3d111be1be1b745edfa7d91678a12d7ed38709\guava-21.0.jar
Error:com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
Error:com.android.tools.r8.ApiLevelException: Default interface methods are only supported starting with Android N (--min-api 24): java.util.Collection com.google.common.collect.BiMap.values()
Error:Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
原因是guava 21使用的是Java 8,与Android不兼容。
可以把guava 21改为与Android兼容的版本23.3-android
dependencies {
compile 'com.google.guava:guava:23.3-android'
}
参考:https://majing.io/posts/10000003611166
问题
升级compileSdk版本到26,同时修改了support包的版本,报错
all com.android.support libraries must use the exact same version specification(mixing versions can lead to runtime crashes)
也就是说有引入的第三方库和目前编译版本有冲突。
解决
一般这种问题解决方案是,在指定的有冲突的库的依赖处,添加 exclude group: 'com.android.support'
,可以将冲突库不包含在编译,如
compile('xx.xxx.xxxxx:xxxxx:1.5.5') {
exclude group: 'com.android.support'
}
但是问题是我不知道哪个第三方库冲突,不可能一个个检查吧?
这时候只需要在gradle文件中添加如下代码,让所有的第三方包强制使用指定版本的support包:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
以及在自己写第三方库给别人用的时候,对于support包的依赖方式改成provided(或者compileOnly,gradle3.0),这样不会把support
打包,方便使用的人。
关于gradle3.0更多
gradle升级到3.0后,依赖的方式变得更多了,最显著的变化就是,之前一直用的compile
可以替换为implementation
, 如
implementation 'xx.xxx.xxxxx:xxxxx::1.5.5'
implementation
是指引入依赖,这个第三方包引入的东西,你在项目里无法使用,有点接口的味道,屏蔽内部实现。可以加快gradle编译的速度。
同样的对于 debugcompile
releasecompile
都有debug implementation
release implementation
与之对应。
参考:https://blog.csdn.net/c_j33/article/details/79171579
。。。