`
wang_2011_ying
  • 浏览: 150133 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Android APK升级代码编写心得

 
阅读更多
最近两周一直在做Android APP在线升级,主要学习的内容:
1、在Ubuntu下安装Apache,并将项目中的两个文件:最新的APK文件和版本信息文件 放在/usr/local/apache2/htdocs/VerControl/目录下。其中/usr/local/apache2是Apache的默认安装路径。
2、读取版本信息文件,如果版本较新,则下载APK文件到手机上。之前一直无法将APK文件写入手机,通过查文件,才发现需要在AndroidManifest.xml文件中添加两行:
<!-- 添加删除文件 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 向sdcard中写数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3、从服务器上下载APK文件,代码如下:
public void downFile(final String httpUrl){
		pBar.show();
		new Thread(){
			public void run(){
				final String fileName = config.UPDATE_SAVENAME;
				File tmpFile = new File(Environment.getExternalStorageDirectory().getPath() + "/update");
				if(!tmpFile.exists()){
					tmpFile.mkdir();
				}
				final File file = new File(tmpFile.getPath() + fileName);
				
				URL url;
				try {
					url = new URL(httpUrl);
//					url = new URL("http://192.168.123.141:80/VerControl/TestWifiInfo.apk");
					HttpURLConnection conn;
					conn = (HttpURLConnection)url.openConnection();
					InputStream is = conn.getInputStream();
					FileOutputStream fos = new FileOutputStream(file);
					byte[] buf = new byte[1024];
					conn.connect();
					double count = 0;
					if(conn.getResponseCode() >= 400){
						Toast.makeText(MainActivity.this, "time out", Toast.LENGTH_SHORT).show();
					}else{
						while(count <= 400){
							if(is != null){
								int numRead = is.read(buf);
								if(numRead <= 0){
									break;
								}else{
									fos.write(buf, 0, numRead);
								}
							}else{
								break;
							}
						}
					}
					conn.disconnect();
					fos.close();
					is.close();
					update();
				} catch (MalformedURLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
					
			}
		}.start();
	}

4、下载好文件之后,发现总是安装安装失败,如果将原来的版本删除,则发现可以安装下载的文件。解决方法:
因为每次发布APK文件时都新建一个key文件会导致无法正常安装,我们必须先卸载老的版本才能执行新的版本安装。因此,我们必须使用同一个key文件,生成APK文件。点击项目右键,选择Android Tools-->Export Signed Application Package,输入密码。这个密钥很重要,每次升级都需要使用到,忘记密钥也只能重新生成。
签名的作用:是为了保证每个应用程序开发商合法ID,防止部分开发商坑内通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如果自动更新不会因为版本不一致而无法安装)。
分享到:
评论

相关推荐

    helloword+android平台搭建心得

    "HelloWord+Android平台搭建心得"这个主题,意味着我们将深入探讨如何在Android环境中配置开发工具,编写并运行你的第一个Android应用——HelloWorld。 一、Android SDK安装与管理 Android SDK是Android应用程序...

    android 学习心得

    根据提供的文档内容,我们可以深入探讨Android开发中的多个关键知识点,这些知识点对于初学者以及有一定经验的开发者来说都非常重要。下面将逐一分析: ### 一、Android-Manifest.xml – activity详细说明 `...

    2000个apk下载链接

    根据提供的信息,我们可以了解到这是一组关于Android应用(APK)下载链接的集合。下面将对这些信息进行详细的解析,并围绕“2000个apk下载链接”这一主题展开讨论,涉及的知识点主要包括:APK的基本概念、APK下载的...

    基于Android平台的记事本软件(Android Studio项目+报告+app文件)

    5. 打包发布:完成开发和测试后,通过Build菜单生成APK文件,如"记事本.apk",即可安装到Android设备上。 附带的大作业报告.docx文件应包含项目的详细设计、实现方法、遇到的问题及解决方案,是对整个开发过程的...

    android开发资料大全

    android程序编写及调试新手入门 大家一起学Android(Windows篇) android入门与提高必看指南 Android入门逆引手册 Android开发指南中文版、创意设计 【Android系统原理与开发要点详解】/底层 应用 框架 Android核心...

    《Android应用开发》开放实验项目总结报告-模板.doc

    3. 编写代码:使用Java或Kotlin编写应用程序逻辑,与UI交互,实现功能。 4. 运行调试:在模拟器或连接的Android设备上运行应用程序,进行测试和调试。 5. 打包发布:完成开发后,通过Gradle构建系统生成APK文件,...

    android tween 心得

    在Android代码中,我们可以使用以下步骤应用Tween动画: 1. 加载动画资源:`Animation animation = AnimationUtils.loadAnimation(context, R.anim.animation_name);` 2. 应用动画到View:`view.startAnimation...

    计算器android教学或实训文档

    &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"&gt; &lt;!-- 文本框 --&gt; ...

    我的Android第一步

    【标签】"源码"和"工具"表明这个话题不仅涉及到了Android应用的源代码编写,还可能涵盖了开发过程中使用的各种工具和资源管理。 【压缩包子文件的文件名称列表】这些文件是Android项目的基本组成部分: 1. **...

    我的android应用(提供源码)

    APK是Android应用程序的标准打包格式,包含所有必要的资源、代码和元数据。通过反编译或使用工具(如apktool)分析这个APK,我们可以了解到应用的架构、使用的库、资源文件(如图片、字符串、布局)等信息。 从源码...

    Android高手过招 FAQ.zip

    在Android开发领域,高手过招往往意味着深入探讨技术细节、解决复杂问题以及分享经验心得。"Android高手过招 FAQ.zip"这个压缩包很可能包含了开发者在实际工作中遇到的问题及其解决方案,是一份宝贵的参考资料。以下...

    unity3d开发Android教程

    7. **性能优化**:由于Android设备性能各异,优化代码和资源以适应不同设备是必要的。包括降低多边形数量、压缩纹理、使用LOD(Level of Detail)层次细节和延迟渲染等技术。 8. **发布和调试**:完成项目后,你...

    vs-android_samples.zip

    "vs-android_samples.zip" 是一个包含了使用Visual Studio(VS)进行Android应用开发的示例...通过实践这些示例,开发者能够熟悉整个Android开发流程,从编写代码到部署应用,从而提升其在VS+Android开发环境下的技能。

    java心得分享技术文章总结.docx

    【Java心得分享技术文章总结】 Java作为一门广泛使用的编程语言,其在CS(计算机科学)领域扮演着重要的角色。以下是对一系列Java相关技术文章的综合总结: 1. **Kotlin项目实践**: - "DeepNight-in-kotlin"是一...

    安卓APP-在线课堂源码,Android源码

    源码是程序员用编程语言编写的应用程序的原始代码,通过阅读源码,我们可以了解软件的设计思路和实现方法。 2. **在线课堂功能模块** - **登录注册**:用户身份验证是任何应用的基础,源码中应包含用户注册、登录...

    Android高手过招 FAQ (2).zip

    在Android开发领域,高手过招往往意味着深入探讨技术细节、解决实际问题以及分享经验心得。这份"Android高手过招 FAQ (2).zip"文件包含了Android开发者可能会遇到的问题及其解答,帮助提升开发技能和解决问题的能力...

    快捷查话费,套餐的Android小应用--移动话费速查,新增联通版话费速查

    1. Android应用开发:使用Java或Kotlin编写,遵循Android SDK的规范。 2. APK文件安装:Android应用程序的分发和安装方式。 3. 源码分析:对于开发者而言,可以学习应用的架构、网络请求和数据解析等技术。 4. 网络...

    基于Android平台下家庭理财软件设计与开发.pdf

    开发过程中,开发者通过Android Studio等集成开发环境编写代码、设计界面、调试应用并生成APK文件。 ### Java编程语言的使用 Java是一种广泛使用的面向对象的编程语言,具有跨平台性。在Android平台上,Java是开发...

Global site tag (gtag.js) - Google Analytics