简介
此篇主要介绍在平常工作中的有关Android遇到的问题
问题
Android配置
问题 : 配置后出错
原因 : 添加了无法解析的属性,删除即可
参考链接 :
解决 :
Android和H5
webView无法回调js
问题 : js调用安卓的方法后,在安卓里面在调用js的方法无法调用
原因 : 可能是线程问题
参考链接 : 解决WebView使用loadUrl回调javascript方法时报错的问题
解决 :
/**
* 将会被js调用
*/
@JavascriptInterface
public void showcontacts() {
Toast.makeText(JsCallJavaCallPhoneActivity.this, "...........", Toast.LENGTH_SHORT).show();
webView.post(new Runnable() {
@Override
public void run() {
String json = "[{\"name\":\"阿福\", \"phone\":\"18600012345\"}]";
// 调用JS中的方法
webView.loadUrl("javascript:show('" + json + "')");
}
});
}
Android调试
failed to copy … Read-only file system
问题 : 遇到需要将jar和so push到设备的情况,某些没有调整文件权限的设备可能会遇到
failed to copy … Read-only file system 类似的提示。
原因 : 权限不够
参考链接 : android设备调试遇到failed to copy … Read-only file sys
解决 :
- 用 adb shell 命令进入到设备的文件系统;
- 用 su 命令切换到root用户(设备需要root);
- 用 mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system 重新挂载文件系统(如果没有这一步,即使修改了system文件夹的权限,也不能push成功);
- 用 chmod 777 /system 修改相关文件夹权限。
环境变量
Android开发环境那些必不可少的Home环境变量
2.1 JAVA_HOME 2.2 ANDROID_HOME 2.3 ANDROID_SDK_HOME 2.4 GRADLE_USER_HOME 2.5 GRADLE_HOME
仓库配置
//buildscript里是gradle脚本执行所需依赖,分别是对应的maven库和插件
buildscript {
repositories {
// google()
// jcenter()
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.novoda:bintray-release:+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
//allprojects里是项目本身需要的依赖
allprojects {
repositories {
// google()
// jcenter()
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
tasks.withType(Javadoc) { // 新增shell
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
studio升级
-
Gradle DSL method not found: ‘jackOptions()’
原因被废弃了
-
Could not find com.android.tools.build:gradle:3.5.2.
-
org.gradle.initializationi.BuildCompletionListener
-
javax.xml.bid.annotation.XmlSchema
将2.3.3 改为3.5.2 应为新版的studio 和gradle 不再支持3.2插件版本以下的版本
-
Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration.
lombok-1.12.6.jar (org.projectlombok:lombok:1.12.6)
//build.grald中添加 android { ... defaultConfig { ... javaCompileOptions { // 显式声明支持注解 annotationProcessorOptions { includeCompileClasspath false } } } }
对应关系
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。虽然 Android 插件通常会与 Android Studio 的更新步调保持一致,但插件(以及 Gradle 系统的其余部分)可独立于 Android Studio 运行 并单独更新。
gradle -- android gradle -- android studio这三者的兼容关系要互相兼容
Android Gradle插件«===»Android Studio
Android Gradle插件=======Android Studio=======兼容性
Android Gradle插件«===»gradle版本
修改项目中的gradle插件版本