【AS構(gòu)建】
-
導(dǎo)入項(xiàng)目出現(xiàn)Manifest.xml not found。
事實(shí)是導(dǎo)入的文件夾非項(xiàng)目根目錄。。。仔細(xì)找找項(xiàng)目根目錄在哪,根目錄下會(huì)有Gradle等配置文件。
-
導(dǎo)入項(xiàng)目卡在gradle加載界面。
或者用代理設(shè)置全局模式 把 http://bintray.com 添加到 pac 或 user-rule 里面
-
Android Studio 解決錯(cuò)誤 Could not find method android() for arguments
-
Minimum supported Gradle version is 3.3. Current version is 3.2
注意修改gradle-wrapper.properties,詳見 http://blog.csdn.net/muzili1206/article/details/60757210
-
Gradle DSL method not found: 'compileSdkVersion()'
http://blog.csdn.net/qq_18524107/article/details/76737045 該解決方案,可以在工程的build.gradle中指定sdk、buildTool版本等問題,module中只需要繼承即可,整個(gè)工程統(tǒng)一管理。注意工程中build.gradle要有等號(hào)。
-
Android Studio出現(xiàn)Failed to open zip file
http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2017/0317/7691.html
-
更新AS3.0后,出錯(cuò) Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
在項(xiàng)目的gradle.properties中添加 android.enableAapt2=false
-
Plugin with id 'org.greenrobot.greendao' not found.
在project的build.gradle中添加代碼dependencies { classpath 'com.android.tools.build:gradle:2.2.1'},見 http://blog.csdn.net/qq_27899045/article/details/52797636
-
Gradle編譯時(shí),org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processD
這是出現(xiàn)在往drawable中復(fù)制了大量圖片和xml后發(fā)生的,發(fā)現(xiàn)xml文件里有大堆報(bào)錯(cuò),切勿直接復(fù)制xml就不管了。
報(bào)錯(cuò):androidstudio Problems found loading plugins
進(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、不要用安全連接
2、需要FQ
【Git管理】
-
Git設(shè)置
注意settinngs中GitHub和Git是兩碼事,若使用碼云等非GitHub倉庫,需清空掉GitHub的設(shè)置。
【界面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ò)位問題,詳見:
-
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ù)法格式化,解決如下:
-
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
再按上述操作即可。