Android项目为一个apk设置多个ICON图标和执行入口

Android开发中,一个工程对应一个AndroidManifest.xml文件,这个文件中包含有该项目的一些设置,如权限、SDk版Activity、Service信息等。一般而言,这个文件中会有且仅有一个application节点,这个节点表示这是一个应用程序,不管它下面还有多少子节点如Activity、Service等等。形象的说,就是这个项目生成的apk安装到Android设备后,应用程序列表中会出现一个ICON,这个ICON就是这个程序的执行入口了。

但是,某些情况下,我们需要为我们的apk设置多个执行入口,也就是安装后在应用程序列表中出现多个ICON图标,各个ICON是APP不同模块的入口点,并且各个模块运行在不同的进程中。

可能这种需求很少见,但还是有一个现实的例子:系统中的联系人和电话这两个程序。表面看来这是两个独立的应用程序,但实际上它们只是一个应用程序的两个执行入口而已,点击联系人图标就会进入联系人界面,点击电话图标就会进入拨号界面,这都是通过设置该项目下Activity的属性来实现的。

Activity有一个重要的属性process,这个属性是指定Activity运行时所在的进程。没有指定此属性的话,所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。中所有组建元素的process属性能够为该组件设定一个新的默认值。但是任何组件都可以覆盖这个默认值,允许你将你的程序放在多进程中运行。如果这个属性被分配的名字以:开头, 当这个activity运行时, 一个新的专属于这个程序的进程将会被创建。

以下面的代码为例,项目中有两个Activity,其中一个采用默认属性,另一个为其指定process属性以及新的ICON,这样该项目安装到设备上之后可以发现多了两个应用程序图标,一个是应用程序默认的图标,点击后进入HelloWorldActivity;另一个是手动指定的ICON,点击后进入NextPageActivity。这时使用adb shell查看进程可以发现,两个Activity是运行在不同的进程中的。

AndroidManifest.xml的主要内容如下:

<activity android:name=".HelloWorldActivity"
          android:label="@string/app_name"
          android:process=":process.main">
         <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
</activity>
 
<activity android:name="cn.ian.NextPageActivity"
	  android:label="@string/nextpage"
	  android:process=":process.sub"
	  android:icon="@drawable/icon1"
	  android:launchMode ="singleInstance">
	 <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
</activity>


通过上面的方式,为App的各个组件指定process和icon属性,便能够达到类似于一个apk中打包多个程序(模块)的目的。

ps:要特别注意,为Activity指定process属性后,还必须为其指定launchMode为singleInstance,这样才有效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 一个Android应用可以分为多个APK文件,这是为了支持设备配置分层,使不同设备能够下载适合它们的APK,从而节省存储空间。例如,一个应用可以拆分为多个APK,每个APK分别专门针对不同的屏幕分辨率、架构等设备配置提供服务。在用户安装应用时,Google Play Store 会自动选择适合当前设备配置的APK下载并安装。 ### 回答2: Android一个APK多个APK是指在开发Android应用程序时,使用了动态特性来创建多个APK文件。这样做有多种原因和优势。 首先,一个APK多个APK可以帮助开发者解决应用程序过大的问题。随着应用程序功能的增加和迭代,APK文件可能会变得非常大,这会导致用户在下载和安装应用程序时需要较长的时间和较高的网络流量。而使用多个APK可以将应用程序拆分为不同的部分,根据用户的需求进行灵活下载和安装,从而减少APK文件的大小。 其次,一个APK多个APK还可以提供不同的应用程序体验。通过为应用程序的不同版本和不同设备创建不同的APK,开发者可以根据用户的需求和设备的特性,提供特定的功能和优化的用户体验。比如,对于低端设备,可以提供精简版本的APK以提高性能和响应速度,而对于高端设备,则可以提供更多的功能和高级特性。 此外,一个APK多个APK还可以用于多语言支持。通过创建不同的APK来适配不同的语言版本,开发者可以在不同的国家和地区提供本地化的应用程序界面和文本内容,使用户可以更好地理解和使用应用程序。 总而言之,一个APK多个APK的开发模式可以帮助开发者解决应用程序过大、提供灵活的下载和安装、提供不同的应用程序体验以及多语言支持等问题,提高应用程序的用户体验和适配性。 ### 回答3: Android一个APK多个APK是指一种特殊的应用程序打包方式,它允许开发者将一个应用程序划分为多个APK包,以适应不同设备、不同配置和不同需求的用户。 通过一个APK多个APK的方式,开发者可以降低APK文件的大小,优化应用程序的性能,并提供更好的用户体验。 这种打包方式主要是通过Google Play市场的分发功能来实现的。开发者可以在Google Play开发者控制台中定义应用程序的配置变体,例如不同的设备架构、多语言支持等。然后,当用户在Google Play上安装应用程序时,系统会根据用户设备的特性和设置,自动下载并安装适合的APK。 通过一个APK多个APK的方式,开发者可以根据设备的CPU架构,提供不同的二进制文件,以充分利用设备的处理能力。同时,开发者还可以根据用户所在的地区和语言偏好,提供相应的资源文件,包括文字、图像等,以确保应用程序的显示效果和可用性。 此外,通过这种方式,开发者还可以定义不同的应用程序配置选项,例如启用或禁用特定功能、使用不同的算法和算法库等。这样,用户可以根据自己的需求和喜好选择所需的APK包,以定制化自己的应用体验。 综上所述,一个APK多个APK的打包方式在Android应用开发中具有重要的意义。它为开发者提供了更多的灵活性和可定制性,同时也提供了更好的用户体验和应用性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值