這也許不能稱爲一個bug,可是比較坑,因此貼在了這裏。在Android的sqlite中存儲一個字符串,發現老是數據丟失,我去查詢sqlite官方的數據類型text長度很大,能知足個人要求,可是爲何Android中的sqlite就知足不了了呢!導出查看db文件,發現字符長度只有8192個字符,顯然數據是丟失了。暫且記錄在這裏。還有一點須要說明的是rom爲flyme5.0。html
[2017年2月6日15:14:47]java
解決方案:http://blog.sina.com.cn/s/blog_c58a37cb0102vibh.htmlandroid
[2017年1月16日17:25:03]git
解決方案:http://stackoverflow.com/questions/39183674/java-lang-nullpointerexception-no-error-message
[2017年1月14日10:36:22]github
解決方案:Android res文件夾下的全部文件不能有大寫字符,若是出現大寫字符會致使R.java沒法生成
Android項目是的R文件是由系統生成的資源的定義,若是出同衝突,錯誤,那麼android 沒法生成R文件 ,即便有時候你xml文件沒有錯誤,他都沒法生成。針對此問題,總結如下幾個方面的緣由:sql
xml自己有錯誤
R.java這個文件是會自動生成的,可是若是你不當心xml文件寫錯了,或者不當心在編輯xml的時候點擊了run(其實這個時候會運行這個xml文件,會生成一個同名的xml文件,後綴爲xx.out.xml),而後正巧你遊clear了一下項目,你可能會發現gen下面的R.java的文件沒有了,這個在剛開始的時候很氣人,真不知道怎麼解決,後來發現,只要xml文件有問題,系統是絕對不會給你自動生成這個R.java文件,由於他要參照你的每張xml裏的數據來生成R.java,因此天然就生成不了了。雖然知道了緣由可是問題頭疼,假如項目的layout xml文件有幾十個,這個時候怎麼辦,難道要一個一個xml的看嗎,呵呵,其實也不是,把console中的信息clear一下,而後再clear項目一下,這個時候,console中會有不少紅色的信息,參照這個確定能準確的找到哪一個文件報錯了。
下面這個事誤運行了xml文件,能夠看到gen的包不是空的,R.java文件也存在,而且明確的支出了是layout包中的錯誤ubuntu
編碼格式不正確
有時候因爲編碼格式問題,形成沒法生成R文件,此時後,把編碼格式變成GBK或者UTF–8便可api
[2016-9-22 17:53:35]android-studio
例如:Error:Execution failed for task ‘:transformClassesWithJarMergingForDebug’.bash
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/multidex/MultiDex$V14.class
Error:Execution failed for task ‘:transformClassesWithJarMergingForDebug’.
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class
這是因爲導包時重複形成的。解決這個問題有個比較霸氣的方法:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4' all*.exclude group: 'com.android.support', module: 'support-annotations' }
https://github.com/square/retrofit/issues/498#issuecomment-44097930
[2016-9-5 16:19:47]
這個能夠經過dialog.setOwnerActivity( )進行設置。
[2016-8-22 14:59:19]這個問題也着實的讓人摸不着頭腦,用的是最普通的通知,代碼以下:
NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context); Intent contentIntent = new Intent(context, MessageActivity.class); PendingIntent contentPendIntent = PendingIntent.getActivity(context, 0, contentIntent, 0); Notification notification = builder .setContentTitle(context.getString(R.string.app_name)) .setContentText(bundle.getString(JPushInterface.EXTRA_MESSAGE)) .setWhen(System.currentTimeMillis()) .setSmallIcon(R.mipmap.jpush_notification_icon) .setColor(Color.parseColor("#00EEFF")) .setLargeIcon(BitmapFactory.decodeResource( context.getResources(), R.mipmap.ic_launcher)) .setContentIntent(contentPendIntent) .build(); notification.flags |= Notification.FLAG_AUTO_CANCEL; manager.notify(1, notification);
我嘗試添加:contentIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
竟然把問題解決了。
有開發者將這個異常提交到了Google issues:https://code.google.com/p/android/issues/detail?id=192357#makechanges
其實也不難分析,從異常的字面意思來進行分析,能夠看出和堆棧仍是有點關係的。
在這種模式下,應用卸載,只是卸載了當前用戶的。其餘用戶的應用並無卸載。
通常是lint檢查形成了,在該項目的build.gradle下添加:
android{
lintOptions{
checkAllWarnings false abortOnError false } }
所謂符合ASCII標準,粗略的講就是不要出現漢字。由於漢字不在ASCII標準裏面。這個異常告訴咱們,項目路徑不能用漢字命名
最近在項目的全局狀態下,對異常進行了捕獲(包括fatal級別的異常)。忽然發現AS再也不打印該異常了。這是AS不打印異常的一種狀況。
須要執行commit才能生效。
假如你點擊條目1,可是你在GridView的監聽事件裏面訪問了其餘沒有被顯示的子view,此時會報空指針。所以對GridView全部子view的操做不要放在其監聽裏面。舉個例子:
例如在上圖有如下操做,當點擊某個條目時該條目背景色變爲藍色,其餘條目顏色爲白色,此時可能就牽扯到對全部子view的遍歷。
但若是子view被遮擋了,例如被鍵盤遮擋了,此時若是再點擊某個條目那些被遮擋的子view就會報空指針。
這樣的邏輯實現最好放在adapter中。
解決辦法:較爲完善的解決辦法就是,直接對uri進行操做,不要嘗試獲取路徑,若是須要用到文件能夠這樣寫:
//此處是獲取流,你能夠經過流來達到上傳文件的目的 getApplicationContext().getContentResolver().openInputStream(uri); //此處是圖片的轉化 Bitmap bitmap =BitmapFactory.decodeStream(getApplicationContext().getContentResolver().openInputStream(uri))
解決方案:這通常是因爲studio重複開啓致使的。進程沒有殺死,解決辦法是打開系統監視器,關閉之。
exception詳情:
05-21 14:15:29.623: E/art(23909): Throwing OutOfMemoryError "Failed to allocate a 4147212 byte allocation with 1550998 free bytes and 1514KB until OOM" 05-21 14:15:29.630: E/PriorityExecutor(23909): Request threw uncaught throwable 05-21 14:15:29.630: E/PriorityExecutor(23909): java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Failed to allocate a 4147212 byte allocation with 1550998 free bytes and 1514KB until OOM 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.FutureTask.report(FutureTask.java:93) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.FutureTask.get(FutureTask.java:163) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor.afterExecute(FifoPriorityThreadPoolExecutor.java:96) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1120) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.lang.Thread.run(Thread.java:818) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor$DefaultThreadFactory$1.run(FifoPriorityThreadPoolExecutor.java:118) 05-21 14:15:29.630: E/PriorityExecutor(23909): Caused by: java.lang.OutOfMemoryError: Failed to allocate a 4147212 byte allocation with 1550998 free bytes and 1514KB until OOM 05-21 14:15:29.630: E/PriorityExecutor(23909): at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 05-21 14:15:29.630: E/PriorityExecutor(23909): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 05-21 14:15:29.630: E/PriorityExecutor(23909): at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:681) 05-21 14:15:29.630: E/PriorityExecutor(23909): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:657) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.Downsampler.decodeStream(Downsampler.java:329) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.Downsampler.downsampleWithSize(Downsampler.java:220) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.Downsampler.decode(Downsampler.java:153) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.StreamBitmapDecoder.decode(StreamBitmapDecoder.java:50) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.StreamBitmapDecoder.decode(StreamBitmapDecoder.java:19) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.ImageVideoBitmapDecoder.decode(ImageVideoBitmapDecoder.java:39) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.bitmap.ImageVideoBitmapDecoder.decode(ImageVideoBitmapDecoder.java:20) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decodeBitmapWrapper(GifBitmapWrapperResourceDecoder.java:121) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decodeStream(GifBitmapWrapperResourceDecoder.java:94) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decode(GifBitmapWrapperResourceDecoder.java:71) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decode(GifBitmapWrapperResourceDecoder.java:61) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.resource.gifbitmap.GifBitmapWrapperResourceDecoder.decode(GifBitmapWrapperResourceDecoder.java:22) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.DecodeJob.decodeFromSourceData(DecodeJob.java:190) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.DecodeJob.decodeSource(DecodeJob.java:177) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.DecodeJob.decodeFromSource(DecodeJob.java:128) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.EngineRunnable.decodeFromSource(EngineRunnable.java:122) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.EngineRunnable.decode(EngineRunnable.java:101) 05-21 14:15:29.630: E/PriorityExecutor(23909): at com.bumptech.glide.load.engine.EngineRunnable.run(EngineRunnable.java:58) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 05-21 14:15:29.630: E/PriorityExecutor(23909): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 05-21 14:15:29.630: E/PriorityExecutor(23909): ... 3 more
這個問題在glide的github的issues上討論的也很熱烈。我如今的這個項目中的加載的圖片量很大,典型的button+fragment佈局。可是每一個頁面都有不少圖片,每一個fragment是由listview組成(條目爲大圖片),單獨操做每一個頁面沒有問題,可是遇到不斷切換時不斷的OOM提示,issues上的不少方法都試了,仍是不行,非常苦惱。並且這個問題在Android5.0如下的機器不存在,一想會不會是Dalvik虛擬機更改形成的,因而再仔細排查log,終於看到了其中有個關於dalvikdalvik.system.VMRuntime.newNonMovableArray(Native Method)
的提示,stackoverflow上有這個問題的答案:添加標籤<application android:largeHeap="true"
問題解決。另外,這個屬於內存優化的問題,除了申請大內存之外,還要搞好fragment的切換。該隱藏的隱藏,該顯示的現實。
解決方法:rebuild或者在build.gradle中刪除重複的包。
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ’ \bin\java.exe」 finished with non-zero exit value 2
解決辦法:
defaultConfig {
multiDexEnabled true }
http://stackoverflow.com/questions/29460443/execution-failed-for-task-appdexdebug-com-android-ide-common-process-proces
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1218/3789.html
發生這個異常的緣由,看源碼:
public void setArguments(Bundle args) { if (mIndex >= 0) { throw new IllegalStateException("Fragment already active"); } mArguments = args; }
那麼什麼是mIndex呢?繼續分析問題,首先看看這個字段的定義:
// Index into active fragment array. int mIndex = -1;
原始值是-1,再看看它是在哪兒賦值的呢?找源碼:
public FragmentState(Parcel in) { mClassName = in.readString(); mIndex = in.readInt(); mFromLayout = in.readInt() != 0; mFragmentId = in.readInt(); mContainerId = in.readInt(); mTag = in.readString(); mRetainInstance = in.readInt() != 0; mDetached = in.readInt() != 0; mArguments = in.readBundle(); mSavedFragmentState = in.readBundle(); }
看到了嗎?是Parcel 賦予mIndex的,而Bundle就是Parcel的一個實現類,因此你已經進行了一次fragment.setAraugment(bundle)以後再執行該方法就會出現上面的問題。
FragmentState是Fragment的一個內部類,另外看源碼你會發現mIndex還能夠經過set方法進行賦值,不過通常不這樣作。
若是是第一次set就使用fragment.setAraugment(bundle)
若是不是第一次就使用`fragment.getArguments().putAll(bundle)
解決思路來源:http://stackoverflow.com/questions/10364478/got-exception-fragment-already-active
AS問題解決系列3—iCCP: Not recognizing known sRGB profile
問題來源:致使這個錯誤的緣由,大可能是基於gradle的插件版本高,形成的。
解決辦法:將gradle依賴的一些插件的版本改的低一些。或者更新(不過,大多更新失敗,由於被牆的緣故)
詳細的解決方法:http://stackoverflow.com/questions/29063968
解決辦法:能夠將導入的moudle的build.gradle dependencies {
刪除,使其使用本地版本的gradle。解決辦法不少,這是其中一種。
classpath 'com.android.tools.build:gradle:1.3.1'
}
解決辦法:重啓;
辦法來源:http://stackoverflow.com/questions/27724883/gradle-project-refresh-failed-android-studio
思路來源:Caused by: java.lang.ClassNotFoundException[android的終極解決錯誤]
其實通常分爲2種狀況:
一、啓動activity的時候,在AndroidManifest.xml 可能壓根你就忘了添加一個activity,或者說activity的包名或者名字寫錯了,這個犯錯概率很高的
二、使用的class,是一個外部的JAR包,當在工程中編譯使用時,發佈成APK並無包含JAR文件,因此APK在執行的時候就找不到JAR文件,會報錯。
解決辦法:在onEvent()方法上添加註解@Subscribe。
解決方法:沒有找到@Subscribe註解的public修飾的方法,所以須要將onEvent等方法修改成public修飾便可.由於:Starting with EventBus 2.2 we enforced methods to be public (might change with annotations again)
閃退的緣由有不少,例如activity沒註冊,不過這都是一些能夠很快速解決的。不過因爲編譯器的緣由,尤爲是Adt(eclipse adt)開發,閃退若是拋出一些什麼classnot found,apk找不到,zygote找不到等等,這時請從新打包,應該能解決,這是很坑的異常。