日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客...

發布時間:2025/3/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安装开源项目 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)出现的各种问题 -- 自己的第一篇博客...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。