Android遇到的一些問題

【AS構(gòu)建】

進(jìn)入setting-plugins,取消紅色插件選擇,重啟,再重新選擇剛才的紅色插件。詳見 https://stackoverflow.com/questions/17710739/problems-found-loading-plugins-in-android-studio

  • 編譯時(shí)一些資源文件上的錯(cuò)誤沒法打印log

待編輯...
在terminal中輸入命令 gradlew processDebugManifest --debug 打開了gradle的debug信息打印,才發(fā)現(xiàn)到了具體錯(cuò)誤信息。

  • 加載了module再進(jìn)行g(shù)radle構(gòu)建的時(shí)候報(bào)錯(cuò)“SSL peer shut down incorrectly”
    先確定,加載module之前是正常的,那么一定是加載的module有問題,仔細(xì)查看module和app之間的配置,保證repositories等正確,一般在build(project)中需要配置:
buildscript {
    ext.kotlin_version = '1.3.10'
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        jcenter()
    }
}

相應(yīng)的module中也盡量按這個(gè)去設(shè)置,包括適配版本這個(gè)也要和app的一致。
其他可能的原因:
1、不要用安全連接


搜狗截圖20181125021621.png

2、需要FQ

【Git管理】

【界面UI相關(guān)】

  • You need to use a Theme.AppCompat theme (or descendant) with this activity

    詳見 http://blog.csdn.net/lincyang/article/details/42673151 ,我的情況中改Activity沒用,必須修改Theme

  • LinearLayout中動(dòng)態(tài)添加Fragment不能填充整個(gè)Activity的問題

    http://blog.csdn.net/se_wangke/article/details/47439653 重寫Fragment中onCreate方法

  • Design editor is unavailable until a successful build xml文件編輯時(shí)切換到視圖界面不顯示

    先查錯(cuò),無錯(cuò)的話rebuild,再不行重啟AS

  • 有l(wèi)ayout文件,但是編碼中無法通過id獲取相關(guān)組件

    查錯(cuò),rebuild試試

  • ListView添加header或者footer后,在header、footer與items之間出現(xiàn)分割線

    在ListView中設(shè)置android:divider="@null",在item布局中設(shè)置TextView為分割線,注意分割線設(shè)在底部

  • TextView設(shè)置單行后文字不顯示

    設(shè)置單行不要使用singleLine="true",使用以下代碼

android:lines="1"
android:maxEms="20"
android:ellipsize="end"
  • ScrollView里嵌套ListView,進(jìn)入界面時(shí)會(huì)自動(dòng)滾動(dòng)到最下面

    在listView的父層加上 android:descendantFocusability="blocksDescendants" 即可,每次加載都會(huì)在scrollview頂部。
    或者,在ScrollView中的第一個(gè)子元素設(shè)置為獲取光標(biāo),android:focusableInTouchMode=”true” android:focusable=”true”

  • ScrollView嵌套ListView只顯示一行之計(jì)算的高度不正確

    詳見 https://www.cnblogs.com/zmc/p/4013053.html http://www.jb51.net/article/37202.htm

  • 顯示全屏與底部虛擬按鍵沖突

最外層的框架里添加 android:fitsSystemWindows="true"

  • Dialog彈出框設(shè)置寬度填滿父類,網(wǎng)上有很多改參數(shù)的教程,幾乎都一樣,但都無法生效

在參數(shù)設(shè)置時(shí),把背景重設(shè)就好 dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);

  • 對(duì)button的背景設(shè)置為一張圖片有時(shí)候會(huì)出現(xiàn)變形的情況,解決方法是把圖片放在bitmap.xml里再引用
bitmap.xml
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"     
    android:src="@drawable/icon_filter_pressed" 
    android:gravity="center">
</bitmap>
  • 在attrs.xml中自定義的屬性無法生效

引用屬性時(shí)用 app:item_count="2"
在布局文件頭部引入 xmlns:app="http://schemas.android.com/apk/res-auto"
這里的兩個(gè)app可以必須相同,或者替換為其他的,比如xyz,要一起替換。

  • ConstraintLayout無法在可視界面中預(yù)覽

