平时写android产品相关的东西接触比较少,于是找个例子学习下。

众所周知,Apk文件是可以反编译的,虽然看不到代码,xml还是可见的。

把百度地图android客户端反编译之后,来学习下它的AndroidMainfest.xml。


<manifest android:versionCode="454" android:versionName="6.1.0" android:installLocation="auto" package="com.baidu.BaiduMap"
xmlns:android="http://schemas.android.com/apk/res/android">
Google为APK定义了两个关于版本属性:VersionCode和VersionName,他们有不同的用途。
  • VersionCode:对消费者不可见,仅用于应用市场、程序内部识别版本,判断新旧等用途。
  • VersionName:展示给消费者,消费者会通过它认知自己安装的版本,提到的版本号大多都是说VersionName。

详细知识:http://blog.sina.com.cn/s/blog_580a227a0101bdzb.html

android:installLocation可以设置为"auto"、"internalOnly"、"preferExternal"三个值中的任何一个.

  • auto:程序可能被安装在外部存储介质上(例如:SD Card),但是默认会被安装到手机内存中.当手机内存为空时,程序将被安装到外部存储介质上.当程序安装到手机上后,用户可以决定把程序放在外部储介质还是内存中.
  • internalOnly:默认值.当设置为该值时,程序只能被安装在内存中,如果内存为空,则程序将不能成功安装.
  • preferExternal:将程序安装在外部存储介质上,但是系统不保证程序一定会被安装到外部存储介质上.当外部存储介质不可以或空时,程序将被安装到内存中.程序使用了forward-locking机制时也将被安装到内存中,因为外部存储不支持此机制.程序安装后,用户可以自由切换程序应该在外部还是内部存储介质上.

详细知识:http://www.cnblogs.com/Lefter/archive/2012/03/07/2383962.html


<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />
  • android:minSdkVersion:即支持的最低版本
  • android:targetSdkVersion:targetSdkVersion 是设置希望的SDK版本,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。 但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用

Android 2.3---9===Gingerbread
Android 2.2---8===Froyo
Android 2.1---7===Eclair
Android 2.0.1---6===Eclair
Android 2.0---5===Eclair
Android 1.6---4===Donut
Android 1.5---3===Cupcak
Android 1.1---2 
Android 1.0---1


<supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" />

这个元素用于指定应用程序所支持的屏幕尺寸,并针对比应用程序所支持的屏幕还要大屏幕,启用屏幕兼容模式。在应用程序中使用这个元素指定应用程序所支持的屏幕尺寸是至关重要的。

<uses-permission android:name="android.permission.CAMERA" />

权限控制,此处略去

<activity android:theme="@style/BaiduMapTheme.Welcome"
android:label="@string/app_name"
android:name="com.baidu.baidumaps.WelcomeScreen"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|fontScale"
       android:noHistory="true">

android:configChange:一般在AndroidManifest.xml文件中都没有使用到android:configChanges="keyboardHidden|orientation"配置,当然还是很有用的。
  就是如果配置了这个属性,当我们横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不会重新执行onCreate方法,那当然如果不配置这个属性的话就会重新调用onCreate方法了

 android:noHistory:当用户切换到其他屏幕时是否需要移除这个activity。这个属性是APIlevel3中引入的

  android:hardwareAccelerated="true":开启硬件加速

最新文章

  1. zookeeper原理解析-客户端与服务器端交互
  2. Struts2二级菜单联动
  3. Zepto中文API
  4. Hbase客户端API基础小结笔记(未完)
  5. JS几种数组遍历方式以及性能分析对比
  6. VS2010中重命名项目
  7. Java for LeetCode 143 Reorder List
  8. 百度地图API 简单示例
  9. 收回动态VHD的未使用空间
  10. Hadoop的伪分布式搭建
  11. ps设计资料整理
  12. QCMediaPlayer mediaplayer NOT present(android)
  13. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6
  14. HDFS Basic Operation
  15. CentOs7.5安装Redis
  16. 【C++ 实验六 继承与派生】
  17. 高级组件——分割面板JSplitPane
  18. Ubuntu 14.10 下Hive配置
  19. Hadoop学习之路(二十三)MapReduce中的shuffle详解
  20. Error creating bean with name &#39;eurekaAutoServiceRegistration&#39;

热门文章

  1. 解决sql脚本文件太大无法打开的问题
  2. iOS 【资源篇】
  3. Day2-VIM(四):修改
  4. ucos ii 百度官方介绍
  5. SEO中常用HTML代码大全,及权重排序
  6. PDM生成数据库-0设置表名和字段名中不带双引号
  7. js正则基础总结和工作中常用验证规则
  8. ffmpeg添加水印的方法举例 (砖)
  9. DAY9-python并发之多线程
  10. Python之tuple的创建以及使用