问题一
异常描述:Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: Failed to find byte code for android/app/job/JobServiceEngine
解决方案:将Instant Run关闭。Settings-Build,Execution,Deployment-Instant Run 关闭。
问题二:
异常描述:Could not get unknown property 'apkVariantData' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.
解决方案:此问题是升级Gradle 3.x.x后出现,个人认为通常是项目中集成的三方插件或平台当前版本不支持Android Gradle 3.x.x所致,只需升级相关联的三方插件或平台版本即可。比如我是因为腾讯热修复平台Tinker,将其升级至最新版本后,解决!!!
问题三:
异常描述:Manifest merger failed with multiple errors, see logs
通常遇到这种问题,没有更多的提示信息。
解决方案:
在命令行Termimal 输入命令:gradlew processDebugManifest --stacktrace
这个命令会打印更多的log信息。
问题四:
异常描述: java.io.IOException: Cleartext HTTP traffic to 203.119.205.154 not permitted
解决方案:
这是由于Android P/9.0 开始必须使用加密的App 网络请求来处理数据。无论提交或者获取数据都不能用明码传输。
方案1.targetSdkVersion 设置 < 27
方案2.将Http请求改为Https
方案3.更改全局网络安全配置
在src/res/xml目录下创建xml文件:network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--兼容 Android 系统(Android P) 必须使用加密网络请求-->
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在AndroidManifes.xml application标签添加属性 networkSecurityConfig
<application
android:name=".MyApp"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="false"
android:theme="@style/AppTheme.NoActionBar"
tools:replace="android:icon,android:theme,android:allowBackup">
....
问题五:
问题描述:AAPT2 error: check logs for details
通常是资源找不到导致的问题,但是我们在这个视图下并不能找到其他提示信息。
解决方案:切换Build视图 Restart 至 Toggle view,可以看到详细的日志信息。通常可以直接打印出具体资源文件找不到的位置。
问题六
问题描述:Could not download butterknife-compiler.jar XXX : No cached version available for offline mode
通常是项目中的下载项需要访问google下载,但是国内必须翻墙。设置取消勾选Offline work 也不起作用。
解决办法:
将下面两行代码添加至 project.gradle 的 buildscript respositories 和 allprojects respositiries
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
问题六
问题描述:Android Studio 可以执行Debug,但局部变量值不能Watch
解决方案:
设置 :testCoverageEnabled false
release {
minifyEnabled false //删除没有用到的文件
matchingFallbacks = ['debug', 'dev', 'beta', 'prd']
debuggable true
testCoverageEnabled false
signingConfig signingConfigs.key
}
注:如果运行发现仍然不能Watch,可以尝试Invalidate Caches/Restart 。重新启动后再试!
问题七
问题描述:
SourceTree 操作出现错误,错误信息:
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://git.xxx.com/mft100/yyy.git/'
可能会有很多原因,这里记录我遇到的一种,检查“验证账户”
工具-选项-验证
问题八:Enter passphrase for key '/Users/xxx/.ssh/id_rsa
What
在自己Mac上配置了SSH公私钥,出现了如下问题,每次都要输入密码,于是就查了一下解决办法。
git每次操作远程分支(git pull,git push等)时提示enter passphrase for key '~/.ssh/id_rsa'
Why
原因应该是生成key的时候设置了密码,导致每次操作git都需要输入密码。然而很多小伙伴第一次生成key的时候都处于懵懵懂懂的状态(比如我),面对陌生的命令,莫名其妙就设置了密码,然后每次使用时都需要输入密码这个繁杂的操作。我这次发现自己输入的密码都不是GitLab的密码。
How
解决办法很简单,就是输入以下命令:
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
如:
ssh-keygen -p -P 123456 -N '' -f ~/.ssh/id_rsa