導航:首頁 > 操作系統 > android資源沖突

android資源沖突

發布時間:2023-01-24 04:53:05

① 處理Gradle依賴沖突

    在android開發過程中會總會引入一些第三方依賴庫,無可避免的會遇到jar/aar包沖突,Manifest合並沖突,資源沖突等問題

    基於此本次主要記錄下如何處理類沖突,jar/aar版本沖突。先由常見的com.ta.utdid2.a.a.a found in moles alicloud-android-utdid-2.5.2 android-utdid沖突入手,常見於支付寶sdk和友盟Sdk的沖突。

磨刀不誤砍材工,在處理沖突問題前,要先了解下如何查看Gradle依賴樹,在AS的Terminal里輸入 gradle :app:dependencies 即可查看gradle依賴樹。輸出結果如下(示意)

輸出依賴樹後,在裡面搜索android-utdid,會發現有多個第三方庫對utdid存在引入關系。

經過查看得知utdid我依賴為:com.aliyun.ams:alicloud-android-utdid:2.5.2

該依賴庫的Group為com.aliyun.ams。mole為alicloud-android-utdid

下面要做的就是去除其他依賴對utdid的引入,僅保留一次有效的引用關系即可。

implementation ('com.xxx:yyy:0.0.0.4'){

        exclude mole: 'alicloud-android-utdid'

    }

implementation ('com.aaa:bbb:0.4'){

        exclude mole: 'alicloud-android-utdid'

    }

    常規查閱資料大家推薦去除重復引入的方法都是exclue group。實際上如該group下的依賴項較多,且只想去除某一個依賴時,這時使用exclude mole能更細節且准確的控制去除某一項的引用關系。

以上為utdid的處理方式

關於微信sdk沖突的處理方式

    問題背景:我方已集成wechat-sdk-android-with-mta sdk用作分享和支付功能,隨著業務發展需要接入一個第三方業務Sdk,該Sdk內部具備支付功能,他們也進行了wechat-sdk-android-with-mta的引入,且兩個微信sdk的版本不一致。

    此時如果進行打包就會爆出各種com.tecent.xx的類沖突。

    處理方式參照支付寶sdk的沖突方式

    implementation ('com.xxx:zzz:0.6'){

        exclude mole: 'wechat-sdk-android-with-mta'

    }

  關於網路地圖API_KEY沖突的處理方式

  網路地圖需要在主工程的Manifest里注冊一個API_KEY。如此時引入的第三方Sdk里同樣有網路地圖,且已經在內部注冊了com..lbsapi.API_KEY。

  此時會出現Manifest.xml的合並沖突。解決方式為增加tools:replace="android:value"屬性即可

          <meta-data

            android:name="com..lbsapi.API_KEY"

            android:value=""

            tools:replace="android:value"/>

    在開發中不同第三方Sdk對基礎依賴的版本會發生變化,比如ktx和compact的版本。需要強制指定這些基礎依賴的版本統一

    方式為在build.gradle(app)里增加

    configurations.all{

    resolutionStrategy.force'androidx.core:core-ktx:1.8.0-alpha01'

    }

    後續將持續添加AndroidStudio里各種沖突的處理方式。

② android studio怎麼解決沖突

在使用svn 的時候,當然update別人的代碼會彈出對話窗口提示你沖突,是否合並。合並有三種方案,accept yours 使用你的、accept theirs使用別人的版本和 merge合並。
當你選擇merge合並的時候,會彈出代碼對照合並窗口,一共是三個屏,左右兩邊的是不同的代碼,沖突的地方會被高亮顯示出來,帶有箭頭和叉叉。通過點擊箭頭將兩邊的沖突代碼添加到中間的合並區域中去,點叉叉則放棄那一段代碼。所有沖突處理完成以後merge成功。
2、建議使用git作版本控制,基本操作和svn 差不多,但你可以將代碼commit 在本地,然後再pull 倉庫裡面的代碼來進行merge,這樣就算merge 過程中點錯了什麼,也能將代碼回滾到你上次commit 的版本,再次進行pull 和 merge conflict。一般git 的操作就是先commit,然後Pull,最後push。合並沖突代碼的界面和svn 是一樣的。

③ Android開發之引用三方庫導致SO庫沖突的解決辦法

從這個圖片可以看出 匹配到了多個 libc++_shared.so

packagingOptions的用法使用方法packagingOptions常見的設置項有
exclude、
pickFirst、
doNotStrip、
merge。
exclude
過濾掉某些文件或者目錄不添加到APK中,作用於APK,不能過濾aar和jar中的內容。

④ 終極方案:快速解決Android項目依賴沖突

沖突類型無非是類、jar包重復,比如:

在此不多做介紹了,直接上解決方案

1、配置顯示沖突依賴詳細信息

2、編譯,查看控制台詳細輸出

1、project依賴排除示例

2、遠程依賴排除示例

參考鏈接:如何exclude aar包中的某個jar包

核心:

解壓aar文件到tmpDir目錄下

② 找到classes.jar包,用壓縮工具打開,刪除目標文件

③ 將tmpDir重新打包成一個新的aar

⑤ android eclipse開發 drawable文件夾 資源文件大小寫沖突

Android res文件夾下的所有文件不能有大寫字元,如果出現大寫字元會導致R.java無法生成
Android項目是的R文件是由系統生成的資源的定義,如果出同沖突,錯誤,那麼android 無法生成R文件 ,即使有時候你xml文件沒有錯誤,他都無法生成。針對此問題,總結以下幾個方面的原因:

