IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android Studio无法找到jar包 -> 正文阅读

[移动开发]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包不能成功导入时,已经成功了一半了。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:18:51  更:2021-07-15 16:19:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 2:00:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码