转载

Android 异常 ConfigNotSupportedException 小结

一、问题描述

在下载了某开源 demo 项目之后,编译过程提示错误如下:

Error:Execution failed for task ':compileDebugRenderscript'.

> com/android/jill/api/ConfigNotSupportedException

二、问题分析

在遇到问题之后肯定是先分析问题描述,再进行搜索,针对性的解决问题。

经过上述两步,发现网上答案混杂不一:

  • 有说明 sdk 版本不对的:

    下载源项目 sdk 之后并未解决问题

  • 有说明 gradle 插件版本不对的:

    更新插件版本也尝试,错误依然;

  • 还有说明 gradle 配置不对的:

    需要在'gradle.properties'文件中添加如下一行代码:

    // org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

    然而都没有解决。

在搜索过程中发现,抛出这个错误的源码位置: ConfigNotSupportedException.java

其中这么描述产生当前异常的原因:

/**

* Thrown when the requested Jack configuration for a given API version is not supported.

*/

简单翻译就是需要的功能,当前 API 不能给予就会抛出此异常。

这个错误提示很笼统,当前 Android 项目依赖的东西太多,库文件,gradle 版本,sdk 版本...

突然想到,仓库配置是否完整。

在项目 build.gradle 文件中,代码如下:

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:3.0.1'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

}

allprojects {

repositories {

jcenter()

}

}

可以看到,当前项目只配置了 jcenter 仓库,如果依赖 google 的库文件,就会出现当前异常,在 添加构建依赖 界面有介绍如何添加第三方依赖库:

allprojects {

repositories {

maven {

url " https://repo.example.com/maven2 "

}

maven {

url "file://local/repo/"

}

ivy {

url " https://repo.example.com/ivy "

}

}

}

同时也介绍了如果添加 google 仓库:

allprojects {

repositories {

google()

// If you're using a version of Gradle lower than 4.1, you must instead use:

// maven {

// url ' https://maven.google.com '

// }

// An alternative URL is ' https://dl.google.com/dl/android/maven2/ '

}

}

当在 top-level build.gradle 文件中添加如下仓库之后,编译成功。

buildscript {

repositories {

jcenter()

maven { url ' http://repo1.maven.org/maven2 ' }

google()

}

dependencies {

classpath 'com.android.tools.build:gradle:3.0.1'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

}

allprojects {

repositories {

jcenter()

maven { url ' http://repo1.maven.org/maven2 ' }

google()

}

}

三、问题小结

还是老话,Android 更新比较快,官方文档还是需要花时间好好研读的。

对于各种依赖也需下功夫分析,各个版本区别在哪,更新了什么都要清楚。

原文  https://xiaozhuanlan.com/topic/2096314578
正文到此结束
Loading...