Android开发遇到的坑

top

AS没有报错但是运行不了

  • 错误原因如下:
    1
    2
    Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
    > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\JDK\bin\java.exe'' finished with non-zero exit value 1

错误原因

  • 解决的办法如下:
    solve

  • 将buildToolsVersion改为23.0.0,即可完美解决

运行AndroidStudio项目出现两个图标,但是删除其中一个图标即可删除移除应用

  • 原因如下
    在新建Activity是勾选了Launch Activity复选框

  • 解决的办法就是新建Activity是按默认进行即可,不用勾选复选框

报错Caused by: java.lang.NoClassDefFoundError: android.support.design.internal.NavigationMenuPresenter

  • 原因可能是xml出错或者用到了控件没有在gradle中配置

问题:androidstudio应用打包Error:(4) Error: “XXX” is not translated in “en” (English) [MissingTranslation]

  • 解决办法:
    在出问题的资源文件的 resources 标签内增加xmlns:tools=”http://schemas.android.com/tools“ tools:ignore=”MissingTranslation”两个属性即可

问题:Error:Execution failed for task ‘:app:processDebugManifest’. > Manifest merger failed with multiple

  • 原因:添加Gradle依赖后出现,目测是版本问题。。。
  • 解决:在 manifest 中添加 xmlns:tools=”http://schemas.android.com/tools“ 标签,然后再 application 中添加 tools:replace=”android:icon,android:theme” 标签
  • 解决问题的原文

2017年7月6日更新

com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Invalid double: “”

1
2
3
4
5
6
7
错误原因是:定义的实体类数据和服务端返回的数据类型不匹配。
我这里出错的是因为服务器返回的是String类型的,我给他定义成long类型。

排查方法:
1. 将出错处用到的实体类打印log出来
2. 将服务器返返回的数据也打log
3. 仔细对比二者,必能找到原因(找不到的话...再问google)

Java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
错误原因是:希望的结果是列表,但是请求的时候是一个对象
我这里出错的是在请求网络接口的时候,参数应该是一个对象,我给设置成了一个List<对象>(有点和报错信息不一致,但是我改过后的结果是正确的)。

错误代码:(封装后的OkHttp网络请求,new SpotsCallBack<List<Favorites>>关键点)
okHttpHelper.post(Contants.API.FAVORITE_CREATE, params, new SpotsCallBack<List<Favorites>>(this) {
@Override
public void onSuccess(Response response, List<Favorites> favorites) {
ToastUtils.show(WareDetailActivity.this,"已添加到收藏夹");
}

修改后的正确代码:(将 SpotsCallBack 的参数改为 Favorites 对象)
okHttpHelper.post(Contants.API.FAVORITE_CREATE, params, new SpotsCallBack<Favorites>(this) {
@Override
public void onSuccess(Response response, List<Favorites> favorites) {
ToastUtils.show(WareDetailActivity.this,"已添加到收藏夹");
}

排查方法:
1. 将请求网络的参数排查一遍,主要看实体类数据和集合类数据

发起网络请求后,返回的code是405是什么原因?

1
405是请求的方法不允许,可能原因是后台采用的是get请求而实现的时候用的是post操作,因此会返回这个code码。

2017年7月24日更新

Error:(1, 0) Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See http://b.android.com/95744 for details. This warning can be disabled by adding the line ‘android.overridePathCheck=true’ to gradle.properties file in the project directory.

1
原因是导入的项目目录中有中文,将项目切换到非中文目录下在导入即可。

Error:(1, 0) Plugin with id ‘com.android.application’ not found

1
2
3
4
5
6
7
8
9
打开报错的项目的build.gradle,添加如下内容
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0' // 看gradle的版本是哪个就填写哪个
}
}
小额支持我写出更好的文章~