查詢AS是否下載了ConstraintLayout的支持。
Setting -> Android SDK -> SDK Tools 找到ConstraintLayout for Android等勾選下載

  • EditText設(shè)置光標(biāo)在最后,大部分博文里都只提到了setSelection(getText().length()),然而項(xiàng)目中用這個(gè)方法總是沒有效果,有博文提到在這之前還要設(shè)置singleLine,即setSingleLine(true)。然而對(duì)我來說都不起作用,并且考慮到我的需求是EditText一直保持光標(biāo)在最后,決定整個(gè)自定義的EditText,網(wǎng)上找的代碼親測(cè)可用
public class MyEditText extends android.support.v7.widget.AppCompatEditText {
  
    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);  
    }  
  
    public MyEditText(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
  
    public MyEditText(Context context) {  
        super(context);  
    }  
      
    @Override  
    protected void onSelectionChanged(int selStart, int selEnd) {  
        super.onSelectionChanged(selStart, selEnd);  
        //保證光標(biāo)始終在最后面  
        if(selStart==selEnd){//防止不能多選  
            setSelection(getText().length());  
        }  
          
    }  
}  
  • 4.4系統(tǒng)TextView使用矢量圖報(bào)錯(cuò)Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/arrow_right_white.xml from drawable resource ID
    主要是低版本TextView不兼容使用矢量圖,需要把矢量圖包裹在其他標(biāo)簽里:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/arrow_right_white" />
</selector>

但是到了這一步還不一定能完成,因?yàn)樵谧钚掳姹局行枰謩?dòng)開啟支持矢量圖,在你的Application里添加這句:

    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
  • 使用Button時(shí)末尾總有個(gè)陰影線,在API11以上使用:
  style="?android:attr/borderlessButtonStyle"

或者干脆用TextView。

  • 在8.0系統(tǒng)中報(bào)錯(cuò) Only fullscreen activities can request orientation
    在8.0系統(tǒng)中如果一個(gè)activity同時(shí)設(shè)置透明樣式和固定方向就會(huì)報(bào)這個(gè)錯(cuò),刪掉一個(gè)就行,或者針對(duì)8.0進(jìn)行適配https://blog.csdn.net/starry_eve/article/details/82777160

  • 使用AndroidX庫,報(bào)錯(cuò)“android.support.annotation不存在”

在項(xiàng)目中使用了butterknife,也就是說butterknife中沒有轉(zhuǎn)Androidx;
問題解決很簡單:升級(jí)butterknife到最新的版本(新版本已經(jīng)兼容Androidx)就可以了。
此時(shí)我更新的版本是(butterknife:9.0.0-rc2)

【開發(fā)中】

  • 從Activity無法獲取Fragment中的控件

    不能在onCreate函數(shù)中獲取控件,因?yàn)閒ragment還沒有start,你可以在onStart函數(shù)中獲取。* Adapter.notifyDataSetChanged()時(shí),ListView無法刷新數(shù)據(jù) > 對(duì)于數(shù)據(jù)更新你不能直接用賦值=,因?yàn)檫@樣會(huì)改變其內(nèi)存地址,而notify...更新是對(duì)原內(nèi)存地址上的數(shù)據(jù)更新,應(yīng)該用ArrayList.clear(),再ArrayList.addAll()。詳見 http://1028826685.iteye.com/blog/1663293* 無法讀取xml文件夾下的資源文件 > 創(chuàng)建資源文件的時(shí)候要用右鍵-XML Resource File,這樣的文件頭里包含一下語句,否則直接創(chuàng)建xml文件沒有該頭,R讀取時(shí)無法識(shí)別。```

  • 防止自動(dòng)跳出輸入法

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

  • ListView中CheckBox錯(cuò)位問題,詳見:

    https://www.cnblogs.com/FightForFreedom/p/4656863.html

  • AndroidStudio運(yùn)行DDMS,彈出錯(cuò)誤框,查看錯(cuò)誤日志后,發(fā)現(xiàn)“Unsupported major.minor version 52.0”

    應(yīng)該是本地java版本比as版本低的關(guān)系,把本地java版本更新到1.8即可

  • 取消Activity標(biāo)題欄

    if(isFullDisplay()) {
            Log.d(TAG, "isFull");
            requestWindowFeature(Window.FEATURE_NO_TITLE); //設(shè)置無標(biāo)題
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//取消狀態(tài)欄
            //上兩行代碼無效時(shí),手動(dòng)隱藏標(biāo)題欄
            if(getSupportActionBar() != null) {
                getSupportActionBar().hide();
            }
        }
        setContentView(getViewId());
  • 用gson.fromJson(),會(huì)強(qiáng)制把所有數(shù)字都轉(zhuǎn)換為double,過長的還會(huì)按科學(xué)計(jì)數(shù)法格式化,解決如下:

    http://www.lidetao.com/java-gson-json2map-int2double.html

  • android崩潰后直接重啟,導(dǎo)致捕捉不到異常信息

    在調(diào)試器里修改設(shè)置,把 Show only selected application 改為 No Filters,詳見 https://www.zhihu.com/question/32024327

  • 按Alt+Enter自動(dòng)import包時(shí)不成功,一直顯示Studio is updating indices

    打開File->Invalidate Caches / Restart->Invalidate and Restart,詳見 https://blog.csdn.net/andrio/article/details/80359455

  • 安裝時(shí)報(bào)錯(cuò) org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.

    把原APK刪掉重裝就好

  • onActivityResult()不執(zhí)行

