(1)將Eclipse項目導入到Android studio 中出現9-patch image問題解決方法:
在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 failed for task ':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 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: unknownOur PID: 1412Owner Operation: unknownOur operation: Initialize cacheLock 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 14 targetSdkVersion 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 } }(7)Android studio 編譯問題:finished with non-zero exit value 1(由于導入的依賴出現重復造成的)
問題:
Error:Execution failed for task ‘:app:transformClassesWithDexForDebug'.com.Android.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: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)添加第三方依賴出現的問題
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.xmlSuggestion: use tools:overrideLibrary="com.android.core" to force usage
錯誤原因
出現這個錯誤的原因是我引入的第三方庫最低支持版本高于我的項目的最低支持版本,異常中的信息顯示:我的項目的最低支持版本為14,而第三方庫的最低支持版本為19,所以拋出了這個異常。
解決方案
在AndroidManifest.xml文件中標簽中添加
<uses-sdk tools:overrideLibrary="xxx.xxx.xxx"/>
其中的xxx.xxx.xxx為第三方庫包名,如果存在多個庫有此異常,則用逗號分割它們,例如:
<uses-sdk tools:overrideLibrary="xxx.xxx.aaa, xxx.xxx.bbb"/>
這樣做是為了項目中的AndroidManifest.xml和第三方庫的AndroidManifest.xml合并時可以忽略最低版本限制。
(10)Android studio 編譯問題:finished with non-zero exit value 1(由于buildtools版本太高造成的)
錯誤
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包之后依然報這個錯,把buildTools版本降下來就好了。
解決方案
android { compileSdkVersion 23 buildToolsVersion “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() } }配置app/build.gradle:
apply plugin: ‘com.android.application' android { … defaultConfig { …} } dependencies { …}最后再同步一下sync即可。
(13)Glide使用問題:使用Glide加載圓角圖片,第一次顯示占位圖
問題描述
最近在項目中使用Glide加載圓形圖片,并且設置placehloder和error兩個占位圖,運行發現,第一次加載圖片只顯示占位圖,需要第二次進入的時候才會正常顯示。
如果你剛好使用了這個圓形Imageview庫或者其他的一些自定義的圓形Imageview,而你又剛好設置了占位的話,那么,你就會遇到第一個問題。如何解決呢?
方案一
不設置占位圖 推薦
/** * 顯示圓形圖片 * @param context * @param url * @param iv */ public static void loadCircleImage(final Context context, String url, final ImageView iv) { Glide.with(context).load(url).asBitmap().centerCrop() .placeholder(R.mipmap.default_user_icon) .error(R.mipmap.default_user_icon) .diskCacheStrategy(DiskCacheStrategy.RESULT) .into(new BitmapImageViewTarget(iv) { @Override protected void setResource(Bitmap resource) { RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(context.getResources(), resource); circularBitmapDrawable.setCircular(true); iv.setImageDrawable(circularBitmapDrawable); } });方案二
使用Glide的Transformation API自定義圓形Bitmap的轉換
/** * Glide圓形圖片處理 */ static class CircleTransform extends BitmapTransformation { public CircleTransform(Context context) { super(context); } @Override protected 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; } @Override public 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()
問題
Error:(15, 0) Gradle DSL method not found: 'ndk()' method-not-found-ndk
解決方案
出現該問題,可能是由于ndk配置在build.gradle配置文件中位置弄錯導致的
apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.guitarv.www.ndktest" minSdkVersion 17 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName = "HelloJNI" } sourceSets.main { jni.srcDirs = [] jniLibs.srcDir "src/main/libs" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}(16)Android studio導入其他的項目:UnsupportedMethodException
問題
UnsupportedMethodException Unsupported method: AndroidProject.getPluginGeneration(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you connect to. Alternatively, you can ignore this exception and read other information from the model.
解決方案
將根目錄中的build.gradle文件中的gradle版本號,出現錯誤之前,我的是1.3.0,修改成2.2.0之后重新編譯一下就可以運行了。
dependencies { classpath 'com.android.tools.build:gradle:1.3.0' }將這個版本號改成你其他項目能夠運行成功的版本號即可
(17)Android studio更新到2.1.1之后使用CollapsingToolbarLayout出現Error inflating class CollapsingToolbarLayout
之前在項目中使用了CollapsingToolbarLayout,效果還是可以的,但是Android stuido更新到2.1.1版本之后出現Error inflating class CollapsingToolbarLayout 異常崩潰
異常信息如下所示:
com.test.android/com.test.android.ui.activity.RandomActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class android.support.design.widget.CollapsingToolbarLayout。。。Caused by: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat; or its super classes (declaration of 'android.support.v4.graphics.drawable.DrawableCompat' appears in /data/app/com.test.android-1/base.apk)。。。
解決方案
在項目的build.gradle文件中添加下面一行,同步一下即可
compile ('com.android.support:support-v4:23.4.0'){ force = true;}(18)Android studio gradle編譯異常
java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0
很顯然是class版本不支持。經查詢,Android Studio2.2必須使用JDK8及以上版本,而且是強制的。
所以呢,趕緊下了個JDK8最新版的。安裝完畢,把JAVA_HOME指向了JDK8,實測JDK7和8是可以共存的。
那么,重啟Android Studio后問題解決,Build Successful !
(19)recycleview嵌套列表項顯示不全問題
解決方案:
第一個RecyclerView的Adapter(即父RecyclerView):
@Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.shop_item,null); 解決條目顯示不全 MyHolder holder = new MyHolder(view); return holder; } 第二個RecyclerView的Adapter(即子RecyclerView):
@Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.check_item, parent,false);//解決寬度不能鋪滿 MyHolder holder = new MyHolder(view); return holder; } (20)Android手機真機調試,日志不打印的解決方案:
1、在撥號界面輸入:*#*#2846579#*#* 進入測試菜單界面。
2、Project Menu
主站蜘蛛池模板:
南阳市|
开封县|
金湖县|
兴安县|
广水市|
晴隆县|
阜宁县|
苏尼特左旗|
朝阳区|
阿尔山市|
太和县|
淳化县|
克山县|
盐源县|
天镇县|
科尔|
莒南县|
双鸭山市|
赞皇县|
囊谦县|
永泰县|
东源县|
河北省|
翁牛特旗|
蓬溪县|
察隅县|
沁水县|
望都县|
湘潭市|
南召县|
北宁市|
赞皇县|
孝昌县|
邵武市|
上虞市|
宜州市|
陇南市|
河北区|
弥勒县|
天柱县|
原阳县|