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

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]")
    }

 

你可能感兴趣的:(android)