从1个apk文件启动两个android应用程序

Noa*_*der 3 android

我需要创建一个启动新应用程序的Android应用程序.新的应用程序需要在orig应用程序的不同进程上运行,需要有一个不同的包名,它需要是图形的(所以我认为排除服务,除非我弄错了,服务可以是图形化的)它需要安装与第一个相同的apk文件.它不会进入Android市场,所以我不关心市场问题.

我今天看到了一个完全符合我需要的应用程序,它在它的包名下运行了一个进程,并在"{orig.app.packgename}:remote"下打开了一个新进程.

任何人都可以告诉我这样的事情怎么办?

Gil*_*mov 24

如上所述,单个APK只能容纳一个应用.

您可以随时建议您的用户安装另一个应用程序,但我知道这不是您想要的.

所以,这是一个小技巧,可以在一个APK中包含大部分你的目标(接受不同的包名,无法做到这一点):

第一步:为您的独立活动添加一个android:process标签:

<activity android:name=".StandAloneActivity" 
     android:process=":MyNewProcess">
Run Code Online (Sandbox Code Playgroud)

这将告知Android此活动应在 名为"MyNewProcess" 的单独进程上执行.您可以添加标记为":MyNewProcess"的其他组件(Activities,Services ..).它们都将在同一个进程中执行.


然后:为您的独立活动和应用的主要活动创建一个"action.MAIN"意图过滤器:

<activity  android:name=".MainActivity" >
    <intent-filter>
         <action android:name="android.intent.action.MAIN"/>
         <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>


<activity
    android:name=".StandAloneActivity"
    android:process=":MyNewProcess" >
    <intent-filter>
         <action android:name="android.intent.action.MAIN"/>
         <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

这将告知Android 需要为您的应用创建两个不同的主屏幕图标,每个MAIN活动一个(现在在不同的进程上运行).

不用说,标准方法调用不会从一个进程传递到另一个进程.您将需要使用Intents,AIDL接口或您的小心脏所需的任何其他IPC机制