安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客...
?
一、引入開源項目的方式
使用開源項目 MultiType 的兩種方式:
1、maven引入:在主Module 的 build.gradle 中加入
dependencies { ...... compile 'me.drakeet.multitype:multitype:2.3.0'}
2、創建為 library 包:在 https://github.com/drakeet/MultiType/releases 將開源項目 MultiType 下載下來,將其中的 library 包復制拷貝到與主 Module 同個目錄下并重命名為 multitype 如下:
?
?
項目目錄:
?
接著,修改 重命名為 multitype 后的文件夾下的 build.gradle 為
apply plugin: 'com.android.library'最后,在主Module 中引入該 libaray,如下:
dependencies {...... compile project(':multitype') }
注意:?maven 引入時若指定的 sdk最低版本 與開發的項目的 sdk最低版本 沖突則要在主Module (似乎是在這里,忘了)的中覆蓋引入項目的編譯版本。創建 library 包時則可以直接在該 library 包的 build.gradle 文件中修改這個開源項目的 sdk編譯版本。無論哪種方式都要注意 主Module的 sdk最低版本 不能低于 開源項目的 sdk最低版本,不然當手機的版本低于 開源項目的 最低版本則用不了這個開源項目。
?例子:公司項目中的?minSdkVersion 8 ?而 開源項目的?minSdkVersion 9 ?,只能修改 公司項目的?minSdkVersion 為 9。
?
二、兩種方式各自出現的問題如下:
1、sdk最低版本沖突:開源項目指定的 sdk最低版本 與開發的項目的 sdk最低版本 沖突。提示如下:
Error:Execution failed for task ':xxx:processXxxDebugManifest'.
> Manifest merger failed with multiple errors, see logs
?
2、依賴包重復:開源項目需要用 RecyclerView,為兼容低版本的系統,引入了 v7包(目錄結構如下:)中的 recyclerview 的包。
?
開源項目中的 build.gradle 中的依賴如下:
dependencies {testCompile 'junit:junit:4.12'
compile 'com.android.support:support-annotations:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
}
而 RecyclerView 的使用是依賴于 v4 包的。而公司項目中有將 v7 中的 v4的jar包(v4的jar包下含 annotation 和 v4)引入單獨成為一個 library 包,這會于引入的 開源項目的依賴包()重復。
?
公司項目將 v7 自成一個 library 包如下:
?
錯誤提示:
Error:Execution failed for task ':taojinroad:transformClassesWithJarMergingForXxxDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/IntegerRes.class
?
三、解決方法
maven 引入的解決方法
1、sdk最低版本沖突
要在主Module (似乎是在這里,忘了)的中覆蓋引入項目的 minSdkVersion 。前提是主 Module 的?minSdkVersion 不能低于 開源項目的?minSdkVersion,否則在 系統版本 太低的手機上無法使用這一開源項目。
?
2、依賴包重復
將開源項目中的依賴包去掉,如下:
dependencies { ...... compile ('me.drakeet.multitype:multitype:2.3.0'){ exclude group: 'com.android.support', module: 'support-v4'exclude group: 'com.android.support', module: 'support-annotations' }
}
?
創建開源項目為 library 包的解決方法
1、sdk最低版本沖突
可以修改?主 Module 的?minSdkVersion 或 開源項目的?minSdkVersion 使它們一致。前提是主 Module 的?minSdkVersion 不能低于 開源項目的?minSdkVersion,否則在 系統版本 太低的手機上無法使用這一開源項目。
?
2、依賴包重復
前提:library 包中含 build.gradle 文件且可在里面修改相應的依賴。也就是說不能將 開源項目的 jar包 或 aar包 直接引入成為一個 library(上面提到的 公司里的創建的一個 v7 的 library 包就是這種情況。以 jar包形式引入則無法在 build.gradle 中看到引入的依賴,因此無法修改這些依賴),而應該直接將源代碼引入成為一個 library 包。如下:
不能用此方法的:
?
可用此方法的:
?將 build.gradle 中的
dependencies {testCompile 'junit:junit:4.12'
compile 'com.android.support:support-annotations:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
}
修改為 dependencies {
testCompile 'junit:junit:4.12'
// compile 'com.android.support:support-annotations:24.2.1'
// compile 'com.android.support:recyclerview-v7:24.2.1'
compile('com.android.support:recyclerview-v7:23.2.1') {
//注意:這里的RecyclerView 的版本與 v7的 library中的 v4包的版本一樣是 23.2.1
// exclude group: 'com.android.support'//這個是 exclude 掉所有 support 包
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'support-annotations'
}
compile project(':android-support-v7-appcompat')//這是 v7 的 library包 含 v4 和 annotation
}
?
轉載于:https://www.cnblogs.com/cheneasternsun/p/6212471.html
總結
以上是生活随笔為你收集整理的安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]Delphi中QuotedStr介
- 下一篇: Android开发——异步任务中Acti