A partire da oggi, quando si tenta di costruire il mio Kotlin Android, io sono incontrato con il seguente errore nel mio Gradle costruire:Kotlin - intermittente di errore "file di classe cattivo"
Error:cannot access Baz
bad class file: /Users/me/projects/site/android/app/build/tmp/kapt/debug/classFileStubs/com/company/foo/Bar$Baz.class
bad RuntimeInvisibleParameterAnnotations attribute: Baz(FragmentManager)
Please remove or make sure it appears in the correct subdirectory of the classpath.
Si sta puntando ad un interno classe Baz che estende android.support.v4.app.FragmentStatePagerAdapter. Sono in grado di aggirare temporaneamente l'errore commentando la classe e qualsiasi riferimento ad essa nella classe esterna e la ricostruzione. L'errore scompare, ma ovviamente la classe non esiste più, quindi altre cose si interrompono in fase di esecuzione. Quindi, se lo decommento e lo compilo, funzionerà per alcune build. Quindi l'errore ritorna. Risciacqua e ripeti. Penso che la chiusura dell'emulatore Genymotion possa farla scattare.
Qualcun altro si imbatte in questo o ha qualche idea?
ecco il codice incriminato:
class Bar : Fragment() {
@Inject
lateinit var api:ApiRequester
var data : ArrayList<Data> = ArrayList()
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
//[...] view creation code
//[...] data population code
viewPager.adapter = Baz(childFragmentManager)
//[...] more view creation code
}
inner class Baz(fm:FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getCount(): Int {
return data.count()
}
override fun getItem(position: Int): Fragment? {
var jf = FooFragment()
var bundle = Bundle()
bundle.putParcelable("data", data[position])
jf.arguments = bundle
return jf
}
}
EDIT: Scusate, Baz si estende FragmentStatePagerAdapter, non Frammento come ho inizialmente dichiarato. Sto usando Dagger2, che potrebbe avere un effetto qui.
Potresti pubblicare un campione che causa problemi? Ho il sospetto che potrebbe essere correlato all'elaborazione delle annotazioni, quindi qualsiasi informazione aggiuntiva sulle librerie utilizzate (ad esempio ButterKnife o Dagger) potrebbe tornare utile – miensol
Quale versione di Kotlin stai usando? – yole
Secondo Android Studio, sto usando Versione: 1.0.0-beta-4584-IJ141-13 –