私はそこにライブデータ変数を持つビューモデルを持っています。Kotlin、proguard、Androidアーキテクチャコンポーネント
私の活動は、UIを更新するためにそれを観察します。
デバッグでは、すべてうまく動作しています。私がproguardを有効にすると、それはもはやlivedataの変更を観察しません。
ライブデータが正しく更新されていることを確認しました。ただし、オブザーバのコールバックは決して呼び出されません。
Proguardの設定方法と何が問題なのでしょうか?
私は成功せず、私のパッケージのクラスを維持しようとした。ここで
-keep class com.example.myapp.** { *; }
はViewModelにある:
class SplashViewModelImpl : JapetViewModel(), SplashViewModel {
private val isTimeUp = MutableLiveData<Boolean>()
init {
isTimeUp.value = false
Observable.timer(2000L, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { isTimeUp.postValue(true) }
}
override fun isTimeUp(): LiveData<Boolean> = isTimeUp
}
と活動:編集
class SplashActivity : MyBaseActivity() {
lateinit var viewModel: SplashViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
viewModel = kodein.with(this).instance()
// Working in debug
// viewModel.isTimeUp().observe(this, Observer(this::transitionIfTimeUp))
// Working in debug too, tried this way of writing it too
viewModel.isTimeUp().observe(this, Observer<Boolean> { t -> transitionIfTimeUp(t) })
// Also tried doing it with an object : Observer... without success either
}
private fun transitionIfTimeUp(isTimeUp: Boolean?) {
if (isTimeUp == null || !isTimeUp) return
startActivity<LoginActivity>()
finish()
}
}
:依存関係
testCompile "android.arch.persistence.room:testing:1.0.0-alpha3"
androidTestCompile "android.arch.persistence.room:testing:1.0.0-alpha3"
compile "android.arch.lifecycle:extensions:1.0.0-alpha3"
compile "android.arch.lifecycle:reactivestreams:1.0.0-alpha3"
kapt "android.arch.lifecycle:compiler:1.0.0-alpha3"
compile "android.arch.persistence.room:runtime:1.0.0-alpha3"
compile "android.arch.persistence.room:rxjava2:1.0.0-alpha3"
kapt "android.arch.persistence.room:compiler:1.0.0-alpha3"
どのような依存関係のバージョンを使用していますか? – ianhanniballake
@ianhanniballake編集された回答を参照してください。 kaptではなくannotationProcessorになる可能性がありますか? (ちょうどそれに気づいた) –
ちょうど代わりにkaptを試して、どちらも動作しません –