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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jason_Lewis/article/details/77528041

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);

猜你喜欢

转载自blog.csdn.net/Jason_Lewis/article/details/77528041