[Android Studio]报错error:failed linking references的解决方案以及有关gradle和sdk版本号的思考

手机平台应用开发 专栏收录该内容
2 篇文章 0 订阅

最近在用android studio开发app的过程中,总是遇到类似“error:failed linking references"的报错,让人很是苦恼,心态差点被搞崩,经过上网各种查阅资料,各种逛论坛,求助各位大神以及自己的一些思考,耗时居多,终于解决了这个困扰我很久的问题,甚是开心。现来分享自己的一些经验,希望能帮到各位和我有同样苦恼的同学:
话不多说,开始摆出我的问题:
这是在我用android studio1实现登陆、注册、并连接SQLite数据库进行增删改查过程中遇到的问题,由于参考了https://blog.csdn.net/midnight_time/article/details/80792255
【Android】实现登录、注册、数据库操作(极简洁)的有关内容,在如下代码:
(Code.java)
//生成随机的四位验证码图片
//画验证码
for (int i = 0; i < code.length(); i++) {
randomTextStyle(paint);
randomPadding();
c.drawText(code.charAt(i) + “”, padding_left, padding_top, paint);
}
//画线条
for (int i = 0; i < line_number; i++) {
drawLine(c, paint);
}

    c.save( Canvas.ALL_SAVE_FLAG );//保存
    c.restore();//
    return bp;

其中c.save( Canvas.ALL_SAVE_FLAG );//保存极易出现Bug:save() in Canvas cannot be applied to (int),于是我按照博主的建议在build.gradle(Module)中将sdk改为27版本
build.gradle(Module)
紧接着,我就高高兴地点了Run按钮,等待着它的成功运行,紧接着就出现了“error:failed linking references”的报错,让人很是郁闷,于是我又在网上找各种解决办法,之后又相继改了各种地方的参数,例如compileSdkVersion、minSdkVersion、androidTestImplementation等、但无一例外全部失败了,依旧是报同样的错误。这时我的心态已经崩了,也不关注这个项目本身了。一心一意无查找资料找出出现这个错误的原因,而不再仅仅只限于这个项目本身了。最后,终于发现,出现这个错误的根本原因就是因为gradle和sdk版本号的问题,简单点来说就是build.gradle(Project)、build.gradle(Module)、gradle-wrapper.properties这三个文件中相关的部分参数出现了问题,必须找到一个能个成功运行的依赖版本,参数全部配置正确,而不能只改某一个地方,这样永远无法解决这个报错,我之前就是犯了这个错误,每次只改一个地方,而不是整体配置。这个问题是无法避免的,因为谷歌无时无刻都在进行sdk版本和gradle版本的更新,新的版本出来了,旧的版本中的部分功能自然无法使用了。
好了,问题根源找到了,接下来就是要完全解决这个问题了
参考了博主的依赖版本配置,最后终于解决了这个报错。
下面是博主的gradle版本和sdk版本配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这些就是我运行成功时我所说的那三个文件的截图,请认真核对每一个地方,不能有一点错,否则还是会报错,对了,改为这种依赖版本后,包的导入语句也应变成相应的“import android.support.v7.app.AppCompatActivity”;
好了,问题终于解决了!这里也给大家看看我之前的版本(这种依赖版本也是正确的,可以成功运行的,并且还是较新的版本,因为之前在项目中为了达到生成随机验证码图片的目的,使用了部分函数,需要我自降版本号,由28降到了27)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时对应的包导入语句也应相应的变成
“import androidx.appcompat.app.AppCompatActivity;”
这里顺便还补充一种情况,也是我之前很多次遇到过的一种报错,可能有很多种不同的报错形式,这里不一一列出来,但具体原因都是一样的,主要是因为在新版本中调用了较旧版本中的方法之类的,版本不兼容,导致报错。
具体的解决方法如下:
在如下所示的文件中:在这里插入图片描述
加上两条如下的语句:
android.useAndroidX=true
android.enableJetifier=true代表兼容老版本
这样问题就可以得到解决了。
总结:gradle版本号和sdk版本号非常重要,在用Android Studio开发app的过程中一定一定要重视这部分,也就是那三个文件的内容,这是非常重要的一步,是成功与否的前提。有一套能够成功运行的gradle依赖版本配置,这点是很重要的!!!
好了,这次的的分享就到这里了!!!
希望对各位在成为IT大佬的过程中遇到的问题能有一点儿小帮助

  • 3
    点赞
  • 2
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值