Android(安卓)studio 3.0问题、错误积累
[Android Studio 日常奇怪问题记录] 之ERROR: Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21
问题原因:
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
error: - inner element must either be a resource reference or empty./values/values.xml Daemon: AAPT2
如上错误原来是values.xm资源文件中,元素定义了id后,就不能在后面给值了
发现
- false
改为
Android Studio error: Unable to start the daemon process的解决方法
在 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即可。重启动后,它会自动为你创建一个新的。
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 错误
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'
}
处理guava-21.0不兼容Android错误:DexArchiveBuilderException: Failed to process guava-21.0.jar
在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.jarError: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
android第三方库导致support版本冲突解决方案
问题
升级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
。。。
更多相关文章
- Android(安卓)Studio导入项目错误之Gradle版本过高
- 打开eclipse的opens the android sdk and avd manager提示错误:e
- 检测android app是否第一次启动
- android中引入okhttp
- android关于手机和3.0版本以上平板去标题问题
- Android(安卓)CTS包下载地址
- Android(安卓)单元测试 Error: ShouldNotReachHere()
- Gradle上传aar到Maven
- 在Android上做List Remove的时候遇到的异常