Android Studio开发Kotlin项目中遇到的问题解决集
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 {
@Provides
fun providesUserService(): UserService {
return UserService();
}
}
4.4 UserComponent
@Component(modules = [UserModule::class])
interface UserComponent {
fun inject(activity: MainActivity)
}
4.5 MainActivity此时是没有生成DaggerUserComponent
class MainActivity : AppCompatActivity() {
@Inject
lateinit var service: UserService
override 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了
//引入Dagger2
api("com.google.dagger:dagger:2.48.1")
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.
更换前主题:
<style name="Theme.***" parent="android:Theme.Material.Light.NoActionBar" />
更换后:黑色
<style name="Theme.***" parent="Theme.AppCompat.Light.DarkActionBar">
或蓝色
<style name="Theme.***" parent="Theme.MaterialComponents.DayNight.NoActionBar">
6.如何获取应用签名信息
前提是在cmd里面可以支持java、keytool命令。若出现过之前是可以的,现在突然不行,就重新配置环境变量。
原先:
JAVA_HOME配置:D:\configure\AndroidStudio\JDK\jdk-18
Path配置:%JAVA_HOME$\bin
现在:
JAVA_HOME配置:D:\configure\AndroidStudio\JDK\jdk-18
Path配置:D:\configure\AndroidStudio\JDK\jdk-18\bin
获取应用签名命令:keytool -v -list -keystore 签名文件路径(直接拖拽文件进来就有路径了)

待更新中
更多推荐


所有评论(0)