导入其他人的项目对于咱们开发人员来说是一个基础, 可有些时候导入了 10 分钟 20 分钟甚至更久死活一直导不进来. 这里就教大家一个轻松便捷的导入方法, 顺便跟大家探讨一下导入程序的正确姿势.
第一步, 首先查看根目录的 build.gradle 文件
拿到项目之后先不着急打开导入, 咱们先查看一下根目录的 build.gradle 文件查看.
classpath 'com.android.tools.build:gradle 的版本和你本地的是否一致, 如果不一致, 直接修改成你的 Android Studio 版本即可
如果你的 Android Studio 使用的是 2.x 的版本, 而要导入的项目恰巧使用的 3.0 的版本, 这时候就需要注释掉 repositories{}中的 google()方法.
如果你是从 Github 下载的项目, 可能会带有作者发版时的配置, 也需要将其注释掉:
完整的注释步骤如下:
- apply from: "dependencies.gradle"
- buildscript {
- repositories {
- jcenter()
- // 第二步, 注释
- // google()
- }
- dependencies {
- // 第一步, 修改版本号
- classpath 'com.android.tools.build:gradle:2.2.2'
- // 第三步 , 注释不相关的版本发布
- // classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
- // classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }
- allprojects {
- repositories {
- jcenter()
- // 第二步, 注释
- // google()
- }
- }
- task clean(type: Delete) {
- delete rootProject.buildDir
- }
复制代码
注意, 一定要注意不要轻易删除某些东西.
第二步, 查看 gradle\wrapper\gradle-wrapper.properties 文件. 这里主要是看 gradle 版本信息
- #Thu May 25 13:52:26 CST 2017
- distributionBase=GRADLE_USER_HOME
- distributionPath=wrapper/dists
- zipStoreBase=GRADLE_USER_HOME
- zipStorePath=wrapper/dists
- distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
复制代码
我这里使用的 2.14.1, 你们直接改成你们对应版本即可.
到这里最主要且必须的两步都做完了, 下面就可以导入项目了, 导入之后还是会报各种错误, 不要着急咱们慢慢来.
第三步, 打开 (导入) 项目, 查看 app 下的 build.grade 文件, 并统一修改自己的版本号
因为 Google 在 3.0 的时候废弃了 compile, 改为 implementation 和 api 了, 具体区别可以自行百度. 如果你要导入的项目是 3.X, 而你的版本是 Android Studio 2.X, 那么就需要把所有 implementation 改回 compile.
如以下:
3.0 之前
- compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
- compile 'io.reactivex.rxjava2:rxjava:2.1.3'
3.0 之后
- implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
- implementation 'io.reactivex.rxjava2:rxjava:2.1.3'
除以上之外, 还有以下:
- androidTestCompile(前)
- androidTestImplementation(后)
- testCompile(前)
- testImplementation (后)
复制代码
如果你的项目是从 Github 上下载的, 你需要注释掉作者发版的信息. 这里你可以对比你之前可以运行的项目的 build.gradle 文件, 把不相关的文件统统注释掉, 注意依然是注释哦.
到这里就可以 build 一下了, 可能还会有报错, 哪里报错咱们再接着修改哪里.
遇到的问题
Failed to resolve:com.android.support:appcompat-v7: 报错处理
这里是因为你的 sdk 版本低于 27 版本, 简单粗暴的方法是直接修改成你的 sdk 版本即可. 对于该类错误, 可参考 Failed to resolve:com.android.support:appcompat-v7: 报错处理 https://blog.csdn.net/mhl18820672087/article/details/78385361 (图片也来源于此博客)
app:transformClassesWithJarMergingForDebug 重复依赖的报错处理
当使用 maven 导入依赖时, 可能会出现不同的依赖包含了同一个 jar, 在编译期间不会报错. 可一旦 run app 的时候, 就会报
- Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
- > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: xxx.class
复制代码
解决的方法是在引入依赖的时候把相同的 jar 去除掉. 具体可以参照 Android Studio 中如何解决重复依赖导致的 app:transformClassesWithJarMergingForDebug https://blog.csdn.net/cx1229/article/details/52786168
In FontFamilyFont, unable to find attribute android:font 的报错处理
这是因为 compileSdkVersion 和 buildToolsVersion 的版本不对应, 所以才会出现这种问题, 解决办法就是需要改成对应的版本. 具体参照 In FontFamilyFont, unable to find attribute android:font 的报错处理 https://blog.csdn.net/sinat_36668731/article/details/81130913
错误 Conflict with dependency 'com.google.code.findbugs:jsr305' 解决方法
具体错误是:
Warning:Conflict with dependency 'com.google.code.findbugs:jsr305'. Resolved versions for app (3.0.1) and test app (2.0.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
复制代码
解决办法是在项目的 app 根目录中 build.gradle 中加入
- android {
- configurations.all {
- resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
- }
- }
复制代码
这是我目前总结的关于导入项目时的方法和错误, 希望大家可以积极留言说下自己导包的姿势和补充自己遇到的问题. 如果对大家有帮助, 还希望大家点赞支持或留言.
来源: https://juejin.im/post/5b5179d4e51d45195b338196