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的主要内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<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,这样才有效。
分享到:
相关推荐
Android一个apk 启动另外一个apk文件
纯java 不使用andoird SDK 解析android应用apk获取其icon图标 aapt及aaot.exe 取自andorid sdk
android获取未安装APK文件的图标 android开发技巧整理
NULL 博文链接:https://mypyg.iteye.com/blog/966202
一个项目如何编译多个不同签名、包名、资源等,的apk
可用于Android平台多摄像头设备要独立测试各个摄像头的场景,如手机,车载。 但是随着时间推移,可能会出现apk与过旧或者最新android SDK不匹配的问题,届时需要找类似的工程源码,重新编译生成apk。 在安装Camera...
批量安装APK,我想还是比较简单的,借助android助手,很容易做到这一点(个人不喜各类助手连接Android时强制安装助手软件);通过adb命令执行多条安装命令也可以直接搞定。电子城里面一般都是借助“安装盒子”进行...
这是一个androidapk图标提取软件,可以提取APK中的图标。
我的几个android项目apk
学逆向的小伙伴们是不是曾经听到过这么一句玩笑:你逆向学的那么牛逼,你把我软件逆出...工具可以将apk转为可二次开发的项目工程,将痛苦的逆向环境,转化为舒服的开发环境,告别汇编,告别二进制,还有啥好说的~~!
简单介绍多个icon进入同一个APK不同界面的的实现方式
android 无sdcard 下载安装 apk 多线程 断点 自动安装apk
QT for Android下多个 apk的创建启动,用于研究QT跨平台在安卓下的开发
APK程序执行Adb shell 命令 shell与高级语言间的调用
android 打包aab文件转化为apk安装包
Android 更新下载apk 安装apk 打开apk
Apk-icon-editor_1.8.0 多语中文版(APK图标编辑属性更改qt) # 版本历史记录 ## 1.8.0 * 添加 *Android 8 Oreo* 支持. * 添加 *Java 9* 支持. * 升级 *Apktool* 到 *v2.3.1*. * 新签名系统. * 改进了 APK 处理. * ...
Apk icon editor 汉化版(APK图标编辑生成工具qt) 本软件手动升级Apktool至 v2.2.2版本,去掉了收费升级链接干扰 它能对APK文件的图标编辑属性名称版本更改后签名生成Apk一气呵成, ( Apk icon editor v1.7.0 仅升级 ...
安装多个apk,apk打包,一个apk安装多个apk,由于这个在网上太难找了,找到的也是有错误,没办法,尝试了很久终于出结果了,分享给大家吧,分要多点。
如果你在寻找android上面的apk,这就是你最好的选择