Android代码中遇到的一些警告或问题汇总

1. ‘catch’branch identical to‘instantiationexception’branch:
Reports identical catch sections in try blocks under JDK 7. A quickfix is available to collapse the sections into a multi-catch section.
This inspection only reports if the project or module is configured to use a language level of 7.0 or higher.
警告的大体意思是在jdk1.7环境下的try块中捕获到了相同或相似的异常,快速的解决办法是把这些部分折叠起来到一个multi-catch部分中,下面举一个例子:
下面是报警告的部分
这是警告
这是解决后的代码
消除警告后的代码
如果上面描述的不清楚,看图可一目了然。
2. Avoid object allocations during draw/layout operations (preallocate and reuse instead)
这个问题是说我在onDraw()中创建新对象了,因为onDraw()调用频繁,不断进行创建和垃圾回收会影响性能,下面是StackOverFlaw上描述的解决办法:Better way could be to declare these object at class level and initialize them in constructor, and just make drawXxx() calls in onDraw method.意思是更好的办法是在类这一层级描述对象,然后在构造方法中初始化对象。
3. Element category is not allowed here具体看下图
这里写图片描述
红框里是报警告的地方,虽然不影响运行,但是还是要规范一点
解决:1、删掉这一句,简单快捷 2、用包裹起来
4. Empty ‘catch’ block 看下面的示例

try {
	doSomething
} catch(Exception e) {
}

就是说有一个空的代码捕捉块,这个问题很好解决,放出来的原因是提醒开发者要保持一个好的习惯,不要写一个空的catch,哪怕是打印个log也好。Avoid empty catch blocks这篇文章说的就挺好的。
5. Unnecessary unboxing ‘XXX’ 及Unnecessary boxing 'XXX’意思是不必要的拆箱操作和不必要的装箱操作举几个例子:
1.第一个
我用红框标出的方法已经返回boolean类型的值了,就不需要后面的.booleanValue()方法了
2.这里写图片描述这个跟上面的差不多,因为getInteger(“code”)已经返回int类型了,就不需要加.intValue()了
3.这里写图片描述
这儿只为举个例子,报黄色警告是因为paramLong已经是long类型了,不需要多余的装箱操作了。
6. The following unrelated icon files have identical content 两个无关的图片资源拥有相同的内容。可能同一张图片有两个命名,去掉一张。以下是Android Studio的提示:
If an icon is repeated under different names, you can consolidate and just use one of the icons and delete the others to make your application smaller. However, duplicated icons usually are not intentional and can sometimes point to icons that were accidentally overwritten or accidentally not updated.
7. 代码提交的时候出错,也不能pull具体错误看下图
这里写图片描述
去网上查有人说是git版本不匹配,有人说按照git add 的形式添加文件后提交,个人认为git版本不匹配的理解是错误的可能重新安装后误打误撞解决了,而一个个添加文件太麻烦了,一两个文件还好,多了就太累了,还是根据Android Studio里的错误提示来解决吧。
解决:图中上面部分说commit 失败了,不能创建./git/index.lock文件,因为文件已经存在了。下面部分提示可能有另一个git进程在这个仓库中运行,例如用“git commit”打开的一个编辑器。请确保所有的进程终止再试一次。如果还是失败,可能一个git进程之前在这个仓库中崩溃了,手动移除那个文件并继续。
现在我们就来删除这个文件:1、找到项目中的.git文件夹进入 2、删除index.lock文件,然后重新提交已经可以了。
8. 遇到个很奇葩的问题,不知道什么原因以下为错误内容:
Error:(115, 82) 错误: 写入<匿名 packagename.XXFragment$3>时出错:.\build\intermediates\classes\debug\packagename\XXFragment$3.class (拒绝访问。)
Error:Execution failed for task ‘:gcs:compileDebugJavaWithJavac’.
Compilation failed; see the compiler error output for details.
突然出现这个错误,项目也运行不了,查了很多资料都找不到原因,但是总感觉跟gradle有关系。
解决:把项目的.gradle删掉,重新运行项目加载gradle文件,项目可以跑起来了。**但是还是不知道为什么,希望知道的可以留言告知,谢谢。**之后问题又出现了,这次把本地.gradle删掉重新加载项目才可以正常运行
9. AndroidStudio运行项目的时候出错具体错误看下图:
这里写图片描述
具体原因是因为我更换了签名文件。
解决:clean project 重新运行 ok.
10. 出现xxxx.jks not found for signing config ‘config’.错误,具体看下图(盗的别人的图,忘了截图了):
这里写图片描述
找不到签名文件。
解决:
1、把配置里的签名文件路径写成绝对路径
2、把签名文件移动到app目录下
11.编译时报错Error:Removing unused resources requires unused code shrinking to be turned on.
解决:因为我设置shrinkResources true 但是把混淆关掉了设置minifyEnabled true即可
12.Error:Execution failed for task ‘:app:validateSigningRelease’.

Keystore file E:\PENGFEI\gcs-new-vision-plus-android\NewVisionPlus\keystore\visionplus.jks not found for signing config ‘externalOverride’.

解决:签名文件路径引起的,重新选择路径即可。参考下图
这里写图片描述
13.No adapter attached; skipping layout
解决:原因是布局里写了RecycleView但是没有初始化,只需要初始化RecyclerView即可,必须要设置LayoutManager,其他可以不设置。
14.java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
解决:原因是如果不用copy(),会直接对原bitmap进行修改,而Android是不允许对Bitmap直接修改的。可以使用如下方法获取一个bitmap使用,Bitmap bitmap = originBitmap.copy(Bitmap.Config.ARGB_8888, true);
15. 导入项目时报错,Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration. 具体看下图
报错日志
解决: 添加如下代码

android {
    ...
    defaultConfig {
        ...
        //添加如下配置就OK了
        javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
    }
    ...
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在调试过程,当出现"Backtrace stopped: previous frame identical to this frame (corrupt stack?)"错误时,意味着栈帧被破坏或损坏导致程序崩溃。 这个错误可能会发生在使用gdb进行调试时。GDB是一个用于调试程序的强大工具,但它也可能由于各种原因导致错误。 这个错误的具体原因可能有很多,例如代码错误,内存问题,或者是编译器优化引起的。要解决这个问题,可以尝试以下几个步骤: 1. 首先,检查代码是否有明显的错误或逻辑问题。可能需要仔细检查函数调用、指针操作、循环等部分代码。 2. 检查内存问题。使用工具如Valgrind来检查内存泄漏、越界访问等问题。这些问题可能导致栈帧被破坏,进而导致错误。 3. 确保编译器选项正确设置。某些编译器优化选项可能会引起问题。尝试禁用一些优化选项或者调整编译器选项,看看是否能够解决问题。 4. 如果以上方法都没有解决问题,可以尝试使用其他调试工具或方法来进一步分析问题。例如,可以使用其他调试器或跟踪工具来获取更多的信息。 综上所述,当出现"Backtrace stopped: previous frame identical to this frame (corrupt stack?)"错误时,需要进行代码和内存的仔细检查,同时确保编译器选项正确设置。如果问题仍然存在,可以尝试使用其他调试工具来进一步分析。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [QT UI线程错误(Backtrace stopped: previous frame identical to this frame (corrupt stack?))](https://blog.csdn.net/gmq_syy/article/details/117480449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值