缘由(可跳过)

作为一个开发小白,有着各种各样想实现的功能,
最近想实现一个图片查看的功能(有放大,缩小等功能),发现了 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. kafka工作原理介绍

    两张图读懂kafka应用: Kafka 中的术语   broker:中间的kafka cluster,存储消息,是由多个server组成的集群.  topic:kafka给消息提供的分类方式.brok ...

  2. Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy

    1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...

  3. Spring4.x Jpa + hibernate的配置(废弃JpaTemplate)

    近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 ...

  4. python 8

    一.文件操作初识 1. path 文件路径 F:\文件.txt encoding 编码方式 utf-8, gbk ... mode 操作方式 只读,只写,读写,写读,追加... f1 = open(r ...

  5. C语言中的二维数组

    1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...

  6. 如何将本地git仓库中的代码上传到github

    1,  在github上新建一个仓库,比如为:CSS3Test,仓库地址为:https://github.com/hyuanyuanlisiwei/CSS3Test 2,本地git仓库中的文件项目为C ...

  7. BurpSuite工具抓取手机的流量

    1.设置BurpSuite监听策略(和电脑区别不大就简单写了) 打开BurpSuite进入Proxy-Options界面,修改端口为8082.地址为第二项所有接口,点击OK 2.设置手机代理 首先保证 ...

  8. vue day8 table page

    @{ ViewBag.Title = "Home Page"; Layout = null; } <!DOCTYPE html> <html> <he ...

  9. JDK安装与环境配置——学习JAVA的准备工作

    1.安装JDK 官网,版本看了也不明白区别,我下载的第一个 JAVA SE 12 https://www.oracle.com/technetwork/java/javase/downloads/in ...

  10. java 线程理解

    import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util. ...