某些字符未被转义,我遇到的是 ’ 没有转译,写成\’ ok。
今日导入了别人写的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了。
在出错的Model的gradle的android节点下添加
packagingOptions {
pickFirst 'META-INF/*'
}
字面意思编译版本和运行版本不一致,造成整个问题是由于依赖包冲突,我们可以通过以下命令查看项目的依赖关系:
./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')
}
出现这个问题是由于我将一个带有Room的模块单独打成了一个module,在主项目引入该module。解决方法:
在之前的module中引入Room的方式由implementation改为api
可能大家遇到的不是install,而是其他的任务,但思想应该是一致的。我出现这个问题是这样的:我写了一个依赖库,开始时候是用apply plugin: 'maven’发布到本地,后来又想发布到网络仓库添加了apply plugin: 'com.github.dcendents.android-maven’这两个插件都使用了install这个task,所以造成了冲突,去掉一个就ok了
有点丢人,maven配置时候多了一层嵌套。。。
错误写法
maven{
maven { url 'https://jitpack.io' }
}
去除外层的maven{}解决
将gradle升级到3.0+后会遇到这个问题,在gradle中添加如下代码可解决:
defaultConfig{
flavorDimensions "default"
}
在gradle中加入以下代码即可
android{
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
可以通过创建空文件解决
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
导入一个旧项目,里面使用了 gradle-experimental ,我在里面指定指令集时出现了问题:
android.ndk {
moduleName = "xxx"
...
abiFilters += "armeabi-v7a"
...
}
需要更改为add
android.ndk {
moduleName = "xxx"
...
abiFilters.add("armeabi-v7a")
...
}
低版本的gradle中使用了Android Jetpack中的Navigation组件,需要升级gradle版本,实测:
classpath 'com.android.tools.build:gradle:3.1.2'
可以。2.3.0编译出错
requireContext()为Android 27以上的方法,低版本的编译环境使用会报错
解决办法:关闭AS,去项目根目录删除.idea文件,重启AS搞定
解决办法在app的gradle文件中添加如下代码:
android{
...
defaultConfig{
jackOptions {
enabled true
}
}
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}