缘由(可跳过)

作为一个开发小白,有着各种各样想实现的功能,
最近想实现一个图片查看的功能(有放大,缩小等功能),发现了 PhotoView 这个开源框架,
用了它,腰不疼,腿不酸了 ...


添加依赖

as添加依赖的过程比较简单,就不上详细过程图片了

导入模块:
File -> New -> Import Module
添加依赖:
File -> 项目结构 -> 依赖


错误锦集

按顺序一个接着一个

1. ERROR: Plugin with id 'com.github.dcendents.android-maven' not found.

原因:
不同的gradle版本需要不同marven-gradle-plugin版本
解决:
将版本修改为正确的版本即编译通过,修改根目录下的 build.gradle

dependencies {
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
}

2. ERROR: Cannot get property 'sdkVersion' on extra properties extension as it does not exist.

原因:
引入的第三方库的 build.gradle 会根据我们项目 build.gradle 的 ext{} 中定义的数据进行配置。
gradle统一入口版本管理的初衷是为了解决一个项目只要一个地方修改,各个引用的模块就可以自动生效/修改,从而达到了一个地方修改各个地方生效的好处,同时能保持gradle引用库版本的一致。
解决:
在根的 build.grale 的 ext{} 处添加相应的信息,如果没有 ext 的话可以自己在结尾对应添加

3. add 'tools:replace="android:appComponentFactory"

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

? 原因:
Androidx、Android support 库,两个不能和平共处?请各位大佬留言解答
据说原有的库太乱太难管理了,要开始用 Androidx
解决:
根据日志要求在 AndroidManifest.xml 添加

4. Error: Program type already present: androidx.versionedparcelable.NonParcelField



?原因:
Androidx和Android support库不能共存
解决:
参考了几个大佬写的文章
Androidx和Android support库共存问题解决
Error:Program type already present: androidx.versionedparcelable.NonParcelField
在 gradle.properties 添加

android.useAndroidX=true    //为项目启用 Androidx
android.enableJetifier=true    //#依赖包也迁移到 Androidx, 若没有第三方依赖,可以设置为 false

然后全部将 support库 转成 Androidx库 的(会提示将代码保存到 .zip ,大家记得保存一下),然后执行重构即可

是不是发现自己很多文件都不能用了,v7 的包都导入不了,删除原有的导入,会自己添加新的库的包


参考:

工具:

Android Studio(as)

框架

PhotoView

文章

Androidx和Android support库共存问题解决
Error:Program type already present: androidx.versionedparcelable.NonParcelField

一个小白用 PhotoView 引起的学习记录的更多相关文章

  1. Selnium + POM + Pytest:学习记录

    简介 selenium POM Pytest 结合,通过Pytest fixture 来传递Driver 保证一个测试用例[1] :driver[1] 学习记录 插件包 selenium: 操作浏览器 ...

  2. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  3. Delphi中,indy控件实现收发邮件的几点学习记录( 可以考虑加入多线程,用多个邮箱做一个邮箱群发器) 转

    关于用Delphi中的Indy控件实现收发邮件的几点学习记录             这几天心里颇不宁静,不是因为项目延期,而是因为自己几个月前做的邮件发送程序至今无任何进展,虽然一向谦虚的人在网上发 ...

  4. git原理学习记录:从基本指令到背后原理,实现一个简单的git

    一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...

  5. Java小白集合源码的学习系列:LinkedList

    目录 LinkedList 源码学习 LinkedList继承体系 LinkedList核心源码 Deque相关操作 总结 LinkedList 源码学习 前文传送门:Java小白集合源码的学习系列: ...

  6. Python全栈工程师系列学习之学习记录

    @ 目录 前言 Day 01 一.python的历史和种类 二.安装python解释器以及配置环境变量 三.变量.常量和注释 Day 02 Day 03 Day 04 Day 05 Day 06 一. ...

  7. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  8. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  9. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

随机推荐

  1. 【等价转换】—— min/max 的转换与互相转换

    0. min 与 max 的转换 {max(X,Y)=X+Y−min(X,Y)min(X,Y)=X+Y−max(X,Y)min(X,Y)+max(X,Y)=X+Y" role="p ...

  2. 工具提高效率 - iterm2

    快捷键 command + d, command + shift +d 显示所有记录 ITERM默认设置了终端能保留的历史输出行数,在进行调试时特别不方便,一旦输出过多就无法看到完整的历史记录. 在P ...

  3. java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationPro

    java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationPro ...

  4. ORACLE用户表空间使用情况查询

    1.查询用户使用的表空间: select username,default_tablespace,temporary_tablespace from dba_users where username ...

  5. concat_ws 使用在hive spark-sql上的区别

    concat_ws() 在hive中,被连接对象必须为string或者array<string>,否则报错如下: hive> select concat_ws(',',unix_ti ...

  6. QT5.10+VS2013 TCP 一对一简单C/S架构通信

    ---恢复内容开始--- QT~俺老孙又回来啦~ 买的那本书上面关于tcp的内容就七八页,而且都是过于简单的东西,想进一步就要度娘很久很麻烦,还是喜欢看书(嘿嘿嘿~) 大致的思路就是两个项目,一个cl ...

  7. 理解java容器:iterator与collection,容器的起源

    关于容器 iterator与collection:容器的起源 iterator的简要介绍 iterable<T> iterator<T> 关于remove方法 Collecti ...

  8. java 注解 知识整理

    一.前言 注解(也称为元数据)为我们在代码中添加信息提供了一种方法,它在 一定程度上将元数据与源代码文件结合在一起.它是从java 5 开始引入的.通过使用注解,我们可以将元数据保存在Java源代码之 ...

  9. cordova闪屏插件插件使用:cordova-plugin-splashscreen

    欢迎页本地插件,默认建议包含.启动本地应用时显示指定的图片(启动页) 1. 添加插件:cordova plugin add cordova-plugin-splashscreen 2. 调用方法:

  10. ANSYS分析中的单位

    ANSYS输入的数值的单位换算比较复杂,参数的单位需要自己进行定义. 不同单位对应课件文件