nameTextView?.setEnabled(true)
仅当nameTextView不为null时,这行代码才会继续执行。另一种情况下,如果我们使用!!操作符:
nameTextView!!.setEnabled(true)
如果nameTextView为null,它将为我们提供NPE。它只适合喜欢冒险的家伙)
这是对Kotlin的一些介绍。我们继续进行,我将停止描述其他Kotlin特定代码。
2、构建变体
通常,在开发中,如果你有两套环境,最常见的是测试环境和生产环境。这些环境在服务器URL,图标,名称,目标api等方面可能有所不同。通常,在开始的每个项目中我都有以下内容:
finalProduction: 上传Google Play 使用demoProduction:该版本使用生产环境服务器Url,并且它有着GP上的版本没有的新功能,用户可以在Google play 旁边安装,然后可以进行新功能测试和提供反馈。demoTesting:和demoProduction一样,只不过它用的是测试地址mock: 对于我来说,作为开发人员和设计师而言都是很有用的。有时我们已经准备好设计,而我们的API仍未准备好。等待API准备就绪后再开始开发可不是好的解决方案。此构建变体为提供有mock数据,因此设计团队可以对其进行测试并提供反馈。对于保证项目进度真的很有帮助,一旦API准备就绪,我们便将开发转移到demoTesting环境。
在此应用程序中,我们将拥有所有这些变体。它们的applicationId和名称不同。 gradle 3.0.0 flavourDimension中有一个新的api,可让您混合不同的产品风味,因此您可以混合demo和minApi23风味。在我们的应用程序中,我们将仅使用“默认” 的flavorDimension。早app的build.gradle中,将此代码插入android {}下:
flavorDimensions “default”
productFlavors {
finalProduction {
dimension “default”
applicationId “me.mladenrakonjac.modernandroidapp”
resValue “string”, “app_name”, “Modern App”
}
demoProduction {
dimension “default”
applicationId “me.mladenrakonjac.modernandroidapp.demoproduction”
resValue “string”, “app_name”, “Modern App Demo P”
}
demoTesting {
dimension “default”
applicationId “me.mladenrakonjac.modernandroidapp.demotesting”
resValue “string”, “app_name”, “Modern App Demo T”
}
mock {
dimension “default”
applicationId “me.mladenrakonjac.modernandroidapp.mock”
resValue “string”, “app_name”, “Modern App Mock”
}
}
打开string.xml文件,删掉app_namestring资源,因此,我们才不会发生资源冲突,然后点击Sync Now,如果转到屏幕左侧的“构建变体”,则可以看到4个不同的构建变体,其中每个都有两

本文介绍了如何使用Kotlin从零开始构建一个Android项目,包括设置构建变体以适应不同环境,如测试和生产。讲解了ConstraintLayout的使用,它能帮助简化布局设计。此外,文章探讨了Data Binding库的优势,对比Butterknife,展示如何通过Data Binding简化视图绑定。还介绍了Kotlin的getters和setters以及apply函数的用法。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



