1. Apostrophe not preceded by \ XXX
某些字符未被转义,我遇到的是 ’ 没有转译,写成\’ ok。
2. CMake was unable to find a build program corresponding to “Ninja”
今日导入了别人写的Native项目,报了这个错:
CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
错误很明显,是说找不到Ninja。因此只要给添加上就OK了。
- 下载Ninja https://github.com/ninja-build/ninja/releases
- 解压后放入 /usr/bin/
问题解决
3. More than one file was found with OS independent path
在出错的Model的gradle的android节点下添加
packagingOptions {
pickFirst 'META-INF/*'
}
4. has different version for the compile (1.1.0) and runtime (1.1.1) classpath
字面意思编译版本和运行版本不一致,造成整个问题是由于依赖包冲突,我们可以通过以下命令查看项目的依赖关系:
./gradlew app:dependencies > log_dependencies.txt
这样依赖关系会保存到项目下的log_dependencies.txt文件内,在文件里搜索冲突的依赖包,然后进行excule即可。我的项目发生这个问题是在引入room数据库后发生了android.arch.core:runtime这个包的冲突。排查发现com.android.support:design中用到了这个库,解决如下:
implementation ('com.android.support:design:27.1.0'){
exclude(group: 'android.arch.core', module: 'runtime')
}
5. cannot access RoomDatabase
出现这个问题是由于我将一个带有Room的模块单独打成了一个module,在主项目引入该module。解决方法:
在之前的module中引入Room的方式由implementation改为api
6. Cannot add task ‘install’ as a task with that name already exists
可能大家遇到的不是install,而是其他的任务,但思想应该是一致的。我出现这个问题是这样的:我写了一个依赖库,开始时候是用apply plugin: 'maven’发布到本地,后来又想发布到网络仓库添加了apply plugin: 'com.github.dcendents.android-maven’这两个插件都使用了install这个task,所以造成了冲突,去掉一个就ok了
7. You must specify a URL for a Maven repository
有点丢人,maven配置时候多了一层嵌套。。。
错误写法
maven{
maven { url 'https://jitpack.io' }
}
去除外层的maven{}解决
8. All flavors must now belong to a named flavor dimension
将gradle升级到3.0+后会遇到这个问题,在gradle中添加如下代码可解决:
defaultConfig{
flavorDimensions "default"
}
9. Error: Default interface methods are only supported starting with Android N
在gradle中加入以下代码即可
android{
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
10. Error:Unable to find toolchain: mips64el-linux-android/prebuilt
可以通过创建空文件解决
mkdir ~/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin
touch ~/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin/mips64el-linux-android-strip
11. Error:Cannot set readonly property
导入一个旧项目,里面使用了 gradle-experimental ,我在里面指定指令集时出现了问题:
android.ndk {
moduleName = "xxx"
...
abiFilters += "armeabi-v7a"
...
}
需要更改为add
android.ndk {
moduleName = "xxx"
...
abiFilters.add("armeabi-v7a")
...
}
12. res\navigation\xxx.xml: Error: Unsupported type ‘fragment’
低版本的gradle中使用了Android Jetpack中的Navigation组件,需要升级gradle版本,实测:
classpath 'com.android.tools.build:gradle:3.1.2'
可以。2.3.0编译出错
13. java.lang.NoSuchMethodError: No virtual method requireContext()Landroid/content/Context
requireContext()为Android 27以上的方法,低版本的编译环境使用会报错
14. unsupported modules detected
解决办法:关闭AS,去项目根目录删除.idea文件,重启AS搞定
15. Dex cannot parse version 52 byte code
解决办法在app的gradle文件中添加如下代码:
android{
...
defaultConfig{
jackOptions {
enabled true
}
}
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
16. ‘res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml’ collided
有时手动打包会报这个错,网上大神说是打包信息冲突。
解决方法是删除上次打的包生成的.apk及.json文件重新打包即可。
参考: https://blog.csdn.net/leesoo7/article/details/106824314/