Android采坑总结(持续更新)

2019/09/19

简介

此篇主要介绍在平常工作中的有关Android遇到的问题

问题

Android配置

问题 : 配置后出错

img

原因 : 添加了无法解析的属性,删除即可

img

参考链接 :

解决 :

img

Android和H5

webView无法回调js

问题 : js调用安卓的方法后,在安卓里面在调用js的方法无法调用

img

原因 : 可能是线程问题

参考链接 : 解决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

解决 :

  1. 用 adb shell 命令进入到设备的文件系统;
  2. 用 su 命令切换到root用户(设备需要root);
  3. 用 mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system 重新挂载文件系统(如果没有这一步,即使修改了system文件夹的权限,也不能push成功);
  4. 用 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升级

  1. Gradle DSL method not found: ‘jackOptions()’

    img

    原因被废弃了

    img

  2. Could not find com.android.tools.build:gradle:3.5.2.

    img

  3. org.gradle.initializationi.BuildCompletionListener

    img

    img

  4. javax.xml.bid.annotation.XmlSchema

    将2.3.3 改为3.5.2 应为新版的studio 和gradle 不再支持3.2插件版本以下的版本

    img

  5. 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=======兼容性

img

Android Gradle插件«===»gradle版本

img

修改项目中的gradle插件版本

img

Android版本«===»Api对照表

img

(本篇博文完结;中文字数一共:3495字,英文字数一共:742 字)


扫扫加关注公众号 让我们一起学习一起成长

(转载本站文章请注明作者和出处 IT超仔

Post Directory