(1)將Eclipse項(xiàng)目導(dǎo)入到Android studio 中 很多點(diǎn)9圖出現(xiàn)問題解決方法:
在build.gradle里添加以下兩句:
aaptOptions.cruncherEnabled= false
aaptOptions.useNewCruncher= false
用來關(guān)閉Android Studio的PNG合法性檢查的,直接不讓它檢查。
(2)Android Studio 錯(cuò)誤: 非法字符: '\ufeff' 解決方案|錯(cuò)誤: 需要class, interface或enum
原因:
Eclipse可以智能的把UTF-8+BOM文件轉(zhuǎn)為普通的UTF-8文件,Android Studio還沒有這個(gè)功能,所以使用Android Studio編譯UTF-8+BOM編碼的文件時(shí)會(huì)出現(xiàn)”非法字符: '\ufeff' “之類的錯(cuò)誤
解決方法:
手動(dòng)將UTF-8+BOM編碼的文件轉(zhuǎn)為普通的UTF-8文件。用EdItPlus打開.java文件依次:文檔》文本編輯》轉(zhuǎn)換文本編碼》選擇UTF-8編碼即可
(3)將項(xiàng)目導(dǎo)入到AS中出現(xiàn)以下問題:
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)未知錯(cuò)誤
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
解決方案
以上是錯(cuò)誤提示。
解決的思路很簡(jiǎn)單只需要把cache.properties.lock文件刪除了就可以了。當(dāng)時(shí)我們刪除的時(shí)候會(huì)被占用這時(shí)候需要進(jìn)入任務(wù)管理器結(jié)束關(guān)于java的進(jìn)程就行比如 java 的jdk 刪除后重啟讓java jdk啟動(dòng) 啟動(dòng)Android Studio就能啟動(dòng)APK了。
(5)修改了Android項(xiàng)目的最小SDK版本之后出現(xiàn)很多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
解決方案
這個(gè)錯(cuò)誤在app的build.gradle里面添加下面這句就好了。
android {
defaultConfig {
multiDexEnabled true
}
}
(7)Android studio 編譯問題:finished with non-zero exit value 1(由于導(dǎo)入的依賴出現(xiàn)重復(fù)造成的)
問題:
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
解決方案
這個(gè)是因?yàn)橐蕾嚢貜?fù)了 (像v4和nineoldandroids),app中實(shí)現(xiàn)了對(duì)easeUI的依賴,但是app和easeUI都添加了對(duì)這個(gè)包的依賴。所以就報(bào)這個(gè)錯(cuò)誤,修改之后再報(bào),就clean,rebuild一下。
(8)問題
Error:Executionfailedfortask':app:transformClassesWithJarMergingForDebug'.>
com.android.build.api.transform.TransformException:java.util.zip.ZipException:duplicateentry:org/apache/http/ConnectionClosedException.class
解決方案
這個(gè)是在我們啟動(dòng)的時(shí)候報(bào)錯(cuò)的,而不是在編譯的時(shí)候,原因是這樣的,報(bào)這個(gè)錯(cuò)是因?yàn)橛?個(gè)庫中存在相同的類。大家可以看到stackoverflow上有人也提了這樣的問題。只需要?jiǎng)h除其中的一個(gè)就可以解決了。
(9)添加第三方依賴出現(xiàn)的問題
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
錯(cuò)誤原因
出現(xiàn)這個(gè)錯(cuò)誤的原因是我引入的第三方庫最低支持版本高于我的項(xiàng)目的最低支持版本,異常中的信息顯示:我的項(xiàng)目的最低支持版本為14,而第三方庫的最低支持版本為19,所以拋出了這個(gè)異常。
解決方案
在AndroidManifest.xml文件中標(biāo)簽中添加
其中的xxx.xxx.xxx為第三方庫包名,如果存在多個(gè)庫有此異常,則用逗號(hào)分割它們,例如:
這樣做是為了項(xiàng)目中的AndroidManifest.xml和第三方庫的AndroidManifest.xml合并時(shí)可以忽略最低版本限制。
(10)Android studio 編譯問題:finished with non-zero exit value 1(由于buildtools版本太高造成的)
錯(cuò)誤
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
錯(cuò)誤原因
buildToolsVersion版本太高,我原來的 buildToolsVersion "24.0.0” 需要jdk1.8,而我的是jdk1.7,所以一直報(bào)這個(gè)錯(cuò),剛開始以為是v4包和V7包沖突,因?yàn)橹坝龅竭@樣的問題,而這次刪除V4包之后依然報(bào)這個(gè)錯(cuò),上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) 錯(cuò)誤: -source1.6中不支持 diamond 運(yùn)算符
(請(qǐng)使用 -source7或更高版本以啟用 diamond 運(yùn)算符)
解決方案
方案一
將標(biāo)紅處設(shè)置為1.7.png
修改soure為1.7.png
方案二
在build gradle中進(jìn)行配置如下代碼:
android {
compileOptions {sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
最后同步一下即可
(13)Glide使用問題:使用Glide加載圓角圖片,第一次顯示占位圖
問題描述
最近在項(xiàng)目中使用Glide加載圓形圖片,并且設(shè)置placehloder和error兩個(gè)占位圖,運(yùn)行發(fā)現(xiàn),第一次加載圖片只顯示占位圖,需要第二次進(jìn)入的時(shí)候才會(huì)正常顯示。
如果你剛好使用了這個(gè)圓形Imageview庫或者其他的一些自定義的圓形Imageview,而你又剛好設(shè)置了占位的話,那么,你就會(huì)遇到第一個(gè)問題。如何解決呢?
方案一
不設(shè)置占位圖
方案二
使用Glide的Transformation API自定義圓形Bitmap的轉(zhuǎn)換
/**
* 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的圖片加載監(jiān)聽方法,具體如下:
Glide.with(mContext)
.load(url)
.placeholder(R.drawable.loading_drawable)
.into(newSimpleTarget(width, height) {
@OverridepublicvoidonResourceReady(Bitmap bitmap, GlideAnimation anim) {// setImageBitmap(bitmap) on CircleImageView}
});
注意事項(xiàng):
該方法在listview上復(fù)用有問題的bug,如果在listview中加載CircleImageView,請(qǐng)不要使用該方法。
方案四:不使用Glide的默認(rèn)動(dòng)畫:
Glide.with(mContext)
.load(url)
.dontAnimate()
.placeholder(R.drawable.loading_drawable)
.into(circleImageview);
(14)json數(shù)據(jù)解析問題:json串頭部出現(xiàn)字符:"\ufeff" 解決方法
異常信息
org.json.JSONException:Valueof type java.lang.Stringcannot be converted to JSONObject
解析服務(wù)器返回 的json格式數(shù)據(jù)時(shí),我們可能會(huì)發(fā)現(xiàn),數(shù)據(jù)格式上是沒有問題的,但是仔細(xì)對(duì)比會(huì)發(fā)現(xiàn),在json串頭部發(fā)現(xiàn)字符:"\ufeff"
客戶端解決方案:
/**
* 異常信息:org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject
* json串頭部出現(xiàn)字符:"\ufeff" 解決方法
*@paramdata
*@return*/publicstaticfinalString removeBOM(String data) {if(TextUtils.isEmpty(data)) {returndata;
}if(data.startsWith("\ufeff")) {returndata.substring(1);
}else{returndata;
}
}
服務(wù)器端解決方案:
將輸出此json的php源碼重新用editplus之類用utf-8無BOM的編碼保存。不要用windows系統(tǒng)自帶的記事本編輯php源碼,這個(gè)BOM就是記事本這些windows自帶的編輯器引入的
------------------------------------------------------------------------------------------
Error:Execution failed for task ':app:mergeDebugResources'. > Crunching Cruncher scrollbar_thumb.9.png failed, see logs
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false