1.你的Activity被finish()掉了,看看你的Activity有沒有在哪里finish()掉。
2.startActivityForResult(intent, -1)函數(shù),第二個(gè)參數(shù)小于0,應(yīng)該要大于0
3.啟動(dòng)模式為android:launchMode=”singleTask”和android:launchMode=”singleInstance”都會(huì)導(dǎo)致無效,修改為默認(rèn)的android:launchMode=”standard”
4.TabHost的子Activity中startActivityForResult調(diào)用其他Activity時(shí)候遭遇到onActivityResult方法不響應(yīng)的問題...
5.Fragment里面調(diào)用startActivityForResult的時(shí)候...

  • 剛添加初始化Fragment,無法通過findFragmentByTag獲取fragment

添加結(jié)束后再執(zhí)行:mFragmentManager.executePendingTransactions();

  • 編譯時(shí)報(bào)錯(cuò)“app:transformClassesAndResourcesWithProguardForRelease”,“java.io.IOException: Please correct the above warnings first.”

這里有一些解決方案,應(yīng)該是一些包重復(fù)導(dǎo)致的混淆錯(cuò)誤:app:transformClassesAndResourcesWithProguardForRelease
然而我遇到的情況是,混淆規(guī)則被注釋掉了未加入,注意在release{}中加入“proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'”

  • 在引入第三方庫,第一次打正式版包的時(shí)候如果報(bào)錯(cuò) “app:transformClassesAndResourcesWithProguardForFlavor_releaseRelease”

注意是混淆問題,引入第三方庫時(shí)沒有寫響應(yīng)的混淆規(guī)則。需要修改proguard-rules.pro(app),常用的有:

#定位
 -keep class com.amap.api.location.**{*;}
 -keep class com.amap.api.fence.**{*;}
 -keep class com.autonavi.aps.amapapi.model.**{*;}

#3D地圖 V5.0.0之后:
 -keep class com.amap.api.maps.**{*;}
 -keep class com.autonavi.**{*;}
 -keep class com.amap.api.trace.**{*;}

#greendao
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

#eventbus
-keepattributes *Annotation*
-keepclassmembers class ** {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}
  • 在編譯的時(shí)候,當(dāng)build.gradle文件有誤時(shí),在build欄只會(huì)簡單報(bào)錯(cuò),常見的報(bào)錯(cuò)如下
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs

然而什么地方see logs,卻不得而知,這里要打開報(bào)錯(cuò)日志來看詳細(xì)錯(cuò)誤:
進(jìn)入Terminal欄
Windonws輸入命令行

gradlew processDebugManifest --stacktrace

Mac輸入命令行

./gradlew processDebugManifest --stacktrace

即可查看詳細(xì)錯(cuò)誤,有時(shí)候Mac會(huì)遇到 Permission denied
那在輸入上述命令行前,先獲取權(quán)限,輸入

chmod +x gradlew

再按上述操作即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,629評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,976評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評(píng)論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,139評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,411評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,641評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,820評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,362評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,604評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容