【AS构建】
-
导入项目出现Manifest.xml not found。
事实是导入的文件夹非项目根目录。。。仔细找找项目根目录在哪,根目录下会有Gradle等配置文件。
-
导入项目卡在gradle加载界面。
或者用代理设置全局模式 把 http://bintray.com 添加到 pac 或 user-rule 里面
-
Android Studio 解决错误 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中只需要继承即可,整个工程统一管理。注意工程中build.gradle要有等号。
-
Android Studio出现Failed to open zip file
http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2017/0317/7691.html
-
更新AS3.0后,出错 Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
在项目的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编译时,org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processD
这是出现在往drawable中复制了大量图片和xml后发生的,发现xml文件里有大堆报错,切勿直接复制xml就不管了。
报错:androidstudio Problems found loading plugins
进入setting-plugins,取消红色插件选择,重启,再重新选择刚才的红色插件。详见 https://stackoverflow.com/questions/17710739/problems-found-loading-plugins-in-android-studio
- 编译时一些资源文件上的错误没法打印log
待编辑...
在terminal中输入命令gradlew processDebugManifest --debug
打开了gradle的debug信息打印,才发现到了具体错误信息。
- 加载了module再进行gradle构建的时候报错“SSL peer shut down incorrectly”
先确定,加载module之前是正常的,那么一定是加载的module有问题,仔细查看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()
}
}
相应的module中也尽量按这个去设置,包括适配版本这个也要和app的一致。
其他可能的原因:
1、不要用安全连接
2、需要FQ
【Git管理】
-
Git设置
注意settinngs中GitHub和Git是两码事,若使用码云等非GitHub仓库,需清空掉GitHub的设置。
【界面UI相关】
-
You need to use a Theme.AppCompat theme (or descendant) with this activity
详见 http://blog.csdn.net/lincyang/article/details/42673151 ,我的情况中改Activity没用,必须修改Theme
-
LinearLayout中动态添加Fragment不能填充整个Activity的问题
http://blog.csdn.net/se_wangke/article/details/47439653 重写Fragment中onCreate方法
-
Design editor is unavailable until a successful build xml文件编辑时切换到视图界面不显示
先查错,无错的话rebuild,再不行重启AS
-
有layout文件,但是编码中无法通过id获取相关组件
查错,rebuild试试
-
ListView添加header或者footer后,在header、footer与items之间出现分割线
在ListView中设置android:divider="@null",在item布局中设置TextView为分割线,注意分割线设在底部
-
TextView设置单行后文字不显示
设置单行不要使用singleLine="true",使用以下代码
android:lines="1"
android:maxEms="20"
android:ellipsize="end"
-
ScrollView里嵌套ListView,进入界面时会自动滚动到最下面
在listView的父层加上
android:descendantFocusability="blocksDescendants"
即可,每次加载都会在scrollview顶部。
或者,在ScrollView中的第一个子元素设置为获取光标,android:focusableInTouchMode=”true” android:focusable=”true”
-
ScrollView嵌套ListView只显示一行之计算的高度不正确
详见 https://www.cnblogs.com/zmc/p/4013053.html http://www.jb51.net/article/37202.htm
显示全屏与底部虚拟按键冲突
最外层的框架里添加 android:fitsSystemWindows="true"
- Dialog弹出框设置宽度填满父类,网上有很多改参数的教程,几乎都一样,但都无法生效
在参数设置时,把背景重设就好 dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);
- 对button的背景设置为一张图片有时候会出现变形的情况,解决方法是把图片放在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中自定义的属性无法生效
引用属性时用
app:item_count="2"
在布局文件头部引入xmlns:app="http://schemas.android.com/apk/res-auto"
这里的两个app
可以必须相同,或者替换为其他的,比如xyz,要一起替换。
- ConstraintLayout无法在可视界面中预览
查询AS是否下载了ConstraintLayout的支持。
Setting -> Android SDK -> SDK Tools 找到ConstraintLayout for Android等勾选下载
- EditText设置光标在最后,大部分博文里都只提到了setSelection(getText().length()),然而项目中用这个方法总是没有效果,有博文提到在这之前还要设置singleLine,即setSingleLine(true)。然而对我来说都不起作用,并且考虑到我的需求是EditText一直保持光标在最后,决定整个自定义的EditText,网上找的代码亲测可用
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);
//保证光标始终在最后面
if(selStart==selEnd){//防止不能多选
setSelection(getText().length());
}
}
}
- 4.4系统TextView使用矢量图报错
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/arrow_right_white.xml from drawable resource ID
主要是低版本TextView不兼容使用矢量图,需要把矢量图包裹在其他标签里:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/arrow_right_white" />
</selector>
但是到了这一步还不一定能完成,因为在最新版本中需要手动开启支持矢量图,在你的Application里添加这句:
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
- 使用Button时末尾总有个阴影线,在API11以上使用:
style="?android:attr/borderlessButtonStyle"
或者干脆用TextView。
在8.0系统中报错 Only fullscreen activities can request orientation
在8.0系统中如果一个activity同时设置透明样式和固定方向就会报这个错,删掉一个就行,或者针对8.0进行适配https://blog.csdn.net/starry_eve/article/details/82777160使用AndroidX库,报错“android.support.annotation不存在”
在项目中使用了butterknife,也就是说butterknife中没有转Androidx;
问题解决很简单:升级butterknife到最新的版本(新版本已经兼容Androidx)就可以了。
此时我更新的版本是(butterknife:9.0.0-rc2)
【开发中】
-
从Activity无法获取Fragment中的控件
不能在onCreate函数中获取控件,因为fragment还没有start,你可以在onStart函数中获取。* Adapter.notifyDataSetChanged()时,ListView无法刷新数据 > 对于数据更新你不能直接用赋值=,因为这样会改变其内存地址,而notify...更新是对原内存地址上的数据更新,应该用ArrayList.clear(),再ArrayList.addAll()。详见 http://1028826685.iteye.com/blog/1663293* 无法读取xml文件夹下的资源文件 > 创建资源文件的时候要用右键-XML Resource File,这样的文件头里包含一下语句,否则直接创建xml文件没有该头,R读取时无法识别。```
-
防止自动跳出输入法
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
-
ListView中CheckBox错位问题,详见:
-
AndroidStudio运行DDMS,弹出错误框,查看错误日志后,发现“Unsupported major.minor version 52.0”
应该是本地java版本比as版本低的关系,把本地java版本更新到1.8即可
取消Activity标题栏
if(isFullDisplay()) {
Log.d(TAG, "isFull");
requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//取消状态栏
//上两行代码无效时,手动隐藏标题栏
if(getSupportActionBar() != null) {
getSupportActionBar().hide();
}
}
setContentView(getViewId());
-
用gson.fromJson(),会强制把所有数字都转换为double,过长的还会按科学计数法格式化,解决如下:
-
android崩溃后直接重启,导致捕捉不到异常信息
在调试器里修改设置,把 Show only selected application 改为 No Filters,详见 https://www.zhihu.com/question/32024327
-
按Alt+Enter自动import包时不成功,一直显示Studio is updating indices
打开File->Invalidate Caches / Restart->Invalidate and Restart,详见 https://blog.csdn.net/andrio/article/details/80359455
-
安装时报错 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
把原APK删掉重装就好
onActivityResult()不执行
1.你的Activity被finish()掉了,看看你的Activity有没有在哪里finish()掉。
2.startActivityForResult(intent, -1)函数,第二个参数小于0,应该要大于0
3.启动模式为android:launchMode=”singleTask”和android:launchMode=”singleInstance”都会导致无效,修改为默认的android:launchMode=”standard”
4.TabHost的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题...
5.Fragment里面调用startActivityForResult的时候...
- 刚添加初始化Fragment,无法通过findFragmentByTag获取fragment
添加结束后再执行:mFragmentManager.executePendingTransactions();
- 编译时报错“app:transformClassesAndResourcesWithProguardForRelease”,“java.io.IOException: Please correct the above warnings first.”
这里有一些解决方案,应该是一些包重复导致的混淆错误:app:transformClassesAndResourcesWithProguardForRelease
然而我遇到的情况是,混淆规则被注释掉了未加入,注意在release{}中加入“proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'”
- 在引入第三方库,第一次打正式版包的时候如果报错 “app:transformClassesAndResourcesWithProguardForFlavor_releaseRelease”
注意是混淆问题,引入第三方库时没有写响应的混淆规则。需要修改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);
}
- 在编译的时候,当build.gradle文件有误时,在build栏只会简单报错,常见的报错如下
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
然而什么地方see logs,却不得而知,这里要打开报错日志来看详细错误:
进入Terminal栏
Windonws输入命令行
gradlew processDebugManifest --stacktrace
Mac输入命令行
./gradlew processDebugManifest --stacktrace
即可查看详细错误,有时候Mac会遇到 Permission denied
那在输入上述命令行前,先获取权限,输入
chmod +x gradlew
再按上述操作即可。