android学习笔记之mainfest

介绍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"] />

你可能感兴趣的:(android学习笔记之mainfest)