介绍AndroidMainfest.xml,只介绍你可能会忽视的
<Mainfest android:installLocation=””> preferExternal 优先选择APP安装在外部存储设备上(简单认为就是SD卡),auto表示由系统决定,internalOnly 就是存在内部了,默认应该是存在内部存储。 但是内部的容量通常是有限的,通常建议让APP安装在SD卡上。
以下情况不建议安装在SD卡上,因为当SD卡被解除挂载会出现:
1.APP带着Widgets,Live Wallpapers,Live Folders,将会从主界面全部移除,除非系统重启。(这块以后学到再讨论)
2.APP带着不间断运行的Service,服务将会被停止,不会自动重启。
3.任何安装在外部存储设备上的IME(Input Method Engines--自动适配用户输入类型)将会不可用,当SD卡再次可用时,需要重新再选择。//小键盘? 下次研究
4.Your DeviceAdminReceiver(设备管理组件) and any associated admin capabilities will be disabled. //这个不懂,暂时不做讨论
-----这个标签主要是支持组合输入机制,比如制定触摸屏啊,轨迹球之类的,但是如果你机器上没有这些设备,程序将不能安装上去
<uses-configuration android:reqTouchScreen=”finger” android:reqNavigation=”trackball” android:reqHardKeyboard=”true” android:reqKeyboardType=”twelvekey”/>
-------------一般我们不需要加入这个标签,一般适用于一些游戏软件,需要需要多输入设备联合控制
<uses-feature /> 用来指定你App需要的硬件设备,包括:
1.Audio 低延迟音频输入管道 目前貌似没有安卓设备支持这个
2.Bluetooth 蓝牙
3.Camera 照相机
4.Location 如果你需要基于地址的服务。 你也可以同时显式指定network 或者 GPS
5.Microphone 指定App需要音频输入
6.NFC
7.Sensors 传感器 使你能够指定可用的传感器
8.Telephony 指定电话或者需要的电话收音机
9.TouchScreen 指定App需要的触屏类型
10.USB 指定支持USB
11.Wi-Fi 不解释了
同样,如果指定的设备,当前用户设备上不具备,那么此应用程序无法被安装. (PackageManager干这种检查的活)
同时,如果要指定多个设备,请多写几个<uses-feature />标签~.~
<uses-feature android:name="string" //指定设备名字 android:required=["true" | "false"]// 默认为true,表示如果用户机子无该设备,则APP无法运作.反之亦然. android:glEsVersion="integer" /> //指定openGL ES 版本,整形值
注意:通常指定设备后需要加权限,标识该用户支持使用这设备.
<supports-screens/> 这个标签不做介绍了,就是限制使用的尺寸,然而我们还是尽量优化自己的APP来支持不同分辨率和不同DPI的手机,通过资源文件夹.
<uses-permission/> 在用户安装前会提示这些权限信息供用户思考,还有一些API方法使用前,你需要指定权限. ------属于安全模块.
你可以自定义permission
<permission android:name=”com.paad.DETONATE_DEVICE” android:protectionLevel=”dangerous” // 指定权限级别 android:label=”Self Destruct” //标签 android:description=”@string/detonate_description”> //权限表述 </permission>
你的App中的组件,比如Activtiy的标签中,可以加入你自定义的权限。 然后再在全局<uses-permission/> 加入你的权限。 具体细节先不做讨论。
<instrumentation android:label=”My Test” //instrumentation 类用于给App提供一个测试框架,具体这里不做讨论。 android:name=”.MyTestClass” android:targetPackage=”com.paad.apackage”> </instrumentation>
//声明所需要的外部关联的类库,比如Google Map,如果你下面required设置为true,表示如果没有这个库,APP就不能被安装.
默认的像android.app,android.content之类的基础类库被放在默认的类库中,所有APP都会自动关联,然而像Google Map这些存在在外部库中.具体细节参考官网.
<uses-library android:name="string" android:required=["true" | "false"] />