使用Instant Run运行项目后出现此异常:
java.lang.IllegalAccessError:非法类访问:'com.alla.kotlinexample.MainActivity $ override'试图访问'kotlin.jvm.internal.DefaultConstructorMarker'('com.alla.kotlinexample.MainActivity $ override'的声明出现在/ com.alla.kotlinexample
上的 com.alla.kotlinexample.MainActivity $ override.onCreate(MainActivity.kt:21)
中的 data/data/com.alla.kotlinexample/files/instant-run/dex-temp/reload0x0000.dex). MainActivity $ override.access $讯(MainActivity.kt)
这是代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
val persons: List<Person> = listOf<Person>(Person("Person1"), Person("Person2", 27))
fab.setOnClickListener { view ->
Snackbar.make(view, persons[1].name, Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
tv_person_name.text = persons.maxBy { it.age ?: 34 }.toString()
}
data class Person(val name: String, val age: Int? = null)
}
Run Code Online (Sandbox Code Playgroud)
并且错误指向这一行 val persons: List<Person> = listOf<Person>(Person("Person1"), Person("Person2", 27))
Android Studio版本为3.0.1 Gradle: …
我有一个带有数据绑定的多模块项目(我使用Android App Bundle),ViewModels。但是,当我启用Proguard该应用程序时,发生以下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{...MyActivity}: java.lang.IllegalStateException: DataBindingUtil.setConte… R.layout.my_activity) must not be null
Caused by: java.lang.IllegalStateException: DataBindingUtil.setConte… R.layout.my_activity) must not be null
at MyActivity.onCreate(MyActivity.kt:38)
当我删除模块并创建一个app模块时,一切正常。当我禁用时Proguard,它也可以正常工作。这是我的一部分proguard-rules.pro:
-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
-keep class com.example.module1.databinding.** { *; }
-keep class com.example.module2.databinding.** { *; }
Run Code Online (Sandbox Code Playgroud)
在build.gradle:
minifyEnabled true
useProguard true
Run Code Online (Sandbox Code Playgroud)
因此错误指向以下代码行:
val binding: com.example.module1.databinding.MyActivityBinding =
DataBindingUtil.setContentView(this, R.layout.my_activity)
Run Code Online (Sandbox Code Playgroud)
也许有什么想法如何解决?
我尝试配置Chromecast,但得到了RuntimeException并且没有理解原因.这是来自Fabric的日志:
致命异常:java.lang.RuntimeException:无法启动活动ComponentInfo {....activity.TVActivityPhone}:java.lang.RuntimeException:com.google.android.gms.dynamite.DynamiteModule $ zza:远程加载失败.没有发现本地回退.在Android.app.A活动中的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)android.app.A活动.活动(活动传递.) .ActivityThread $ H.handleMessage(ActivityThread.java:1584)在android.app.Loper.loop(Looper.java:194)的android.app.Handler.dispatchMessage(Handler.java:111)android.app.ActivityThread. main(ActivityThread.java:5877)位于java.lang.reflect.Method.invoke(Method.java)的java.lang.reflect.Method.invoke(Method.java:372),位于com.android.internal.os.ZygoteInit com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)中的$ MethodAndArgsCaller.run(ZygoteInit.java:1020)由java.lang.RuntimeException引起:com.google.android.gms.dynamite.DynamiteModule $ zza:远程加载失败.没有发现本地回退.
这是我的代码:
protected void configureCast() {
mCastContext = CastContext.getSharedInstance(this); // here I've got RuntimeException
if(mCastContext != null) mCastSession = mCastContext.getSessionManager().getCurrentCastSession();
mSessionManagerListener = new CastSessionManagerListener(this);
mSessionManagerListener.setCastConnectionListener(mCastConnectionListener);
}
Run Code Online (Sandbox Code Playgroud)
这是build.gradle:
compile 'com.google.android.gms:play-services-gcm:10.2.0'
compile 'com.google.android.gms:play-services-analytics:10.2.0'
compile 'com.google.android.gms:play-services-location:10.2.0'
compile 'com.google.android.gms:play-services-cast-framework:10.2.0'
Run Code Online (Sandbox Code Playgroud)
有帮助吗?