2017-01-04 10 views
2

私はJavaで書かれた大きなAndroidプロジェクトを持っていますが、現在はKotlinに変換しています。私の活動や断片の多くはデータバインディングを使用しています。JavaからKotlinへのデータバインディングによるAndroidプロジェクトの変換

最初は、データバインディングを使用して最初のアクティビティをKotlinに変換したとき、このアクティビティ用にプロジェクトを構築できませんでした。エラーは、データバインディングライブラリへの参照が不足していると言いました。私が追加:

kapt 'com.android.databinding:compiler:2.0.0-beta6' 

同じファイルに

kapt { 
    generateStubs = true 
} 

app/build.gradleで依存関係にしても。

ビルド後、データバインディングによるKotlinアクティビティは機能しましたが、残りのJavaデータバインディングアクティビティはすべて、データバインディングパッケージ参照が存在しないことを通知します。

これは私を厳しい場所に残します。私は、アクティビティやフラグメントを一つずつKotlinに変換してビルドすることを計画していましたが、JavaまたはKotlinのいずれかを選択する必要があるため、現時点では実現できません。

Kotlinのビューインジェクションライブラリであるhttps://github.com/JakeWharton/kotterknifeが見つかりましたが、データバインディングを使用していても、あなたのアクティビティをJavaからKotlinにゆっくりと変換する方法がないとはまだ信じられません。それは単に私にとって信用できないようです。

誰も過去にこのような方法でプロジェクトを変換して、どちらかを選択する必要なく成功しましたか?あなたは一緒に単一の活動を変換する方法はありますか?もう1つの選択肢は、すべてのJavaを一度にKotlinに変換し、すべての作業が完了した後に単一のビルドを作成することですが、すべての作業を行い、何か見落としてしまえば少し危険です。何か案は?前もって感謝します。

答えて

2

Data Binding + Kotlinの組み合わせに注意してください!データバインディングライブラリは内部的にKotlinを使用しており、いくつかの競合がこの点で発生します。今のところJavaでデータバインディングを使用するアクティビティ/フラグメントクラスを保持し、ビジネスロジックをKotlinに変換することをお勧めします。私はかなり大きなプロジェクトで多くの問題を抱えていました。プロジェクトの依存度が高いほど、リスクは大きくなります。クラスを徐々に変換して、決して一度に変換しないでください!一度に複数のファイルを変換する場合は、必要に応じて回復できるように、ローカルまたはリモートの履歴が損なわれていないことを確認してください。数週間前、私はプロジェクトを構築することが不可能であったほど深刻なバグに遭遇しました。本当に奇妙なことがいくつか期待できます。また、アルファライブラリとベータライブラリに注意して、ライブラリの依存関係を1つずつ更新して、できるだけ早期に互換性を失わないようにしてください。それが少し助けてくれることを願っています。

EDIT:2017年5月20日現在、私は上記の問題のほとんどが既に解決されていると考えています。また、Kotlinは公式言語となっているため、完全な互換性が保証され、Googleによって継続的にテストされるべきです。

関連する問題