一个安装两个应用程序的 .apk 文件
Posted
技术标签:
【中文标题】一个安装两个应用程序的 .apk 文件【英文标题】:One .apk file that installs two apps 【发布时间】:2012-05-27 19:05:45 【问题描述】:这是一个关于具有两个不同 .apk(或两个应用程序包含在一个 .apk 文件中)的 android 应用程序的问题
我有两个应用程序,它们做完全不同但相关的事情,比如说一个是标准用户应用程序,一个是管理应用程序。但是用户既可以是用户也可以是管理员。我想知道我是否可以创建一个 .apk 文件来将两个应用程序安装到手机上?我该怎么办?
谢谢, 马特
【问题讨论】:
【参考方案1】:您可以在同一个清单文件中包含两个活动元素,它们同时具有带有 action=MAIN 和 category=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 个 <application>
您可以在您的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 文件的主要内容,如果未能解决你的问题,请参考以下文章