当前位置: 首页 > news >正文

Android Studio开发Kotlin项目中遇到的问题解决集

背景:Android Studio 2022.3.1

1.Unexpected tokens (use ';' to separate expressions on the same line)

无法在同一行声明一个变量并实例化。

解决:分开

(1)

var aaCo:Runoob<String>
aaCo=Runoob("aa")

2点击:Join declaration and assignment(加入声明和分配)

结果:var aaCo:Runoob<String> = Runoob("aa")

这样子不会报错,若是直接这样子打是不成功的

2.SourceSet with name 'main' not found.

在kotlin项目里面单独运行java文件的main方法时出现这个报错

解决:.idea/gradle.xml下新加

<option name="delegatedBuild" value="false" />

3.如何依赖模块

Baselibrary(属于library)UserCenter(属于library)、App(属于application)

App依赖UserCenter、UserCenter依赖Baselibrary

方法一:要用api,否则BaseLibrary里面写的类UserCenter无法使用

api(project(mapOf("path" to ":BaseLibrary")))

api(project(mapOf("path" to ":UserCenter")))

方法二:操作后手动将implementation改成api

选择模块——》右键——》Open Module Setting——》Dependencies——》选择Modules——》加(+)——》3 Module Dependency

注:在Module里面新增的第三方依赖,想要被其它Module使用,使用api方式引入。比如Baselibrary里面新增retrofit依赖,但是UserCenter、App都需要使用,那么也是需要用api方式引入,如下:

api("com.squareup.retrofit2:retrofit:2.1.0")

4.dagger2无法生成XXDaggerUserComponent

前提:有很多文章都有讲到这个问题如何解决,如果按照步骤修改后还是没有解决问题,那么可以看一下我这个解决方法。

背景:看项目视频学习中,里面引入dagger的版本是2.11,已经确定所有的代码都按照视频里面码出来,但是最后一步就是怎么都不能生成DaggerUserComponent,视频里面是可以的,重复看了两三次视频,都是照着做,但是还是不行。比如Build——》Make Project。不能生成DaggerUserComponent就无法跟着视频继续学下去,只能各种找解决方式。

代码:

4.1模块下build.gradle.kts新增依赖后同步

plugins {……………………id("kotlin-kapt")//新增
}dependencies {…………………………//引入Dagger2(新增)api("com.google.dagger:dagger:2.11")kapt("com.google.dagger:dagger-compiler:2.11")
}

4.2 UserService

class UserService  {
}

4.3 UserModule

@Module
class UserModule {@Providesfun providesUserService(): UserService {return UserService();}
}

4.4 UserComponent 

@Component(modules = [UserModule::class])
interface UserComponent {fun inject(activity: MainActivity)
}

4.5 MainActivity此时是没有生成DaggerUserComponent

class MainActivity : AppCompatActivity() {@Injectlateinit var service: UserServiceoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
//        DaggerUserComponent.builder().userModule(UserModule()).build()
//            .inject(this)}
}

 解决:将依赖包版本号升级,原先了2.11的,升级到2.48.1后可以生成DaggerUserComponent了

    //引入Dagger2api("com.google.dagger:dagger:2.48.1")kapt("com.google.dagger:dagger-compiler:2.48.1")

待更新中 

http://www.lryc.cn/news/459731.html

相关文章:

  • 【LeetCode】708. 循环有序列表的插入
  • 2.1.ReactOS源码分析ReadFile函数分解
  • Gridview配置数据源--信任服务器证书
  • 【Next.js 入门教程系列】08-发送邮件
  • Echarts合集更更更之树图
  • 线性代数 行列式
  • Ubuntu 通过 Docker 搭建 GitLab
  • 原来CDC数据同步可以这么简单,零代码可视化一键数据同步
  • Ubuntu环境使用 Whisper 与 ZhipuAI 实现本地批量视频转录与文本标点复原(本地亲测可用)
  • SPI机制
  • 生信分析流程:从数据准备到结果解释的完整指南
  • golang语法
  • 【fisco学习记录2】多群组搭建
  • 深度解读:路由交换、负载均衡与防火墙的网络交响
  • linux线程 | 线程的控制(二)
  • npm install报错一堆sass gyp ERR!
  • 微知-BlueField DPU在lspci中显示Flash Recovery是什么意思?
  • 【前端知识点】前端笔记
  • Sping Cache 使用详解
  • 动手学深度学习60 机器翻译与数据集
  • Python网络爬虫技术
  • 黑马程序员-redis项目实践笔记1
  • ES-入门聚合查询
  • 七维大脑: 探索人类认知的未来之路
  • spring |Spring Security安全框架 —— 认证流程实现
  • Django+vue自动化测试平台---正式开源!!!
  • 电子电气架构 --- 智能网联汽车未来是什么样子?
  • docker安装elasticsearch(es)+kibana
  • 大厂面试真题-说说redis的雪崩、击穿和穿透
  • 【Spring】获取Cookie和Session(@CookieValue()和@SessionAttribute())