| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android androidStudio构建项目过程中问题解决方案(持续更新) -> 正文阅读 |
|
[移动开发]Android androidStudio构建项目过程中问题解决方案(持续更新) |
目前来说,IDE开发工具已成为一个高度集成的开发工具,我们在做android开发,目前主要有eclipse或者AndroidStudio两大阵营,由于eclipse平台基本已被放弃,所以我们目前在做的就是已AndroidStudio为核心的平台,高度集成就会出现各种兼容问题,以下将是在AndroidStudio平台开发过程遇到问题与解决方法1、libs文件夹下的资源无法加载解: 这个问题在初学者身上经常遇到,直接在build指定如下 sourceSets { main { jniLibs.srcDirs = ['libs'] } } 在build文件下dependencies引入如下 implementation fileTree(dir: 'libs', include: ['*.jar']) 如果依旧找不到,看jar包是否add上去,如果没有,右键add Library,如果在不行, 2、libs下so文件无法加载在main文件夹下新建jniLibs文件夹,把libs下文件copy进去, 修改build文件android{ sourceSets { main { jniLibs.srcDirs = ['libs'] } } } 3、引入的包冲突3.1、先把项目中引入的包都给列出来,如果列出来,通过task的help来完成 A:代表项目名称 B:代表该项目下的task C:是help文件夹下的gradle脚本 D:dependencies执行完会列出当前项目中依赖的所有项目 找到冲突包的module name,然后确定和哪个项目有冲突 如果A项目和B项目有冲突,如果剔除冲突? A:implementation 'com.test.woniu:okhttp:3.12.12' B:implementation 'com.action.memu:fire:3.12.12' 如果?A和B冲突 implementation( "com.test.woniu:okhttp:3.12.12"){ //只剔除groupid为com.action.memu下,模块为fire的 exclude group: 'com.action.memu', module: 'fire' //剔除groupid为com.action.memu所有的包 exclude group: 'com.action.memu' } ?old是低版本 new是当前最高 版本,高版本会覆盖低版本 4、布局无法预览这个问题已专门发过一片文章,可以参考布局无法预览的解决方案 5.Jar包和和aar冲突?Duplicate class xxxx found in modules这种冲突基本来源于包的冲突,可以剔除,如果module libs里面引用jar,其他aar将jar打包上传, 在整个项目中,就会报错Duplicate class xxxx found in modules,因为这个类已出现在其他module里面,即使剔除也不行。 这种解决办法: 需要用到jar的都采用libs加添加,或者都改用aar依赖库。否则还是会报错 6.so文件多份,one more than aa.so,或者其他文件多出解决办法: 1.看错误日志,多什么就将这个复制 packagingOptions{ exclude 'lib/armeabi-v7a/aa.so' } 2.如果多个项目用到aa.so文件,其实可以将aa.so做成aar依赖,或者只在一个项目libs中保持一份,这样也可以避免 7.修改gradle文件就要sync的办法有时候我们修改了gradle东西,就需要去同步一下,这样很费时,有些场景甚至不需要同步,这时候我们不同步ide可能会提示问题等 解决:我们可以忽略这些 只要点击ignore these changes,就不会立即同步 8.跑debug包无法安装:在properties文件中添加:android.injected.testOnly = false 9.引用本地代码,修改后不生效我们在做大型项目时,会将自己的module打包成aar集成到主工程或者丢给其他项目使用,但是我们在正常开发过程,又需要把自己的项目导入到主工程,进行调试,会发现突然出现代码修改完不生效 解决: 一般出现这个问题是自己的module被其他aar引用了,在主工程项目中,别人的aar包在你的项目之前已导入,在打包过程中,优先加载了别人的模块,导致你的项目被覆盖了。所以导致你本地的代码修改了不生效。debug也走不进去等情况。 出现这种情况,在调试过程中,我们可以通过dependencies查找我们的module aar被哪些aar依赖了,然后通过剔除办法将我们的项目剔除 例如: moduleA依赖了moduleB,现在moduleB注销了依赖,引入本地代码进行调试, 这时候moduleA代码已覆盖了moduleB,这时候需要moduleA剔除moduleB,moduleB本地代码才会生效。 implementation (“com.test.woniu:moduleA:3.12.12”){ exclude group: 'com.action.memu', module: 'moduleB' } 这样剔除了moduleB的依赖库,再执行,本地代码才会执行,有多少依赖在调试都要剔除本地模块库。 10.kotlin报错:kotlin library {0} was compiled with a newer kotlin compiler and not be read这个问题出现在我使用车载库的时候,升级到最高版本,androidx.car.app:app-automotive:1.3.0-alpha01库使用的kotlin版本是1.7.0,而我本地的库是1.3.10,所以在高版本会覆盖我低版本,但是无法加载本地插件,导致这个问题 解决:出现这个问题的原因还是包中库的冲突导致,最好的排查就是把项目中的依赖库给找出来,查看kotlin的库被哪些引用,引用的版本是什么?可以参考上方包冲突版本。 ? 这样很快就能定位到工程的问题出现在哪里。? ********************************************************************************************* 未完待续 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/25 4:35:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |