首先解释下:Android的版本相关的 android:versionCode和android:versionName,它们在androidmainfest.xml中被定义。
- android:versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户。注意:该值是一个int型,所以它是有取值范围的,最大值不能超过:2147483647(int类型,在内存中占用4个字节(32位)取值范围-2^31 ~ 2^31-1)
- android:versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显示给用户,该值会在应用管理里面显示,可以指定任意字符串。
当android:versionCode=2147483647时,编译生成apk里提取的AndroidManifest.xml,反编译看到的 android:versionCode="2147483647"
此时版本号达到最大值,理论上就不会有版本更新了。
当超过最大值时,如android:versionCode=2147483648时,
比最大值大1,反编译看到的 android:versionCode="-2147483648" (等于int型的最小值)
如android:versionCode=2147483649时,
比最大值大2,反编译看到的 android:versionCode="-2147483647" (等于int型的最小值 + 1)
root@xujing:~/桌面# java -jar AXMLPrinter2.jar AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="2147483647"
android:versionName="1.0"
package="com.gangyun.makeup"
>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18"
>
</uses-sdk>
<application
android:label="@7F030000"
android:icon="@7F020000"
android:debuggable="true"
android:allowBackup="true"
>
</application>
</manifest>