Error:(117, 0) No such property: sdkHandler for class: com.android.build.gradle.AppPlugin的解决办法
问题
由于AndroidStudio不断地更新,导致很久以便能编译的NDK无法再编译通过,通过吧版本改成老版本有又太费劲,索性就直接还是找到报错的地方修改,以上报错修改如下:
把:
* def ndkDir = project.plugins.findPlugin(‘com.android.application’).sdkHandler.getNdkFolder()
修改成
def ndkDir = project.android.ndkDirectory
如果不这样修改也可以使用
方法二:
把:gradle的版本修改成 2.14.3
Android Plugin Version 改成2.2.3
Android Studio升级到3.2.1后,运行项目报如下错:
Could not find com.android.tools.build:aapt2:3.2.1-4818971.
Searched in the following locations:
file:/D:/AndroidStudio/sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
file:/D:/AndroidStudio/sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
file:/D:/AndroidStudio/sdk/extras/google/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
file:/D:/AndroidStudio/sdk/extras/google/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
file:/D:/AndroidStudio/sdk/extras/android/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
file:/D:/AndroidStudio/sdk/extras/android/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar Required by:
project :app
解决方法很简单:
在项目的build.gradle文件中,新增一行google()即可解决
allprojects {
repositories {
jcenter()
google()//新增这一行
}
}
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
在Android studio 3.1.2上编译报错AAPT2 error:check logs for details。
原因很明确,是添加了点九图导致。
在网上搜了很多方法:
1.在gradle.properties文件里添加一行android.enableAapt2= false;
2.在app的build.gradle中添加以下配置:
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
1
2
3.AndroidStudio->Preferences->InstantRun 把钩全部去掉;
4.clean project, Rebuild project;
以上全都不起作用。
最后是通过 File–>invalidate caches/restart–>Invalidate and Restart,重启了studio得以解决。
记录下来做个备忘。
Android Studio NDK及so文件开发
1、 NDK安装及配置
1.1、NDK安装
Android Studio 从1.3 Beta1开始,支持了NDK。之前则不支持,所以我们建议使用新版的编辑器。
安装NDK
打开Setting => Appearance & Behavior => System Settings => Android SDK
然后在右侧页面中点击SDK Tools可以看到你是否安装了Android NDK(如红色框选的部分),如果未安装那么勾选后apply进行安装,如果已安装那么接下来配置环境变量;
1.2、配置环境变量
安装好的NDk一般位于你的sdk文件夹下的ndk-bundle。
比如我这里是:D:\SDK\ndk-bundle(如下图),可以看到里面有ndk-build文件,下文进行编译的时候我们会用到。
然后将该路径配置到你系统变量的path里面去,如下:
(我这里使用的是Win10系统,其他系统界面不一,根据你的情况自己添加,不会请百度)
添加完毕后打开cmd,输入ndk-build,出现如下内容则表示成功(网上说是成功的,虽然显示的貌似是一些错误信息,但是后文运行的时候是没问题的可以编译成功)。
背景
在使用AS工具自带命令面板Terminal的时候,相信你有碰到过:xx不是内部或者外部命令,也不是可运行程序。解决办法就是配置环境变量
一、在 Terminal 中使用 adb,报 ‘adb’ 不是内部或者外部命令,也不是可运行的程序。
解决方案:配置环境变量
1、在系统变量中新建一个变量名字为ANDROID_HOME, 变量值是你的 sdk 目录,比如:D:\Local\Android
2、将android sdk 中 adb.exe 目录配置在 path 变量中, 在系统变量的 path 中后面添加
;D:\Local\Android\Sdk\platform-tools (注意用分号隔开)
3、重启AS,打开 Terminal 窗口,输入 adb ,效果如下图,即可用。
二、在 Terminal 中使用 gradle,报 ‘gradle’ 不是内部或者外部命令,也不是可运行的程序。
解决方案:配置环境变量
1、在系统变量栏新建 GRADLE_HOME 变量,变量值是你本地 gradle 工具的地址,一般是安装 AS 目录下就有,比如:D:\Android Studio\gradle\gradle-3.2
2、在系统变量下的 path 后面添加 gradle 中 bin 的目录 ,比如 ;D:\Android Studio\gradle\gradle-3.2\bin (注意是 bin 的目录,还有记得加分号)
3、重启 AS, 在 Terminal 中输入’gradle’,显示如下图,即可用。
C:/Users/zengjf/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/build-binary.mk:701: *** Android NDK: Aborting (set APP_ALLOW_MISSING_DEPS=true to allow missing dependencies) . Stop.
D:\zengjf\SourceCode\Android\android_app\Test>
2. 解决方法
1. C:\Users\zengjf\AppData\Local\Android\Sdk\ndk-bundle\build\core\build-binary.mk
2. 修改内容:
...
ifdef undefined_libs
$(call __ndk_warning,Module $(LOCAL_MODULE) depends on undefined modules: $(undefined_libs))
# https://github.com/android-ndk/ndk/issues/208
# ndk-build didn‘t used to fail the build for a missing dependency. This
# seems to have always been the behavior, so there‘s a good chance that
# there are builds out there that depend on this behavior (as of right now,
# anything using libc++ on ARM has this problem because of libunwind).
#
# By default we will abort in this situation because this is so completely
# broken. A user may define APP_ALLOW_MISSING_DEPS to "true" in their
# Application.mk or on the command line to revert to the old, broken
# behavior.
APP_ALLOW_MISSING_DEPS=true // add this line
ifneq ($(APP_ALLOW_MISSING_DEPS),true)
$(call __ndk_error,Aborting (set APP_ALLOW_MISSING_DEPS=true to allow missing dependencies))
endif
endif