AndroidStudio学习笔记/踩坑
webview组件和其他组件起冲突
问题
webview和NestedScrollView组件一起使用时,会出现webview无法滑动的问题
解决方法
NestedScrollView nestedScrollView = getView().findViewById(R.id.mine_scrowview);
studentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP)
nestedScrollView.requestDisallowInterceptTouchEvent(false);
else
nestedScrollView.requestDisallowInterceptTouchEvent(true);
return false;
}
});
重写内嵌在NestedScrollView里的webview的setontouchlistener方法
该方法适用于普通的scrollview
原因
scrollview的焦点判断高于内嵌在里面的webview导致的
新版本的Androidstudio打包aar时出现异常
具体的异常信息
Direct local .aar file dependencies are not supported when building an AAR
原因
gradle在7以上时分module调用aar时是正常的, 但是如果要把module单独打包成aar供其他项目调用的话需要另行设置
解决办法
https://www.jianshu.com/p/a6a221e04d30
- 在根目录中创建Directory(文件名自定义,这里定义为LocalRepo)在里面创建Directory(文件名自定义,这里定义为staticip)
- 把你需要调用的aar包剪切进去
- 复制其他module里的build.gradle
- 把复制过来的build.gradle里的内容删掉
- 在buil.gradle里添加
configurations.maybeCreate("default") artifacts.add("default", file('需要调用的aar包包名.aar'))
- 在根目录下的setting.build里添加
include ':LocalRepo:staticip'
注意这里的LocalRepo和staticp需要改成你在第一步设置的文件名 - 然后在你需要调用这个aar包的module的build.gradle里添加
implementation project(':LocalRepo:staticip')
注意这里的LocalRepo和staticp需要改成你在第一步设置的文件名
就可以正常调用和打包了
编译问题
没有动什么却提示编译失败
异常:如下,这个异常导致了compileDebugJavaWithJavac failed
The following annotation processors are not incremental: jetified-arouter-compiler-1.2.1.jar (com.alibaba:arouter-compiler:1.2.1), jetified-auto-service-1.0-rc2.jar (com.google.auto.service:auto-service:1.0-rc2).
Make sure all annotation processors are incremental to improve your build speed.
解决办法
./gradlew --stop
然后clean projects
重新run就行了
个人想法
上面的这个异常我在平时编译的事常备也会遇到,但不会导致compileDebugJavaWithJavac filed
于是我回想了一下在项目里的操作,唯一的可能就是修改了代码之后run,但是我强行终止了,然后重新run就出现了这个问题,代码是肯定没影响的,因为都是逻辑代码,所以大概领是我强行终止了gradle build,导致了某些缓存之类的出现了异常,进而导致了编译失败
类之间传递对象的那些事
问题
在使用
getIntent().getSerializableExtra("key",自定义类.class)
进行对象型数据传递时,Androidstudio提示需要Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
也既是sdk版本大于等于33才支持这个写法
那么低于这个版本的都怎么办呢
解决办法
强转
(自定义的类)getIntent().getSerializableExtra("key");