1. xml本身有錯誤
R.java這個文件是會自動生成的,但是如果你不小心xml文件寫錯了,或者不小心在編輯xml的時候點擊了run(其實這個時候會運行這個xml文件,會生成一個同名的xml文件,後綴為xx.out.xml),然後正巧你游clear了一下項目,你可能會發現gen下面的R.java的文件沒有了,這個在剛開始的時候很氣人,真不知道怎麼解決,後來發現,只要xml文件有問題,系統是絕對不會給你自動生成這個R.java文件,因為他要參照你的每張xml里的數據來生成R.java,所以自然就生成不了了。雖然知道了原因但是問題頭疼,假如項目的layout xml文件有幾十個,這個時候怎麼辦,難道要一個一個xml的看嗎,呵呵,其實也不是,把console中的信息clear一下,然後再clear項目一下,這個時候,console中會有很多紅色的信息,參照這個肯定能准確的找到哪個文件報錯了。
下面這個事誤運行了xml文件,可以看到gen的包不是空的,R.java文件也存在,並且明確的支出了是layout包中的錯誤

2. 編碼格式不正確
有時候由於編碼格式問題,造成無法生成R文件,此時後,把編碼格式變成GBK或者UTF--8即可

三,配置問題,轉義字元的問題
因為XML有些特殊字元需要轉義,例如"<>&;"' "等

⑥ Android引入多個jar包,沖突問題解決方案

Android引入多個jar包,沖突問題解決方案(引入jar包,即本地文件) 以引用載入第三方框架中也有okhttp3  okio沖突講解

(PS:如果不知道是那個jar沖突可以用指令gradlew app:dependencies查看)

1.找到項目中的libs->對應沖突的第三方包.jar。

3.用解壓工具打開(不是解壓,是打開。比如windows下可用360解壓打開)。

4.刪掉重復引用的包(okhttp3 + okio)。

5.重新打開項目,等待編譯。

6.可能出現innerClass mission警告,可以忽略掉,或者clean build。

7.如果還報錯的話那麼在app build.gradle加入:

packagingOptions {

          exclude 'META-INF/proguard/okhttp3.pro'

}

溫馨提示:

      如果你的項目是因為剛剛添加了某個網路載入依賴導致的,那麼你就查看下這個庫下的哪一個依賴沖突了,在添加這個依賴的時候把它給過濾掉。具體寫法如下。

implementation ('com.***.***:XXX:1.2.0'){ // 所加的第三方框架

        exclude mole: 'okhttp:3.10.0'

}

//或者要把組名一起添上去

implementation ('com.***.***:XXX:1.2.0'){ // 所加的第三方框架

        exclude group: 'com.squareup.okhttp3'

}

⑦ android 卡片畫廊效果及RecycleView、ViewPager、ScrollView之前的沖突解決

1、內容需要通過卡片的形式來展現,還有支持載入更多,所以最底部使用RecyclerView,最好是做成預載入形式,提前n頁載入下一頁,這樣體驗更好。
2、為了展示更多內容卡片內要支持垂直分頁,這時候我使用了ViewPager,一是可以更好的管理分頁內容,二是ViewPager的垂直分頁容易實現,三是可以處理不同控制項之前的滑動沖突
3、ViewPager第一頁使用的可回彈的ScrollView,可以在下拉的時候做一些動畫之類的操作,例如關注操作等。
4、ViewPager的第二頁只是一個普通的ScrollView,具體使用可以根據實際情況來處理

1、RecycleView的分頁效果基於PagerSnapHelper,RecyclerView在25.1.0版本中添加了一盒基於SnapHelper的子類PagerSnapHelper,可以使RecyclerView像ViewPager一樣的效果,一次只能滑一頁,而且居中顯示。

2、卡片的效果是在滑動的時候根據RecycleView的偏移量計算縮放因子進行縮放

3、RecycleView的item內有一個垂直分頁的VerticalViewPager,VerticalViewPager是在ViewPager上轉換X,Y即可

4、解決ViewPager與RecycleView滑動的沖突,在ViewPager中屏蔽父視圖的上下滑動事件

5、解決ViewPager子視圖ScrollView的沖突,在ViewPager中攔截事件

6、解決ViewPager與BounceScrollView的沖突,在下拉過程中有時會被ViewPager攔截

以上就是此項目中的所有關鍵點。

ScrollViewDemo 歡迎Star

RecycleViewCardGallary

閱讀全文

與android資源沖突相關的資料

熱點內容
c語言中什麼叫源代碼未編譯 瀏覽:370
程序員拒絕做接盤俠 瀏覽:741
gcc編譯指定動態庫路徑 瀏覽:583
合肥plc編程教學 瀏覽:962
安卓55都有什麼埠 瀏覽:931
世界旅遊用什麼app導航 瀏覽:452
單位發布命令 瀏覽:137
程序員懟主管電影 瀏覽:416
cadpdf列印的 瀏覽:160
柴油無pdf 瀏覽:331
科技時代編程教學 瀏覽:108
php客戶端地址伺服器地址 瀏覽:518
php動漫源碼 瀏覽:919
絡程序員 瀏覽:566
蘋果手機app更新怎麼暫停 瀏覽:695
命令法典在哪交 瀏覽:795
如何將軟體附帶文件夾 瀏覽:392
ppt轉換pdf軟體 瀏覽:707
phpjsondecode亂碼 瀏覽:726
如何在伺服器管理器添加角色 瀏覽:398