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閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容