Android Studio无法找到jar包

总结一下工作中遇到的小问题

实际上本次的问题主要难在问题定位上。当你发现问题是Android Studio不能找到jar包时,已经成功了一半了。


场景

同样是出现在导入项目的时候。项目已经导入成功。AutoSync也没有出现问题。当我信心满满的build项目时。报了一个奇怪的错误:
build后出现的信息
这个报错,描述的是该语句中的 .getVolumes() 方法无法被识别。该方法被封装到了公司提供的某个jar包中,但是一般的jar包在build过程中都能顺利导入。于是我去询问了一下同事。得知,公司重写了SDK28, .getVolumes() 正是保存在重写后的jar包中,而AS在build的过程中没有找到这个包的路径,因此使用了自带的SDK,自然就无法找到这个方法了。
那么接下来只需要在APP目录下的build.gradle中,在dependencies中配置:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    compileOnly files('libs/xxxxxxxxxxxxxx.jar')
}

应该就可以顺利编译通过了。估计很多时候到这一步问题也就解决了。
可惜这次偏偏没有这么简单。还是报了上述同样的错误。期间有进行 clean projectrebuild 等操作,还是找不到jar包。无奈之下再次询问同事。得知,除了需要在 APP目录下的build.gradle 中配置依赖,还需要在 根目录下的build.gradle 中配置如下依赖:

allprojects {
       tasks.withType(JavaCompile){
        options.compilerArgs.add('-Xbootclasspath/p:xxxxxxxxxxxx.jar')
    }
}

配置好后,进行clean projectrebuild等操作,结果还是不行。期间还出现了上一篇文章提到的问题Missing essential plugin.,气得我卸载了 Android Studio4.2.2 ,用公司自带的安装包重装了一遍AS,装好后发现是远古版本3.2。然而,在 Android Studio3.2 版本中,我居然成功build了项目。
我和我的同事都满脸问号。在AS3.2中直接 Update到4.2.2 版本,项目居然又不行了!
在快要崩溃的时候,同事指出, 根目录下的build.gradle 中配置的地址是相对地址,也许是AS版本更迭的原因,相对地址和绝对地址的适配成都不同。如果改成绝对地址,说不定就可以了。于是我改成绝对地址,重新build,一波三折,总算成功!

allprojects {
       tasks.withType(JavaCompile){
        options.compilerArgs.add('-Xbootclasspath/D\\xxx\\xxx\\xxxxxxxxx\\xxxxxxxxxxxx.jar')
    }
}

出现原因

jar包没有导入成功,依赖没有产生,导致jar包内部函数无法被调用。


处理方式

1.一般来说,只需要将jar包放入项目的 libs 目录下,然后在project目录中右键该jar包,选择 “Add as library” ,即可导入成功。
2.当出现场景中的情况时,需要在 APP目录下的build.gradle 文件中配置如下代码:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    compileOnly files('libs/xxxxxxxxxxxxxx.jar')
}

3.如果第二步仍无法解决该问题,那么继续在 根目录下的build.gradle 文件中配置如下代码:

allprojects {
       tasks.withType(JavaCompile){
        options.compilerArgs.add('-Xbootclasspath/p:xxxxxxxxxxxx.jar')
    }
}

要注意,这里使用的是相对地址,也可以使用绝对地址,只需要替换 p:xxxxxxxxxxxx.jar 部分即可。

4.重新编译时,最好先 clean project ,再进行build操作。


问题解析

本问题仍是出现在项目导入编译的过程中。据我与同事的讨论。认为主要原因如下:
1.项目将SDK重写后封装成了新的jar包,而Android Studio在没有强行配置新jar包的依赖时,会优先指向自带的SDK,因此导致找不到内部方法,build失败。
2.不同版本的Android Studio对绝对路径和相对路径的识别程度不同。确认路径配置没有问题的情况下仍无法通过,则可以考虑改为绝对路径。
3.实际上本次的问题主要难在问题定位上。当你发现问题是jar包不能成功导入时,已经成功了一半了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值