android studio3.1.3和kotlin1.2.51踩坑(一)

本文总结了在使用Android Studio 3.1.3及Kotlin 1.2.51时遇到的问题及其解决方法,包括flavorDimensions配置、sourceSets的debug报错、dependencies的compile改用implementation或api、Kotlin对R的直接引用、Design库的导入以及Activity界面加载时的坑,详细介绍了每个问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.All flavors must now belong to a named flavor dimension. 

添加了buildTypes和productFlavors之后出现的

buildTypes {

        debug{
            applicationIdSuffix ".dex"
        }
        staging{
            debuggable true
            applicationIdSuffix ".sta"
        }
        preproduction{
            applicationIdSuffix ".pre"
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors{
        demo{
            applicationIdSuffix ".demo"
            versionNameSuffix "-demo"
        }
        complete{
            applicationIdSuffix ".complete"
            versionNameSuffix "-complete"
        }
        special{
            applicationIdSuffix ".special"
            versionNameSuffix "-special"
        }
    }

解决方案:defaultConfig中添加flavorDimensions "versionCode",版本控制的意思应该

2.gradle的sourceSets

sourceSets{
        main{
            java.srcDirs=[
                    'src/main/kotlin',
                    'src/common/kotlin',
                    'src/debug/kotlin',
                    'src/release/kotlin',
                    'src/staging/kotlin',
                    'src/preproduction/kotlin',
                    'src/debug/java',
                    'src/release/java',
                    'src/staging/java',
                    'src/preproduction/java',
                    'src/androidTest/java',
                    'src/androidTest/kotlin'
            ]
        }
    }

debug报错类似以下

com/weizhixiang/testkotlin/ExampleInstrumentedTest.kt 
Unresolved reference: test 
Unresolved reference: test 
Unresolved reference: junit 
Unresolved reference: junit 

解决方案:注释掉最后两行,main编译运行,不是做单元测试,androidstudio建项目时生成了示例代码。

3.dependencie的compile已经改为implementation或者api,两者区别网上有

4.新版kotlin和as已经不需要导入com.app.R这个了,可以直接用R.

5.使用Android Support Design 控件 FloatingActionButton要先导入com.android.support:design:26.1.0,在app的build.gradle中加入以下代码

dependencies {
    implementation 'com.android.support:design:26.1.0'
}

6.加载Activity界面的时候,打出onCreate随手回车,setContentView之后却始终无法显示界面,查看log,跳过了onCreate

   override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
    }

第二个persistentState是api21新加的参数,只要将其设置成persistAcrossReboots,activity就有了持久化的能力,另外需要配合一个新的bundle才行,那就是PersistableBundle。 

解决方案:暂且不用,删除第二参数

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(main_activity)
        Log.v(tag,"[On Create]")
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值