Android Studio填坑之路

Android Studio是个强大Android开发工具,每个新版本的发布都有带来新的惊喜和爽快,但是同时也带来惊吓和糟糕,这边文章就是收集开发中遇到的细节问题以及解决方法。

ADB链接不稳定,总是断和重连

遇到这样的问题,先是百度及google各种查,答案千篇一律,都不及解决问题,后来实在没有折,尝试升级studio、更换数据线还是不行,最后升级ADB 版本,在sdk tools里面包管理窗口找到升级项,就好了,稳定的很。

解析打包出的Apk没有versionCode和versionName
开发环境背景:Andorid studio 3.0.1+ buildToolsVersion ‘26.0.2’
问题:在apktool下反编译出的AndroidManifest.xml中没有versionCode和versionName配置,也通过不是一些apk检查工具,但是实际上是存在的,运行时候能解析出,有些工具也能解析出来。

这个问题就很奇怪,实际是有,但是有的工具就是解析不出来,但是又能解析出别人的apk,这就让我纠结了好久到底问题出在哪里。通过测试了好久了,就本环境下打包的apk确认在某平台下检查不出。所以只能把目光转移到本开发环境,想想之前好像没有这个问题,这个问题肯定是在打包环境下产生的,AndroidManifest是由aapt进行编译的,所以看下编译工具配置 buildToolsVersion ‘26.0.2’。难道是版本的问题,故修改了几次到低版本发现均不行,无奈之下突然发现了可以升级到27.0.3。抱着侥幸心里升级测试了下,特么还真可以。经过仔细测试,发现25和26都不行,貌似27解决了这个问题。

JavaLib添加第3方库编译通过运行找不到类:java.lang.NoClassDefFoundError
开发环境背景:Andorid studio 3.0.1+ buildToolsVersion ‘27.0.3’
问题:发生java.lang.NoClassDefFoundError异常,不能找到引用的第3方jar

根据问题类型,最先去排查是否对第3方库配置引用是否有问题,在javalib module中的build.gradle文件配置中发现已经compile了libs下的第3方库,并且src下java代码能正常引用第3方库的api,说明编译引用和配置都没有问题。那为何还是运行时候找不到Class呢。个人就随便找是否有其他配置生效的地方有问题,发现module下还有个xxxx.iml文件格式文件,打开一看这个是对module的项目配置,其中有个component配置如下,看起来有点蹊跷:

 <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
    <output url="file://$MODULE_DIR$/build/classes/java/main" />
    <output-test url="file://$MODULE_DIR$/build/classes/java/test" />
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
      <excludeFolder url="file://$MODULE_DIR$/.gradle" />
      <excludeFolder url="file://$MODULE_DIR$/build" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" exported="" scope="PROVIDED" name="okhttp-3.2.0" level="project" />
    <orderEntry type="library" exported="" scope="PROVIDED" name="okio-1.7.0" level="project" />
    <orderEntry type="library" exported="" scope="PROVIDED" name="rxandroid-2.0.1" level="project" />
    <orderEntry type="library" exported="" scope="PROVIDED" name="rxjava-2.1.3" level="project" />
    <orderEntry type="library" exported="" scope="PROVIDED" name="reactive-streams-1.0.1" level="project" />
   <orderEntry type="library" exported="" scope="PROVIDED" name="AXMLPrinter-1.0" level="project" />
  </component>

可以发现所有的第3方库 配置scope=“PROVIDED” ,虽然当时不理解scope意思,但是provided是提供编译但是不导入包的意思,会在运行的时候产生找不到类。这个文件又是自动生成的,抱着尝试修改的态度,认为应该是COMPILE才是我们要的。故修改为scope=“COMPILE”,奇迹还真发生了,解决了问题。

Android Studio 代码报红,can not resolve symbol ,但能正常编译
最近几次代码报红,源码正常不能引用,一看定位具体类,发现目标类文件竟然没有了内容
以及本地开发的类也会突然出现了内容丢失,变成了空内容。
解决办法,删除old,重新下载库
对于android源码库 直接用sdk manager先删除旧的 再下载
在这里插入图片描述
对于dependecy的依赖库 直接删除.gradle/caches/module下的旧库 再更新build就可以了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trilen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值