我使用 Jetbrains插件在 Kotlin 中生成 Android Parcelable 类,并得到了这两个异常(不是警告,不像这里,所以项目没有构建):
CREATOR_DEFINITION_IS_NOT_ALLOWED:不允许定义“CREATOR”。改用“Parceler”伴随对象。
OVERRIDING_WRITE_TO_PARCEL_IS_NOT_ALLOWED:不允许覆盖“writeToParcel”。改用“Parceler”伴随对象。
我查看了类似的问题,但没有找到适合我的案例的任何解决方案。
我的 Kotlin 版本:1.1.51(根据 Gradle),但是这个功能是在 1.1.4 中添加的:https ://blog.jetbrains.com/kotlin/2017/08/kotlin-1-1-4-is-out /
自动生成的代码:
@Parcelize
data class User(
val id: Int,
val cardId: String,
val coefficent: Float = 1.0F,
val name: String,
val surname: String = ""
) : Parcelable {
constructor(source: Parcel) : this(
source.readInt(),
source.readString(),
source.readFloat(),
source.readString(),
source.readString()
)
companion object {
@JvmField
val CREATOR: Parcelable.Creator<User> = object : Parcelable.Creator<User> {
override fun createFromParcel(source: Parcel): User = User(source) …Run Code Online (Sandbox Code Playgroud) 我修改了 django-cookiecutter 默认生产模板,使caddy Web 服务器提供静态文件。我使用的卷映射./static在目录中的Django和球童通过主机containters./static目录,但我收到一个权限错误,当搬运工执行python manage.py collectstatic --noinput试图创建的子文件夹./static。
但是,如果我不在djangodjango 容器的 Dockerfile 中切换到用户,因此collectstatic以 root身份执行,则一切正常。我猜django容器中的用户不允许写入主机目录,即使chown -R django /app/static已成功执行。
回溯(最近一次调用):
文件“/app/manage.py”,第 30 行,在 <\module>
execute_from_command_line(sys.argv)
...
文件“/usr/local/lib/python3.6/site- package/collectfast/management/commands/collectstatic.py”,第 111 行,在
copy_file self.do_copy_file(args)
文件“/usr/local/lib/python3.6/site-packages/collectfast/management/commands/collectstatic.py “,第 100 行,在 do_copy_file
路径,prefixed_path ,source_storage)
文件“/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py”,第 354 行,在 copy_file
self.storage.save(prefixed_path, source_file)
文件“/usr/local/lib/python3.6/site-packages/django/core/files/storage.py”,第 49 行,保存
返回 self._save(name, content)
文件“/usr/local/lib/python3.6/site-packages/django/core/files/storage.py”,第 236 行,在 _save
os.makedirs(directory)
文件“/usr/local/lib/python3. 6/os.py", line 220, in makedirs …
我正在使用Retrofit,Dagger并Glide为我的应用程序.迁移后androidX,kapt与Dagger和Glide注释处理器完美配合.项目构建和同步成功,但是,当我运行应用程序时,我在我的ApiService接口中获得Kotlin编译器异常,我在其中使用Retrofit注释
ApiService.kt
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query
interface ApiService {
@GET("/popular")
fun getPopular(@Query("lang") lang: String = LANGUAGE): Call<...>
...
companion object {
val STATUS_OK = "ok"
var LANGUAGE = "en"
fun create(): ApiService {
val retrofit = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(...)
.build()
return retrofit.create(ApiService::class.java);
}
}
Run Code Online (Sandbox Code Playgroud)
的build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion …Run Code Online (Sandbox Code Playgroud)