2016-07-13 6 views
1

Я хочу, чтобы некоторые приложения для Android работали в одном и том же процессе, поэтому я даю этим приложениям AndroidManifest тот же файл sharedUserId:Android-приложение, подписанное с тем же хранилищем ключей, с использованием таких же сбоев sharedUserId из-за java.lang.RuntimeException: не удалось создать активность

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

и назначить приложение каждый Apps тот же процесс:

< 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]] 

после системы убить процесс, то второе приложение может работать и сбои, если я бег первого приложения.

Кажется, что приложения не могут работать в одном процессе в одно и то же время, и я не знаю, почему.

ответ

0

У каждого APK есть свои ClassLoader. article говорить об этом.

Таким образом, вы не можете получить доступ к классу другого APK. Кажется, что ошибка безопасности была связана между Киткатом и Зефиром.

Зачем нужна эта система? Если вы хотите поделиться данными между приложением, вы можете использовать ContentProvider Если вы хотите запустить Activity или Service, вы можете использовать Intent с действиями.

+0

Спасибо! Я прочитал статью. У каждого приложения есть WebView, я хочу поделиться файлами cookie с помощью CookieManager, потому что это singleton. Может быть, есть еще один способ его решения, но я просто хочу знать, как я могу поделиться процессом в Зефире. –

0

Я исправил его! отключить опции в студии Android, и это работает! enter image description here