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

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

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

谢谢, 马特

【问题讨论】:

    标签: android android-layout android-widget 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" 意味着您没有应用程序的源代码,不是吗?那里讨论了这个问题:stackoverflow.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 中包含两个人可能描述为“应用程序”的事情

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

    【讨论】:

    【解决方案3】:

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

    项目结构:

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

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

      没有。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多