Android Studio开辟Kotlin项目中遇到的题目办理集

[复制链接]
发表于 2026-1-11 08:26:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
配景: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新增依赖后同步
  1. plugins {
  2.      ……………………
  3.     id("kotlin-kapt")//新增
  4. }
  5. dependencies {
  6.     …………………………
  7.     //引入Dagger2(新增)
  8.     api("com.google.dagger:dagger:2.11")
  9.     kapt("com.google.dagger:dagger-compiler:2.11")
  10. }
复制代码
4.2 UserService
  1. class UserService  {
  2. }
复制代码
4.3 UserModule
  1. @Module
  2. class UserModule {
  3.     @Provides
  4.     fun providesUserService(): UserService {
  5.         return UserService();
  6.     }
  7. }
复制代码
4.4 UserComponent 
  1. @Component(modules = [UserModule::class])
  2. interface UserComponent {
  3.     fun inject(activity: MainActivity)
  4. }
复制代码
4.5 MainActivity此时是没有天生DaggerUserComponent
  1. class MainActivity : AppCompatActivity() {
  2.     @Inject
  3.     lateinit var service: UserService
  4.     override fun onCreate(savedInstanceState: Bundle?) {
  5.         super.onCreate(savedInstanceState)
  6.         setContentView(R.layout.activity_main)
  7. //        DaggerUserComponent.builder().userModule(UserModule()).build()
  8. //            .inject(this)
  9.     }
  10. }
复制代码
 办理:将依赖包版本号升级,原先了2.11的,升级到2.48.1后可以天生DaggerUserComponent了
  1.     //引入Dagger2
  2.     api("com.google.dagger:dagger:2.48.1")
  3.     kapt("com.google.dagger:dagger-compiler:2.48.1")
复制代码

5.java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*Activity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
  1. 更换前主题:
  2. <style name="Theme.***" parent="android:Theme.Material.Light.NoActionBar" />
  3. 更换后:黑色
  4. <style name="Theme.***" parent="Theme.AppCompat.Light.DarkActionBar">
  5. 或蓝色
  6. <style name="Theme.***" parent="Theme.MaterialComponents.DayNight.NoActionBar">
复制代码
6.怎样获取应用署名信息

条件是在cmd内里可以支持java、keytool下令。若出现过之前是可以的,如今突然不可,就重新设置环境变量。
  1. 原先:
  2. JAVA_HOME配置:D:\configure\AndroidStudio\JDK\jdk-18
  3. Path配置:%JAVA_HOME$\bin
  4. 现在:
  5. JAVA_HOME配置:D:\configure\AndroidStudio\JDK\jdk-18
  6. Path配置:D:\configure\AndroidStudio\JDK\jdk-18\bin
复制代码
获取应用署名下令:keytool -v -list -keystore 署名文件路径(直接拖拽文件进来就有路径了)

 
待更新中 

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表