以下的每一个问题都是我在开发中遇到的!关于内容我会在从业期间内,不断去完善~
- 编写期间问题
- 编译期间问题
- 1.transformDexArchiveWithExternalLibsDexMergerForDebug(jar包引用冲突)
- 2.Installation failed with message -99(缓存问题)
- 3.编译提示警告xx已过时 (屏蔽警告)
- 4.Error:注: 某些输入文件使用或覆盖了已过时的 API
- 5.找不到cache.properties (系统找不到指定的文件)
- 6.代码混淆之后,在编译期报出警告信息
- 7.All packages are not available for download(构建错误)
- 8.As 版本升级到3.0之后编辑出现 enableAapt2 问题
- 9.1 无法正常打包apk - app:transformClassesAndResourcesWithProguardForRelease(打包apk)
- 9.2 无法正常打包apk - Error:Execution failed for task ':app:lintVitalRelease(打包apk)
- 10.编译版本问题 Error:com.android.dex.DexException: Multiple dex files define Landroid/suppo
- 11.Android的targetSdkVersion版本为28,网络请求(http)出现问题,编译无法通过 ,报错 java.net.UnknownServiceException
- 12.app那块显示一个红叉,无法直接launch app 报出:default activity not found ,可以build工程产生apk文件,但是不能用studio直接launch app
- 13.项目在运行到设备时 报出:Error while Launching activity(安装包数据未清除干净)
- 14.Gradle error : Write access is allowed from event dispatch thread only in android studio(jdk原因)
- 15.Run Configuration Error: Broken configuration due to unavailable plugin or ...(插件方面)
- 16.Gradle project sync failed. Basic functionality (eg. editing, debugging) will not work properly(Gradle同步)
- 17.Caused by: java.lang.AssertionError: Already disposed: Module: ...(配置冲突)
- 18.Build completed with 1 error and 0 warnings in 2 s 113 ms(JDK方面)
- 调试阶段问题
- 1.vivo手机调试出现"INSTALL_FAILED_TEST_ONLY"
- 2.小米手机调试出现"INSTALL_CANCELED_BY_USER"
- 3.Source code does not match the bytecode警告
- 4.WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
- 5.com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details(生成签名apk时报错)
编写期间问题
1.As自带代码提示功能无法使用,不进行任何提示
-
如果设置正确且这里为打钩状态,那么取消打钩!然后去试一试吧,应该没问题了
2.设置文件为仅读 or 正常状态
- 出现问题 (当设置为仅读状态,我们去编辑代码就会出现报错)
解决方式:
-
设置方式(设置为仅读状态)
-
设置方式(设置为正常状态)
3.运行项目的时候弹出edit configuration
解决方式:File–>project structure
4.As内部android sdk下载
解决方式:
-
File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK.
-
安装好之后,重启As
File - Invalidate Cache/Restart
- 点击Invalidate and Restart 之后As将进行重启
5.Alt+Enter 智能返回提示不对
这里的返回提示指的是如 new ArrayList<>(); 通过Alt+Enter提示应自动返回ArrayList list 用于接收
结果:ArrayList list = new ArrayList<>() ;
解决方式
操作流程:File → Setting → Editor → Intentions 打勾即可
编译期间问题
如在控制台找不到错误输出,可以打开Termianl ,输入命令 gradlew compileDebug --stacktrace 回车 ~ 然后会显示一些具体出错的信息
1.transformDexArchiveWithExternalLibsDexMergerForDebug(jar包引用冲突)
解决方式:
- build.gradle(app)的defaultConfig标签内加入以下属性
multiDexEnabled true
- build.gradle(app)的dependencies标签内加入以下依赖
implementation 'com.android.support:multidex:1.0.3'
- Application继承于MultiDexApplication(demo的话,直接在清单文件使用MultiDexApplication也可以,如果运营项目需继承MultiDexApplication)
2.Installation failed with message -99(缓存问题)
后台清理一下数据,释放所有内存;如首先卸载apk,同时使用手机自带的清理工具,清理apk残留数据即可~ (也可尝试插拔数据线,或重启一次手机 ~)
3.编译提示警告xx已过时 (屏蔽警告)
PS:一般是警告,不是错误,也可以打包成功,但编译有时会失败 ;同时如果警告条目太多,当我们真报错的时候,报错的信息是位于最底部的!!!所以这里要格外注意
解决方式:屏蔽警告方法
app的目录下build.gradle添加:
//在android内部 ,allprojects 同级的有defaultConfig、buildTypes等
android {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
根目录下build.gradle添加:
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}
如上述操作无法屏蔽警告的话,请在builde.gradle(app)的android{ }内添加以下俩行代码
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
4.Error:注: 某些输入文件使用或覆盖了已过时的 API
解决方式:
根目录下build.gradle添加:
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}
设置build.gradle后依旧会有警告,但是警告不会影响程序运行!如果影响到了,那么进行如下配置!!!
gradle.properties 查看是否有android.enableAapt2 属性,如有设置为false,如无直接添加以下这行代码 ~
android.enableAapt2 = false
设置好上面俩处配置之后应该就可以运行起来项目了,至少我是没问题了!
此时警告依旧会存在,而且数量应该不少,这时候就可以用到上文提到过的屏蔽警告方法进行设置了!!
5.找不到cache.properties (系统找不到指定的文件)
- 报错输出Log
Error:FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:packageBaiduDebug'.
> E:\garage_android\app\build\intermediates\transforms\dexMerger\baidu\debug\0\classes2.dex (系统找不到指定的文件。)
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 26s
-
出错原因
gradle的无可用的caches(缓存) 空间了 -
解决方式
找到 gradle\caches 空间,删除不用的gradle版本 !(一般位于C盘的用户目录下,如果找不到请在文件右上角直接搜索)
如没看明白,直接看图吧 ~
6.代码混淆之后,在编译期报出警告信息
解决方式:
在 proguard-rules.pro 中添加以下这两个混淆,然后重新编译
-keepattributes EnclosingMethod
-keepattributes InnerClasses
7.All packages are not available for download(构建错误)
解决方式:把代理去掉,setting -> proxy,这里勾选auto
8.As 版本升级到3.0之后编辑出现 enableAapt2 问题
报错信息:The option ‘android.enableAapt2’ is deprecated and should not be used anymore. Use ‘android.enableAapt2=true’ to remove this warning. It will be removed at the end of 2018…
- 解决方式 - 短暂 (亲测可用)
gradle.properties(混淆配置) 新增 android.enableAapt2 = true ,设置之后如无生效可以尝试clean、rebuild 或 重启 As
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableAapt2 = true
- 解决方式 - 彻底 (未测未用)
File -> Settings 进入设置
搜索Gradle
Global Setting中,随便输入个没有空格或中文的目录,比如C:/tools/.gradle
9.1 无法正常打包apk - app:transformClassesAndResourcesWithProguardForRelease(打包apk)
编译期间报错,导致无法正常打包apk
错误信息:Execution failed for task ‘:app:transformClassesAndResourcesWithProguardForRelease’.
解决方式:proguard-rules.pro(混淆规则)增加 -ignorewarnings忽略警告 ,可能治标不治本 ~
-dontwarn org.apache.commons.logging.**
-ignorewarnings
-keep class * {
public private *;
}
9.2 无法正常打包apk - Error:Execution failed for task ':app:lintVitalRelease(打包apk)
错误信息:Error:Execution failed for task ':app:lintVitalRelease
解决方式:app的目录下build.gradle添加以下代码 (类型上方屏蔽警告的解决方式)
//在android内部 ,allprojects 同级的有defaultConfig、buildTypes等
android {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
10.编译版本问题 Error:com.android.dex.DexException: Multiple dex files define Landroid/suppo
通过以下方式设置之后可以clean、rebuld、或重启项目来查看我们的解决方式是否有效
方式一
查看libs下是否有v4、v7包
通过compile fileTree(include: ‘*.jar’, dir: ‘libs’)来引入v4包的,把这个jar包删除,
改为gradle引入 compile ‘com.android.support:support-v4:25.3.1’问题解决,
可能是gradle引入的gradle才能自动解决重复的包,而通过jar包引入的gradle处理不了
方式二
查看build.gradle(app)是否引用的26的版本,同时查看是否有 multiDexEnabled true 属性
compileSdkVersion 27
defaultConfig {
applicationId "com.example.salesmanservice"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
multiDexEnabled true
}
11.Android的targetSdkVersion版本为28,网络请求(http)出现问题,编译无法通过 ,报错 java.net.UnknownServiceException
解决方式 (如需更多解决方式,请进入顶部的孪生篇进行查看 ~)
修改 build.app 内 targetSdkVersion 为28以下的版本! 27就ok咯 ~
12.app那块显示一个红叉,无法直接launch app 报出:default activity not found ,可以build工程产生apk文件,但是不能用studio直接launch app
原因:我自己在AndroidManifest.xml内MainAcitivity对应的activity标签内加入了 category 的 launcher ~
解决方式:这里只是我面临的问题和解决方式,有位 博友 介绍此问题更全一些 ~
//这是MainActivity内部的正常属性
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
13.项目在运行到设备时 报出:Error while Launching activity(安装包数据未清除干净)
具体报错信息
解决方式:AndroidStudio内打开下方Terminal命令工具 adb 对应报名
(清除遗留数据),如Success则清除成功
Look here,baby!清除成功后,最好clean一下项目!这样的话一般项目都可以正常运行在设备上了!还不行的话就重启一下AndroidStudio !!!
14.Gradle error : Write access is allowed from event dispatch thread only in android studio(jdk原因)
原因:未设置或设置因某些场景失效,导致无法通过jdk环境运行
解决方式:File - Project Structure - SDK Location
15.Run Configuration Error: Broken configuration due to unavailable plugin or …(插件方面)
原因:加载插件失败,或之前已加载插件失效等
解决方式:File - Settings - Plugins 查看插件是否有爆红的,如有则取消勾选后,重新勾选一次,然后保存关闭,重启As(建议:Invalidate and Restart)
16.Gradle project sync failed. Basic functionality (eg. editing, debugging) will not work properly(Gradle同步)
解决方式:一般具体原因可通过As类似的文件路径,(C:\Users\Administrator.AndroidStudio\system\log\idea.log)查看出错的log日志
查询log日志内有关error 错误,根据对应错误进行解决
17.Caused by: java.lang.AssertionError: Already disposed: Module: …(配置冲突)
解决方式:右键 Module - open module settings - 选取左侧Modules - 如果有app和项目名,则删除app目录 - 重新编译
或在左侧Modules内选中SDK 重新设置bulid target版本
18.Build completed with 1 error and 0 warnings in 2 s 113 ms(JDK方面)
解决方式:File - Settings 将java compiler 改成正确版本
如无效,可同样将 project structure 改成正确版本
调试阶段问题
1.vivo手机调试出现"INSTALL_FAILED_TEST_ONLY"
出错场景:vivo手机编译安装期间,出现解析包错误~
解决方式:
步骤 1 - 取消箭头所指向的选项框选取
步骤 2 - gradle.properties文件中添加以下代码 (有时候只添加此项既可)
android.injected.testOnly=false
借鉴一位博主的解决方式解决方式(未亲测):研究发现原来是Android Studio 3.0会在debug apk的manifest文件application标签里自动添加 android:testOnly="true"属性,导致IDE中run跑出的apk在大部分手机上只能用adb install -t 来安装
adb install -t app-debug.apk
2.小米手机调试出现"INSTALL_CANCELED_BY_USER"
提示:小米手机若需要通过AndroidStudio调试的话,需要插入SIM卡
- 简单步骤
1> 设置 - 更多设置 - 系统安全 - 未知来源 - 允许
2> 设置 - 更多设置 - 开发者选项 - USB调试 - 允许
3> 设置 - 更多设置 - 开发者选项 - USB安装 - 允许
3.Source code does not match the bytecode警告
原因:代码改变后,未重新编译
解决方式:As顶部菜单中选择build(重新编译)或直接restart(重启代码);此项操作均是为了清空无效代码,编译最新代码
4.WARNING: Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.
原因:compile会被在2018年底取消,会被imlementation替代,所以会报这个警告
解决方式:将compile换成imlementation 即可 ~
5.com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details(生成签名apk时报错)
- gradle.properties中加入以下配置
android.enableAapt2=false
- build gradle 中加入以下配置
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
具体如下
buildTypes {
release {
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
- 重启、clean、rebuild