1

我想让一些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]]

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

似乎应用程序不能同时在同一个进程中运行,我不知道为什么。

4

2 回答 2

0

我修好了它 !禁用 Android studio ant 中的选项它可以工作! 在此处输入图像描述

于 2016-07-15T02:22:29.933 回答
0

每个 APK 都有自己的ClassLoader. 一篇文章谈论这个。

因此,您无法访问另一个 APK 的类是正常的。似乎在 Kitkat 和 Marshmallow 之间修复了一个安全漏洞。

为什么需要这个系统?如果是在应用程序之间共享数据,您可以使用ContentProvider If it's to launchActivityService,您可以使用 Intent with action。

于 2016-07-13T13:31:20.693 回答