android开发遇到的一些问题

(1)将Eclipse项目导入到Android studio 中 很多点9图出现问题解决方法:

在build.gradle里添加以下两句:

aaptOptions.cruncherEnabled= false

aaptOptions.useNewCruncher= false

用来关闭Android Studio的PNG合法性检查的,直接不让它检查。

(2)Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

原因:

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 failedfortask':app:transformResourcesWithMergeJavaResForDebug'. > com.android.bui

解决方法:

在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)未知错误

Error:Timeout waiting tolockcp_projclasscacheforbuildfile'/Users/Mr.xiao/Desktop/AndroidShopNC2014MoblieNew/androidShopNC2014Moblie/build.gradle'(/Users/Mr.xiao/.gradle/caches/2.10/scripts/build_3cyr7hzjurcc62ge3ixidshos/cp_proj).

Itiscurrentlyinusebyanother Gradleinstance.

Owner PID:unknownOur PID:1412Owner Operation:unknownOur operation: InitializecacheLockfile: /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文件找不到

解决方案

compileSdkVersion23buildToolsVersion"23.0.3"defaultConfig {

applicationId"net.mmloo2014.android"minSdkVersion14targetSdkVersion23}

compileSdkVersion 是多少版本的

那么compile 'com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。

(6)Android studio 编译问题:finished with non-zero exit value 2

问题:

Error:Execution failedfortask':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 exitvalue2

解决方案

这个错误在app的build.gradle里面添加下面这句就好了。

android {

defaultConfig {

multiDexEnabled true

}

}

(7)Android studio 编译问题:finished with non-zero exit value 1(由于导入的依赖出现重复造成的)

问题:

Error:Executionfailedfortask':app:transformClassesWithDexForDebug'.

> com.[Android](http://lib.csdn.net/base/15).build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\Program Files (x86)\[Java](http://lib.csdn.net/base/17)\jdk1.8.0_31\bin\java.exe'' finished with non-zero exit value 1

解决方案

这个是因为依赖包重复了 (像v4和nineoldandroids),app中实现了对easeUI的依赖,但是app和easeUI都添加了对这个包的依赖。所以就报这个错误,修改之后再报,就clean,rebuild一下。

(8)问题

Error:Executionfailedfortask':app:transformClassesWithJarMergingForDebug'.>

com.android.build.api.transform.TransformException:java.util.zip.ZipException:duplicateentry:org/apache/http/ConnectionClosedException.class

解决方案

这个是在我们启动的时候报错的,而不是在编译的时候,原因是这样的,报这个错是因为有2个库中存在相同的类。大家可以看到stackoverflow上有人也提了这样的问题。只需要删除其中的一个就可以解决了。

(9)添加第三方依赖出现的问题

Error:Execution failedfortask':app:processDebugManifest'.

>

Manifest merger failed :

uses-sdk:minSdkVersion14cannot be smaller than version19declaredinlibrary[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文件中标签中添加

其中的xxx.xxx.xxx为第三方库包名,如果存在多个库有此异常,则用逗号分割它们,例如:

这样做是为了项目中的AndroidManifest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制。

(10)Android studio 编译问题:finished with non-zero exit value 1(由于buildtools版本太高造成的)

错误

Error:Execution failedfortask':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 exitvalue1

错误原因

buildToolsVersion版本太高,我原来的 buildToolsVersion "24.0.0” 需要jdk1.8,而我的是jdk1.7,所以一直报这个错,刚开始以为是v4包和V7包冲突,因为之前遇到这样的问题,而这次删除V4包之后依然报这个错,上stackoverflow搜了一下,把buildTools版本降下来就好了。

解决方案

android {

compileSdkVersion23buildToolsVersion"23.0.3"}

(11)Android studio 编译问题:Gradle DSL not found 'android()'

问题

clipboard.png

解决方案

配置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{

compileSdkVersion23buildToolsVersion'23.0.3'

defaultConfig {

minSdkVersion9targetSdkVersion23versionCode1versionName'1.0'

}

}

dependencies {

compile'com.android.support:appcompat-v7:23.2.1'

}

最后再同步一下sync即可。

(12)Android studio 编译问题:Gradle DSL not found 'android()'

问题描述

Error:(51,52) 错误: -source1.6中不支持 diamond 运算符

(请使用 -source7或更高版本以启用 diamond 运算符)

解决方案

方案一

将标红处设置为1.7.png

修改soure为1.7.png

方案二

在build gradle中进行配置如下代码:

android {

compileOptions {sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

}

最后同步一下即可

(13)Glide使用问题:使用Glide加载圆角图片,第一次显示占位图

问题描述

最近在项目中使用Glide加载圆形图片,并且设置placehloder和error两个占位图,运行发现,第一次加载图片只显示占位图,需要第二次进入的时候才会正常显示。

如果你刚好使用了这个圆形Imageview库或者其他的一些自定义的圆形Imageview,而你又刚好设置了占位的话,那么,你就会遇到第一个问题。如何解决呢?

方案一

不设置占位图

方案二

使用Glide的Transformation API自定义圆形Bitmap的转换

/**

* Glide圆形图片处理

*/staticclassCircleTransformextendsBitmapTransformation{publicCircleTransform(Context context) {super(context);

}

@OverrideprotectedBitmaptransform(BitmapPool pool, Bitmap toTransform,intoutWidth,intoutHeight) {returncircleCrop(pool, toTransform);

}privatestaticBitmapcircleCrop(BitmapPool pool, Bitmap source) {if(source ==null)returnnull;intsize = Math.min(source.getWidth(), source.getHeight());intx = (source.getWidth() - size) /2;inty = (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 =newCanvas(result);

Paint paint =newPaint();

paint.setShader(newBitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));

paint.setAntiAlias(true);floatr = size /2f;

canvas.drawCircle(r, r, r, paint);returnresult;

}

@OverridepublicStringgetId() {returngetClass().getName();

}

}

使用方法:

Glide.with(context).load(imageUrl).placeholder(placeholder).error(errorImage).transform(newCircleTransform(context)).into(imageView);

方案三

重写Glide的图片加载监听方法,具体如下:

Glide.with(mContext)

.load(url)

.placeholder(R.drawable.loading_drawable)

.into(newSimpleTarget(width, height) {

@OverridepublicvoidonResourceReady(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:Valueof type java.lang.Stringcannot be converted to JSONObject

解析服务器返回 的json格式数据时,我们可能会发现,数据格式上是没有问题的,但是仔细对比会发现,在json串头部发现字符:"\ufeff"

客户端解决方案:

/**

* 异常信息:org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject

* json串头部出现字符:"\ufeff" 解决方法

*@paramdata

*@return*/publicstaticfinalString removeBOM(String data) {if(TextUtils.isEmpty(data)) {returndata;

}if(data.startsWith("\ufeff")) {returndata.substring(1);

}else{returndata;

}

}

服务器端解决方案:

将输出此json的php源码重新用editplus之类用utf-8无BOM的编码保存。不要用windows系统自带的记事本编辑php源码,这个BOM就是记事本这些windows自带的编辑器引入的

------------------------------------------------------------------------------------------

Error:Execution failed for task ':app:mergeDebugResources'. > Crunching Cruncher scrollbar_thumb.9.png failed, see logs

aaptOptions.cruncherEnabled = false

aaptOptions.useNewCruncher = false

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容