一个安装两个应用程序的 .apk 文件

Posted

技术标签:

【中文标题】一个安装两个应用程序的 .apk 文件【英文标题】:One .apk file that installs two apps 【发布时间】:2012-05-27 19:05:45 【问题描述】:

这是一个关于具有两个不同 .apk(或两个应用程序包含在一个 .apk 文件中)的 android 应用程序的问题

我有两个应用程序,它们做完全不同但相关的事情,比如说一个是标准用户应用程序,一个是管理应用程序。但是用户既可以是用户也可以是管理员。我想知道我是否可以创建一个 .apk 文件来将两个应用程序安装到手机上?我该怎么办?

谢谢, 马特

【问题讨论】:

【参考方案1】:

您可以在同一个清单文件中包含两个活动元素,它们同时具有带有 action=MAINcategory=LAUNCHER 的意图过滤器。此外,您还必须对两个活动元素使用属性“android:taskAffinity”(另请参阅here):

<application android:allowBackup="true"        
             android:icon="@drawable/main_icon"
             android:label="@string/main_name"
             android:theme="@style/AppTheme" >
             
    <activity android:name="com.foobar.MyActivity2"            
              android:taskAffinity="com.foobar.MyActivity2"
              android:icon="@drawable/icon1"
              android:label="@string/name1" >
        <intent-filter>
            <action   android:name="android.intent.action.MAIN"       />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>        
    
    <activity android:name="com.foobar.MyActivity2"
              android:taskAffinity="com.foobar.MyActivity2"
              android:icon="@drawable/icon1"
              android:label="@string/name2" >
        <intent-filter>
            <action   android:name="android.intent.action.MAIN"       />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>             
    
</application>

当带有此清单的 APK 文件安装在设备上时,它将在主屏幕上创建两个图标。这些图标的标题将取自属性android:label,而图标将取自属性android:icon。在“设置|应用程序”下的应用程序列表中,您将看到由应用程序标签的属性定义的名称和图标。当您在应用列表中为此条目选择“卸载”时,两个“应用”都将从设备中删除。

【讨论】:

如何合并这两个 apk 以使它们成为一个应用程序 "合并两个 APK" 意味着您没有应用程序的源代码,不是吗?那里讨论了这个问题:***.com/questions/5074695。问题是,为此您必须合并两个 classes.dex,以及 AndroidManifest.xml,它以二进制形式包含在 APK 文件中。 我正在尝试创建一个像 LOCKET 这样的应用程序,所以我有一个用于 LockScreen 的 apk,因为我已在清单中将其设为 LAUNCHER,并且我在应用程序内有一个用于 MainScreen 的 apk,这也是我清单中的 Launcher .我只有一个清单文件,这就是为什么我在启动器上获得 2 个 apk。【参考方案2】:

这取决于您对“应用程序”的定义。如果您使用更官方的定义,则无法安装 2 个应用程序,因为您的 manifest.xml 中只能有 1 个 &lt;application&gt;

您可以在您的manifest.xml 中定义多个活动,它们可以做不同的事情,因此您可以在一个APK 中包含两个人可能描述为“应用程序”的事情

只需定义多个活动并使用这些活动可以定义为一个选项,但这取决于您对“应用程序”的定义,但在这种情况下,我会说它会起作用

【讨论】:

只是解决方案听起来很适合...您在 Android 开发人员 wiki 上有指向它的链接吗,我看不到它,谢谢 当然:developer.android.com/guide/topics/manifest/…。无论如何,您都在声明每项活动,所以这没什么大不了的。你应该有一个意图过滤器,因为它是一个启动器,就像你的第一个活动一样:developer.android.com/reference/android/content/…【参考方案3】:

是的,您只需安装一个应用程序即可安装多个应用程序。 在 Manifest.xml 中

项目结构:

【讨论】:

【参考方案4】:

您应该构建 2 个 APKs 使用 APK Expansion Files。

顺便说一句,这是一种安全措施。

【讨论】:

使用 .apk 扩展文件不会安装第二个 apk(我认为) 是 @Thepoosh 扩展文件仅在 apk 文件大小 >50MB 时添加【参考方案5】:

没有。

您可以做的是检查第二个应用程序是否已经安装,如果答案是否定的,您可以使用this post 提示安装第二个应用程序的请求。

【讨论】:

以上是关于一个安装两个应用程序的 .apk 文件的主要内容,如果未能解决你的问题,请参考以下文章

APK两个包文件对比

安卓Android软件安装包apk是啥文件格式

Android APK如何签名

apk 反编译

Android7.0下载Apk自动安装

安卓系统下安装完apk程序后,具体的文件夹位置在哪里呢?