导航:首页 > 操作系统 > 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资源冲突相关的资料

热点内容
安卓手机mp3压缩工具 浏览:214
程序员和交易员 浏览:422
怎么变字体样式app 浏览:173
名字叫汤什么的视频app 浏览:207
金属加密键盘联系电话 浏览:333
自制解压牛奶盒子教程 浏览:62
编译高手的图片 浏览:922
单片机数码管显示时分秒 浏览:780
手指解压最简单的方法 浏览:343
韩国邮箱服务器地址 浏览:967
android版本介绍 浏览:410
pdf文件加密软件 浏览:410
长沙住房app怎么看备案 浏览:603
安装加密软件的电脑会被监控么 浏览:221
java微博源码 浏览:569
堆排序简单实现python 浏览:461
单片机引脚与键盘的关系 浏览:132
压缩火柴盒制作 浏览:38
谷歌地图android偏移 浏览:214
bitlocker硬盘加密空间 浏览:238