Kotlin – Error intermitente de "file de class incorrecta"
A partir de hoy, cuando bash build mi aplicación Kotlin para Android, me encuentro con el siguiente error en mi compilation de Gradle:
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.
Está apuntando a una class interna Baz que amplía android.support.v4.app.FragmentStatePagerAdapter. Puedo solucionar temporalmente el error comentando la class, y cualquier reference a ella en la class externa, y la reconstrucción. El error desaparece, pero obviamente la class ya no existe, por lo que otras cosas se rompen en el time de ejecución. Luego, si lo descomente y construya, funcionará para algunas comstackciones. Entonces el error vuelve. Enjuague y repita. Creo que cerrar el emulador Genymotion puede desencadenarlo.
- no puede generar carpetas de vista java.lang.NullPointerException
- ¿Cómo iterar sobre Single <List> y asignar a otra list?
- Cómo iniciar la propiedad de matriz de la anotación en Kotlin
- Kotlin delegar propiedad por perezoso que es hilo local
- Android Architecture Components Room ViewModel CompleteableFormAction
¿Alguien más se encuentra con esto o tiene alguna idea?
Aquí está el código ofensivo:
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 } }
EDITAR: Disculpas, Baz extiende FragmentStatePagerAdapter, no Fragment como inicialmente dije. Estoy usando Dagger2, que podría tener un gran efecto aquí.
- Los generics de kotlin tienen que escribir el parámetro de tipo
- Kotlin: ¿cómo devolver algún valor del scope?
- cuando expresión kotlin cómo comprobar cuándo a & b
- El comstackdor de Kotlin no puede deducir que la variable no puede contener nulos en el ciclo do-while
- ¿Cómo obtengo los encabezados de respuesta con RxAndroid + Retrofit en Kotlin?
- No se puede establecer el tipo de contenido en la request SOAP
- La expresión del object Kotlin no funciona como se esperaba
- no hay constructor pnetworkingeterminado para la entidad JPA con Kotlin, incluso con el complemento noarg
Tengo dos opciones para ayudarte.
1- testing la actualización de Proguard. Usa ESTO
2- Usa Java 7, cambia tu path. exportar JAVA_HOME = /usr/libexec/java_home -v 1.7
- ¿Cómo generar un file kotlin desde un procesador de anotación?
- Kotlin JavaScript al file de definición de TypeScript