Apk的签名打包和版本更新

         一般正式发布的apk,都会签名。APK签名用处主要有两种:

  1. 使用特殊的key签名可以获取到一些不同的权限。

  2. APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉

 所以,同一个应用,最好只用一个签名文件!这样子,在程序升级的时候,新版本能覆盖老版本安装!

 

   签名打包有几种方式,下面就说一种最常见的,用Eclipse工具签名打包!

1.Eclipse工程中右键要签名打包的工程,弹出选项中选择 android工具-生成签名应用包:

2.原来没有签名文件的,就新创建一个。

 

3.完成之后,导出已签名的apk。试着把这么已经签名的apk安装到原来已经装了默认签名的旧的apk的手机上,会提示安装失败。

这时候要安装新的apk,就必须先要手动卸载旧的apk才行!

还有一定要注意,导出的签名文件和密码,要妥善保管好!

 

 

 

                         Apk的版本更新

 

程序 自动更新 的流程大致如下:

程序启动 -> 后台检查更新 -> 链接远程服务器 -> 获取新版本信息
-> 比对当前版本 -> if(有更新) -> 显示更新提示对话框并显示更新的内容 -> 交与用户选择

1.     AndroidManifest.xml里定义了每个Android apk的版本标识:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.gdtech.znpc.android"

    android:versionCode="1"

android:versionName="1.0" >

android:versionCode。android:versionCode和android:versionName两个属性分别表示版本号,版本名称。

versionCode是整数型,而versionName是字符串。

由于versionName是给用户看的,不太容易比较大小,升级检查时,就可以检查versionCode。把获取到的手机上应用版本与服务器端的版本进行比较,应用就可以判断处是否需要更新软件。

 

2.    检查和比较apk的版本,需要远程服务区有apk的名称,版本信息和可供下载的链接地址;可以是xml或者json格式的文件,保存有这些信息。

譬如说:服务器的xml文件,差不多是这样子的。

<update>

    <version>2</version><!—新的版本信息 -->

    <name>baidu_xinwen_1.1.0</name>apk文件名次)

    <url>http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk</url>(下载链接)

</update>

 

 

                   (大体流程图)

 

 

3.       检查到版本号变化,需要更新的话,可以点击“更新”,下载最新的apk文件。

 

 

 

4.     下载完成之后,调用方法安装弹出安装框! 

void update() {  

// 通过Intent安装APK文件

        Intent intent = new Intent(Intent.ACTION_VIEW);  

        intent.setDataAndType(Uri.fromFile(new File(Environment  

                .getExternalStorageDirectory(), Config.UPDATE_SAVENAME)),  

                "application/vnd.android.package-archive");  

        startActivity(intent);  

}

点击安装,新版本即覆盖安装,由此完成apk的版本更新!

 

你可能感兴趣的:(Apk的签名打包和版本更新)