由于java.lang.RuntimeException,使用相同的sharedUserId崩溃使用相同密钥库签名的Android应用程序:无法实例化活动

时间:2016-07-13 12:30:12

标签: android process android-6.0.1-marshmallow

我想让一些Android应用程序在同一个进程中运行,因此我为这些应用程序AndroidManifest提供了相同的sharedUserId:

< manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  ...  
  android:sharedUserId="aaa.bbb" >

并为每个应用程序的应用程序分配相同的过程:

< application
    ...
    android:process="com.mytest" >

它适用于android 4.4.4,所有应用程序都在同一个进程中运行。

android 6.0.1发生了崩溃。 当我运行第二个应用程序时,由于以下原因导致崩溃:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}:
  java.lang.ClassNotFoundException: Didn't find class "com.example.myapplication.MainActivity" on path:
  DexPathList[[zip file "/data/app/com.example.myapplication-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-1/lib/arm, /vendor/lib, /system/lib]]

系统终止进程后,如果我运行第一个应用程序,第二个应用程序可以运行并崩溃。

似乎应用程序无法在同一时间内在同一进程中运行,我不知道为什么。

2 个答案:

答案 0 :(得分:0)

每个APK都有自己的ClassLoaderarticle正在谈论这个问题。

通常情况下,您无法访问其他APK类。 似乎Kitkat和Marshmallow之间存在安全漏洞。

为什么需要这个系统? 如果要在应用程序之间共享数据,您可以使用ContentProvider 如果要启动ActivityService,您可以将Intent与行动结合使用。

答案 1 :(得分:0)

我修好了! 禁用Android studio中的选项ant它有效! enter image description here