導(dǎo)入其他人的項目對于咱們開發(fā)人員來說是一個基礎(chǔ)仙蚜,可有些時候?qū)肓?0分鐘20分鐘甚至更久死活一直導(dǎo)不進(jìn)來耀找。這里就教大家一個輕松便捷的導(dǎo)入方法翔悠,順便跟大家探討一下導(dǎo)入程序的正確姿勢。
第一步野芒,首先查看根目錄的build.gradle文件
拿到項目之后先不著急打開導(dǎo)入凉驻,咱們先查看一下根目錄的build.gradle文件查看。
- classpath 'com.android.tools.build:gradle的版本和你本地的是否一致复罐,如果不一致涝登,直接修改成你的Android Studio版本即可
- 如果你的Android Studio使用的是2.x的版本,而要導(dǎo)入的項目恰巧使用的3.0的版本效诅,這時候就需要注釋掉repositories{}中的google()方法胀滚。
- 如果你是從Github下載的項目,可能會帶有作者發(fā)版時的配置乱投,也需要將其注釋掉:
完整的注釋步驟如下:
apply from: "dependencies.gradle"
buildscript {
repositories {
jcenter()
// 第二步咽笼,注釋
// google()
}
dependencies {
// 第一步,修改版本號
classpath 'com.android.tools.build:gradle:2.2.2'
// 第三步 ,注釋不相關(guān)的版本發(fā)布
// 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,你們直接改成你們對應(yīng)版本即可茅糜。
到這里最主要且必須的兩步都做完了七芭,下面就可以導(dǎo)入項目了,導(dǎo)入之后還是會報各種錯誤蔑赘,不要著急咱們慢慢來狸驳。
第三步,打開(導(dǎo)入)項目缩赛,查看app下的build.grade文件耙箍,并統(tǒng)一修改自己的版本號
因為Google在3.0的時候廢棄了compile,改為implementation和api了酥馍,具體區(qū)別可以自行百度辩昆。如果你要導(dǎo)入的項目是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上下載的,你需要注釋掉作者發(fā)版的信息扇丛。這里你可以對比你之前可以運行的項目的build.gradle文件术吗,把不相關(guān)的文件統(tǒng)統(tǒng)注釋掉,注意依然是注釋哦帆精。
到這里就可以build一下了较屿,可能還會有報錯,哪里報錯咱們再接著修改哪里卓练。
遇到的問題
Failed to resolve:com.android.support:appcompat-v7:報錯處理
這里是因為你的sdk版本低于27版本隘蝎,簡單粗暴的方法是直接修改成你的sdk版本即可。對于該類錯誤襟企,可參考Failed to resolve:com.android.support:appcompat-v7:報錯處理(圖片也來源于此博客)
app:transformClassesWithJarMergingForDebug 重復(fù)依賴的報錯處理
當(dāng)使用maven導(dǎo)入依賴時嘱么,可能會出現(xiàn)不同的依賴包含了同一個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 中如何解決重復(fù)依賴導(dǎo)致的app:transformClassesWithJarMergingForDebug
In <declare-styleable> FontFamilyFont, unable to find attribute android:font的報錯處理
這是因為 compileSdkVersion 和buildToolsVersion 的版本不對應(yīng)冰评,所以才會出現(xiàn)這種問題,解決辦法就是需要改成對應(yīng)的版本木羹。具體參照In FontFamilyFont, unable to find attribute android:font的報錯處理
錯誤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'
}
}
這是我目前總結(jié)的關(guān)于導(dǎo)入項目時的方法和錯誤甲雅,希望大家可以積極留言說下自己導(dǎo)包的姿勢和補充自己遇到的問題。如果對大家有幫助坑填,還希望大家點贊支持或留言抛人。