一般人我不告诉的bug
http://blog.csdn.net/axi295309066/article/details/52745694
1、将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法
在build.gradle里添加以下两句:
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
用来关闭Android Studio的PNG合法性检查的,直接不让它检查。
2、Android Studio 错误: 非法字符: ‘\ufeff’
原因:Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,Android Studio还没有这个功能,所以使用Android Studio编译UTF-8+BOM编码的文件时会出现”非法字符:’\ufeff’”之类的错误
手动将UTF-8+BOM编码的文件转为普通的UTF-8文件。
用EdItPlus打开.java文件依次:文档 -> 文本编辑 -> 转换文本编码 -> 选择UTF-8编码即可
3、将项目导入到AS中出现以下问题
Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
解决方法:在build.grade中添加以下代码
android{packagingOptions {exclude 'META-INF/DEPENDENCIES.txt'exclude 'META-INF/NOTICE'exclude 'META-INF/NOTICE.txt'exclude 'META-INF/LICENSE'exclude 'META-INF/LICENSE.txt'}
}
4、Timeout waiting to lock cp_proj class cache for build file
Error:Timeout waiting to lock cp_proj class cache for build file '/Users/Mr.xiao/Desktop/AndroidShopNC2014MoblieNew/androidShopNC2014Moblie/build.gradle'
(/Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj).
It is currently in use by another Gradle instance.
Owner PID: unknown
Our PID: 1412
Owner Operation: unknown
Our operation: Initialize cache
Lock file: /Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj/cache.properties.lock
解决方案,以上是错误提示
解决的思路很简单只需要把cache.properties.lock文件删除了就可以了。当时我们删除的时候会被占用这时候需要进入任务管理器结束关于java的进程就行比如 java 的jdk 删除后重启让java jdk启动 启动Android Studio就能启动APK了
5、修改了Android项目的最小SDK版本之后出现很多stysle文件找不到
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {applicationId "net.mmloo2014.android"minSdkVersion 14targetSdkVersion 23
}
compileSdkVersion 是多少版本的
那么compile ‘com.android.support:appcompat-v7:23.2.1’ 就是啥版本的
6、Android studio 编译问题:finished with non-zero exit value 2
问题描述
Error:Execution failed for task ':androidShopNC2014Moblie:transformClassesWithDexForDebug'.com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
java.util.concurrent.ExecutionException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
解决方案:这个错误在app的build.gradle里面添加下面这句就好了
android { defaultConfig { multiDexEnabled true}
}
65536问题
- 解决传说中的Android 65k 问题
- 其实你不知道MultiDex到底有多坑
- AndroidStudio利用android-support-multidex解决65536问题64k问题
7、Android studio 编译问题:finished with non-zero exit value 1
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.com.[Android]([url=http://lib.csdn.net/base/15]http://lib.csdn.net/base/15[/url])
.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command 'F:\Program Files (x86)\[Java]([url=http://lib.csdn.net/base/17]
http://lib.csdn.net/base/17[/url])\jdk1.8.0_31\bin\java.exe''
finished with non-zero exit value 1
由于导入的依赖出现重复造成的,解决方案:
这个是因为依赖包重复了 (像v4和nineoldandroids),app中实现了对easeUI的依赖,但是app和easeUI都添加了对这个包的依赖。所以就报这个错误,修改之后再报,就clean,rebuild一下
8、transformClassesWithJarMergingForDebug
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException:
java.util.zip.ZipException:duplicate entry: org/apache/http/ConnectionClosedException.class
解决方案
这个是在我们启动的时候报错的,而不是在编译的时候,原因是这样的,报这个错是因为有2个库中存在相同的类。大家可以看到stackoverflow上有人也提了这样的问题。只需要删除其中的一个就可以解决了
9、添加第三方依赖出现的问题processDebugManifest
Error:Execution failed for task ':app:processDebugManifest'.Manifest merger failed :uses-sdk:minSdkVersion 14 cannot be smaller than version 19 declared in library [com.github.meikoz:basic:2.0.3]
/AndroidStudioCode/EnjoyLife/app/build/intermediates/exploded-aar/
com.github.meikoz/basic/2.0.3/AndroidManifest.xml
Suggestion: use tools:overrideLibrary="com.android.core" to force usage
错误原因:
出现这个错误的原因是我引入的第三方库最低支持版本高于我的项目的最低支持版本,异常中的信息显示:我的项目的最低支持版本为14,而第三方库的最低支持版本为19,所以抛出了这个异常。
解决方案:在AndroidManifest.xml文件中标签中添加
<uses-sdk tools:overridelibrary="xxx.xxx.xxx"></uses-sdk>
其中的xxx.xxx.xxx为第三方库包名,如果存在多个库有此异常,则用逗号分割它们
这样做是为了项目中的AndroidManifest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制
10、Android studio 编译问题:finished with non-zero exit value 1
错误描述
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
错误原因
buildToolsVersion版本太高,我原来的 buildToolsVersion “24.0.0” 需要jdk1.8,而我的是jdk1.7,所以一直报这个错,刚开始以为是v4包和V7包冲突,因为之前遇到这样的问题,而这次删除V4包之后依然报这个错,上stackoverflow搜了一下,把buildTools版本降下来就好了。
解决方案
android {compileSdkVersion 23buildToolsVersion "23.0.3"
}
11、Android studio 编译问题:Gradle DSL not found ‘android()’
解决方案 配置build.gradle:
buildscript {repositories { jcenter()
}dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'}
}allprojects { repositories { jcenter()}
}
buildscript {repositories { jcenter()
}dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'}
}allprojects {repositories {jcenter()}
}
配置app/build.gradle:
apply plugin: 'com.android.application'android { compileSdkVersion 23buildToolsVersion '23.0.3'defaultConfig { minSdkVersion 9targetSdkVersion 23versionCode 1versionName '1.0'}
}dependencies { compile 'com.android.support:appcompat-v7:23.2.1'
}
最后再同步一下sync即可
12、Android studio 编译问题:Gradle DSL not found ‘android()’
Error:(51, 52) 错误: -source 1.6 中不支持 diamond 运算符
(请使用 -source 7 或更高版本以启用 diamond 运算符)
解决方法,在build gradle中进行配置如下代码
android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_7targetCompatibility JavaVersion.VERSION_1_7}
}
最后同步一下即可
13、Glide使用问题:使用Glide加载圆角图片,第一次显示占位图
问题描述
最近在项目中使用Glide加载圆形图片,并且设置placehloder和error两个占位图,运行发现,第一次加载图片只显示占位图,需要第二次进入的时候才会正常显示。
如果你刚好使用了这个圆形Imageview库或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?
方案一:不设置占位图
方案二:使用Glide的Transformation API自定义圆形Bitmap的转换
/*** Glide圆形图片处理*/static class CircleTransform extends BitmapTransformation {public CircleTransform(Context context) {super(context);}@Overrideprotected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {return circleCrop(pool, toTransform);}private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {if (source == null) return null;int size = Math.min(source.getWidth(), source.getHeight());int x = (source.getWidth() - size) / 2;int y = (source.getHeight() - size) / 2;Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);Bitmap result = pool.get(size, size, Bitmap.Config.RGB_565);if (result == null) {result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);}Canvas canvas = new Canvas(result);Paint paint = new Paint();paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));paint.setAntiAlias(true);float r = size / 2f;canvas.drawCircle(r, r, r, paint);return result;}@Overridepublic String getId() {return getClass().getName();}}
使用方法:
Glide.with(context).load(imageUrl).placeholder(placeholder).error(errorImage).transform(new CircleTransform(context)).into(imageView);
方案三:重写Glide的图片加载监听方法,具体如下
Glide.with(mContext).load(url).placeholder(R.drawable.loading_drawable).into(new SimpleTarget<bitmap>(width, height) {@Override public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {// setImageBitmap(bitmap) on CircleImageView }});
注意事项:该方法在listview上复用有问题的bug,如果在listview中加载CircleImageView,请不要使用该方法
方案四:不使用Glide的默认动画:
Glide.with(mContext).load(url) .dontAnimate().placeholder(R.drawable.loading_drawable).into(circleImageview);
14、json数据解析问题:json串头部出现字符:”\ufeff” 解决方法
异常信息
org.json.JSONException: Value ? of type java.lang.String cannot be converted to JSONObject
解析服务器返回 的json格式数据时,我们可能会发现,数据格式上是没有问题的,但是仔细对比会发现,在json串头部发现字符:”\ufeff”
客户端解决方案:
/*** 异常信息:org.json.JSONException: Value ? of type java.lang.String cannot be converted to JSONObject * json串头部出现字符:"\ufeff" 解决方法* @param data* @return*/public static final String removeBOM(String data) {if (TextUtils.isEmpty(data)) {return data;}if (data.startsWith("\ufeff")) {return data.substring(1);}else {return data;}}
服务器端解决方案:
将输出此json的php源码重新用editplus之类用utf-8无BOM的编码保存。不要用windows系统自带的记事本编辑php源码,这个BOM就是记事本这些windows自带的编辑器引入的
15、Android studio编译问题:not found ndk()
解决方案
出现该问题,可能是由于ndk配置在build.gradle配置文件中位置弄错导致的
apply plugin: 'com.android.application'
android {compileSdkVersion 23buildToolsVersion "23.0.2"defaultConfig {applicationId "com.guitarv.www.ndktest"minSdkVersion 17targetSdkVersion 23versionCode 1versionName "1.0"ndk {moduleName = "HelloJNI"}sourceSets.main {jni.srcDirs = []jniLibs.srcDir "src/main/libs"}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}
16、compileDebugJavaWithJavac
Error:Execution failed for task ':compileDebugJavaWithJavac'
17、Not recognizing known sRGB profile that has been edited
AAPT err(Facade for 1975606064):
E:\workspace\SmartCity\app\src\main\res\mipmap-hdpi\bottom_tab_bg.png:
libpng warning: iCCP:
Not recognizing known sRGB profile that has been edited
在build.gradle里添加以下两句:aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false,就直接添加到buildToolsVersion的下方即可,这个是用来关闭Android Studio的PNG合法性检查的,直接不让它检查
18、app:mergeDebugResources
Error:Execution failed for task ':app:mergeDebugResources'
19、transformClassesWithDexForDebug
Error:Execution failed for task ':demo:transformClassesWithDexForDebug'
20、gradle dsl method not found “runProguard()”
原因:gradle版本更新,方法名改变,改为minifyEnable()
21、the specified child already has a parent , you must call removeview() on the child’s parent first
Fragment重复加载的问题:一个孩子只能有一个爸爸
解决方案:在添加Fragment到ViewPager之前,先判断Fragment是否已经添加到ViewPager了,如果已经添加,先remove后再添加
public static void removeSelfFromParent(View view) {if (view != null) {ViewParent parent = view.getParent();if (parent != null && parent instanceof ViewGroup) {ViewGroup group = (ViewGroup) parent;group.removeView(view);}}}
22、illegalstateException非法状态异常
23、NullPointException 空指针异常
24、you need tou use a theme.appcompat theme to with activity,Error inflating class android.support.design.widget.TabLayout
使用TabLayout的时候出现该问题,给Activity设置一个theme.appcompat 主题,例如
android:theme="@style/Theme.AppCompat.Light"
25、fragment中嵌套viewpager,vierpager中有多个fragment,不显示
将getSupportFragmentManager()改为getChildFragmentManager()
26、Error:Failed to resolve: com.android.support:support-core-utils:24.2.1
在使用Fresco的时候报的错,升级Android Support Library就好了,原因是Android Support Library升级后v4包拆分成了好几个小包,其中就有support-core-utils
27、Rendering Problems
Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version 52.0 (Details)
这是由于在Android 7.0 版本中增加对JAVA8的支持,所以在此给出两种中解决办法:
改下Android version或安装jdk1.8
28、Suspending all threads took: 5.639ms
29、ImageView no longer exists. You should not use this PhotoViewAttacher any more
30、java.lang.IllegalArgumentException: pointerIndex out of range
在使用ViewPager展示图片的时候,使用了PhotoView对ImageView进行多点触控放大缩小,出现了java.lang.IllegalArgumentException: pointerIndex out of range
31、com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 1 column 2 path
T t = gson.fromJson(gsonString,type);
32、Package manager has died
解决方法:http://blog.csdn.net/axi295309066/article/details/52876150
33、android java.net.UnknownHostException: Unable to resolve host “…”: No address associated 错误
我们在android开发的时候经常会遇到这个错误,一般来说,造成这种错误的最普遍情况有两种:
1、android设备网络连接没打开,例如3G网络和WIFI网络
所以,如果遇到这种错误时,请先查看网络是否已正常连接.
2、Manifest文件没有标明网络访问权限
如果确认网络已经正常连接并且还是出这种错误的话,那么请看下你的Manifest文件是否标明应用需要网络访问权限,如果没标明的话,也访问不了网络,也会造成这种情况的
<uses-permission android:name="android.permission.INTERNET"/>
Failed to install *.apk on device ‘emulator-5554’: timeout
错误提示:
Failed to install helloworld.apk on device ‘emulator-5554’: timeout
或者the user data image is used
原因:由于模拟器已经开启而没有关闭或者非法关闭引起的。
解决方法:
删除 C:Documents and SettingsAdministrator.androidavd对应版本.avd
下所有以.lock结尾的文件夹。
或者
Failed to install .apk on device :
timeout Launch canceled!
还有一种办法:
在window->preferences->Android->DDMS->ADB connection time out (ms):
将这个值设置的大一些,默认为5000,设置成500000,然后就OK了
Android adb常见问题整理
问题1
The connection to adb is down, and a severe error has occured.
You must restart adb and Eclipse.
Please ensure that adb is correctly located at ‘adb.exe’ and can be executed.
解决方法
adb kill-server
adb start-server
问题2
ADB server didn’t ACK
failed to start daemon
解决方法
DDMS - Devices - Reset adb
如果不行,关闭豌豆荚或者Eclipse重启
问题3
Adb failed to restart! Make sure the plugin is properly configured
解决方法
杀死 Wandoujia 相关的所有进程,ok
wandoujia_daemon.exe
wandoujia_helper.exe
AndroidStudio 建议升级此编译器,主版本 52 比 51 新, 此编译器支持最新的主版本
JDK导致的问题
compileSdkVersion 24buildToolsVersion "24.0.2"defaultConfig {minSdkVersion 15targetSdkVersion 24versionCode 1versionName "1.0"}
上面表示编译的时候使用Android 24的版本编译,最高支持到版本24
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
这两行表示依赖了24版本的两个包
解决方法:
1、我的JDK是1.7,将JDK升级到1.8之后应该可以解决这个问题(这个只提供参考,因为公司还有其他项目,所以我没有升级到JDK1.8,但是同事是1.8运行正常)
2、将上面代码的24版本统统改为23版本,targetSdkVersion 24这个也要改为23,如果不改的话引入的两个包会报红,同时依赖的包也改为下面
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
debug.keystore not found for signing config ‘debug’
UnspportedOperationException
java.util.AbstractList.remove
List<String> mOtherChannel = Arrays.asList(CommonUtil.getStringArr(R.array.otherchannel));mOtherChannel.remove("xxx");
UnspportedOperationException抛出的原因是使用了不当的容器操作。通常是由于尝试修改固定长度的容器的缘故,调用Array.asList() 方法会返回这种容器。因为数组显然是固定长度的容器,使用asList方法转换为list也会保持这种属性。
Array.asList()返回的是Arrays类内部自定义的AbstractList的子类,它没有实现remove方法。
List<String> mOtherChannel = new ArrayList<>(Arrays.asList(CommonUtil.getStringArr(R.array.otherchannel)));
一般人我不告诉的bug相关推荐
- 这 25 个开源机器学习项目,一般人我不告诉 Ta
本文为 AI 研习社编译的技术博客,原标题 : 25 Open-Source Machine Learning Repos to Inspire Your Next Project 作者 | Khoa ...
- 计算机主机电源线如何跳线,这些装机跳线的小技巧一般人我不告诉他
1小技巧助你成装机大咖 在DIY装机时新手总会各式各样的问题,对于很多的玩家来讲的话将各类的硬件组装在一起的教程似乎很多,但是将硬件平台组装完毕之后,在链接线材的时候就会一脸的懵逼,今天笔者就和大家分 ...
- 海岛大亨6图像处理错误_《海岛大亨6》bug有效利用方法 一般人我不告诉他
这个游戏大家都玩过,但是很多玩家不知道<海岛大亨6>中bug怎么利用,其实小编一开始也不知道这个.今天牛游网小编就给大家分享一下<海岛大亨6>bug有效利用方法分享,希望大家能 ...
- 黑客高手对决常用术语及行规,一般人我不告诉他
高手不屠无名之辈,就算认识,也要在开打之前自报家门. 这不叫走过场,而称"江湖规矩". 在黑客高手对决时,也有一些常有术语和行规,如果你了解这些,在谈笑风生时,至少可以装作不经意间 ...
- python抽荣耀水晶_教你2种免费拿荣耀水晶的方法,获奖概率让人惊喜,一般人我不告诉他...
在王者荣耀中荣耀水晶一直是许多玩家想要得到的,那一般来说想要获取一个荣耀水晶需要花费大约2000RMB的样子,但是可喜的是王者荣耀这个游戏就是这么的亲民,会时不时的上线一些免费赠送的活动,那今天就告诉 ...
- 只有程序员才深有体会-------让人直想呵呵哒的BUG!!!
有的bug,只能, 费半天劲,找到它,只想呵呵哒 !!!! 呵呵哒!!! 呵呵哒!!! 1. 设置ip------port 写成了post, 运行不了,还没报错 2. 设置类的属性值------mo ...
- 设计网络拓扑,一般人我不告诉他这么搞
晚上好,我是老杨. 关于网络拓扑,我写过很多期内容,手把手教你0基础攻克拓扑图这一关卡. 比如,画拓扑要用什么工具,我发了<网工在线画拓扑,用它,1+1>3> 比如,想知道到底该怎么 ...
- 优化安卓应用内存的神奇方法以及背后的原理,一般人我不告诉他
安卓应用一般都害怕自己被杀.内存占用高是被杀的重要原因之中的一个.所以大家都想尽各种招数应对,但效果都一般. 但有一招: WindowManagerGlobal.getInstance().start ...
- mysql ignore errors_mysql的又一个让人捉摸不透的bug?
这次就不说很多没有写博客了,因为前几天已经写过了.\^o^/ 昨天我们刚讨论了关于自动化运维工作的实现方式,如果批量执行,中间出错怎么办?突然有人提出mysql支持--force,可以跳过出错继续执行 ...
最新文章
- Java list三种遍历方法性能比较
- Winform中使用MQTTnet实现MQTT的服务端和客户端之间的通信以及将订阅的消息保存到文件
- java抓取网页css,Java 读取网页Html资料
- 3-pycharm找不到库的解决办法
- 美国华裔科学家谈免疫系统真相!运动,心情胜过一切药品!
- 重复addEventListener(事件名,的问题
- React的学习曲线
- MySQL Innodb_flush_method
- angular NG-ZORRO 跑马灯左右控件
- 在Centos6.8上为安装Django1.11.1升级Python2.6到Python3.5
- Excel中表单控件和ACTIVEX控件主要区别
- 2022全新抖音二维码生成工具源码+亲测可用
- Super odometry:以IMU为核心的激光雷达视觉惯性融合框架(ICRA2021)
- 对任意合式公式求真值表以及主析取范式和主合取范式(JAVA)
- 观史图馆之《中东列国历代疆域变化 青铜与古典时代》
- EXCEL表格中数字金额很大时后面零很多,如何设置直接以万元为单位显示,不显示后面的零
- PyTorch是什么?PyTorch有什么用?
- Ubuntu安装KVM虚拟机
- 光电设计竞赛国赛经历及感悟
- HDU - 5514 Frogs
热门文章
- Android开机向导setupwizard,设置系统语言,WiFi向导
- 中国式的父慈子孝:爸妈用子女旧手机
- 车载以太网转换器 100/1000BASE-T1 转换器
- c语言 整数拆分,C++ 整数拆分方法详解
- 小程序 - 微信授权登录 微信授权绑定手机号
- C语言有必要学的很深入细致吗?
- 微信营销KPI考核标准有哪些?
- 好奇那些进了大厂的程序员面试前都做了哪些准备?Android大厂面试官全套教程教你:这样准备面试顺利拿到offer
- 十一届蓝桥杯省赛C语言B组——B: 既约分数
- 干货分享 | 全文 40000 字,最强(全) Matplotlib 实操指南