目录
目录
在build文件注明仓库来源依然无法编译某些glide等github开源项目
解决gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed
Unable to resolve dependency for ':app@debug/compileClasspath'
-
升级到studio3.1.2之后无法编译jar包
升级之前module编译jar包的命令如下:
task makeJar(type: Copy) {
delete 'build/libs/adsdk.jar' //删除已经存在的jar包
from('build/intermediates/bundles/release/')
into('build/libs/')//jar包的保存目录
include('classes.jar')//设置过滤,只打包classes文件
rename('classes.jar', 'adsdk.jar')//重命名,mylibrary.jar 根据自己的需求设置
}
makeJar.dependsOn(build)
升级之后一直无法编译,后来检查发现build/intermediates/bundles/release/ 这个目录已经不存在,bundles目录改为:package-classes 目录,所以改为build/intermediates/package-classes/release/即可编译成功。
-
在build文件注明仓库来源依然无法编译某些glide等github开源项目
repositories {
mavenCentral()
google()
jcenter()
}
因为glide等一些开源项目在maven管理,使用的时候在项目的build文件要注明mavenCentral(),开始的时候卸载google()和jcenter下面,导致总是无法编译通过。发现他找的目录是错误的。要把mavenCentral放到首位。
-
implementation api compile的区别
sutdio 升级到3.0之后,gradle工具也升级到了4.0的版本,这个时候在配置里面的依赖关键字compile 宣布放弃,使用api和implementation,如果不看他们之间的区别会导致发生项目编译不成功的情况。
compile 'org.greenrobot:eventbus:3.1.1'
compile 可以看做等于与api
api 'org.greenrobot:eventbus:3.1.1'
他们与implementation不同,比如app module通过implementation依赖于moduleA, 而moduleA通过implementation依赖moduleB,那么编译app module的时候是无法将moduleB进行编译的。这个时候如果app module也需要依赖moduleB 就会出现错误。而api会将moduleA依赖的所有module也加载进来。但是并不是就直接用api就最好。因为有时候,app module并不需要依赖其他module,那么用implementation也会提升编译速度。
-
项目不停的indexing的解决方法
编译一个开源项目发现studio频繁的indexing,那是非常的频繁啊。最后发现是2个module的名称有问题。改过之后就ok了。在网上也发现了其他的解决方法:
解决办法:File--> Invalidate Caches/Restart--> Invalidate and Restart.
这个方法也的确解决了一些人的问题。
-
解决gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed
在terminal中输入gradlew compileDebugSources 来看看具体的日志,看看代码哪里出错。
-
Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:27.1.1
这个错误是因为在build.gradle中的buildTypes里面,只写明了release版本,没有debug版本。这个时候需要把debug版本写出来
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{
minifyEnabled false
}
}