① 求教android。做了个android应用更新。
android 从4.0开始是需要用线程下载数据的,如果不存在上述问题,你可以在浏览器里输入url看看数据是不是正常,正常就是你代码哪块没改对,如果不正确就是服务器的问题了。这样就能找到根源了。
② android内置应用升级(更新)之后,升级包是替代了原来的程序还是直接
机在出厂的时候手机生产商总会固化一些程序在里面,而这些程序没有获得root权限是无法删除的。而这些程序随着时间的推移会出现新版本,这时候操作手机进行升级,就会覆盖原来的版本,但并不是替换。当再打开手机应用管理,看到这个程序时就会...
③ 安卓系统,应用宝下载的腾讯系游戏(免流范围内),在进入游戏后在内部更新,是否免流
目前腾讯软件‘应用宝’手机用户端只支持安卓系统,苹果和塞班等其他系统的‘应用宝’软件均不是腾讯公司的,请注意下载使用。在联通2/3/4G网络下,在‘应用宝’手机用户端内,下载应用专属流量免费(包括非腾讯系应用)。
④ 我写一个android应用程序,以前的应用程序版本更新没有强制更新。 现在我想让以前的版本强制更新。怎么弄
一个好的应用程序,的更新操作。一般分为以下几种类型:无更新、可选更新、强制更新。如果要实现对这3种的控制,方式有很多种。举几个例子,你自己选择适合于你自己的应用。
1.可以再程序刚启动的时候,从网络服务端,获取有没有更新,如果有更新,那么是属于“可选更新”还是“强制更新”。如果是强制更新,就不让程序往下走,提示用户强制更新。
2.可以通过所谓的“推送”小心,当一个更新操作的推送到达手机,同样不让程序往下走,提示用户强制更新。
3.用户自己检测有无更新。
对于如果让程序不网下运行,这个是很容易办到的。
随便补充一下,对于Android上的应用程序,所谓的更新,其实不像Window下面的更新。Android上的更新,就是一种“替换”而已。
⑤ 怎样在线更新Android应用
在Android培训学习中我们看到很多Android开发应用都具有自动更新功能,用户一键就可以完成软件的升级更新。这一功能实现起来相当简单,下面就来实践一下。1. 准备知识在AndroidManifest.xml里定义了每个Android apk的版本标识:<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.myapp"android:versionCode="1"android:versionName="1.0.0">< application></application>< /manifest>复制代码其中,android:versionCode和android:versionName两个字段分别表示版本代码,版本名称。versionCode是整型数字,versionName是字符串。由于version是给用户看的,不太容易比较大小,升级检查时,可以以检查versionCode为主,方便比较出版本的前后大小。那么,在应用中如何读取AndroidManifest.xml中的versionCode和versionName呢?可以使用PackageManager的API,参考以下代码:public static int getVerCode(Context context) {int verCode = -1;try {verCode = context.getPackageManager().getPackageInfo("com.myapp", 0).versionCode;} catch (NameNotFoundException e) {Log.e(TAG, e.getMessage());}return verCode;}public static String getVerName(Context context) {String verName = "";try {verName = context.getPackageManager().getPackageInfo("com.myapp", 0).versionName;} catch (NameNotFoundException e) {Log.e(TAG, e.getMessage());}return verName;}if (getServerVerCode()) {int vercode = Config.getVerCode(this); //
用到前面第一节写的方法if (newVerCode > vercode) {doNewVersionUpdate(); // 更新新版本} else {notNewVersionShow(); // 提示当前为最新版本}}复制代码详细方法:private void notNewVersionShow() {int verCode = Config.getVerCode(this);String verName = Config.getVerName(this);StringBuffer sb = new StringBuffer();sb.append("当前版本:");sb.append(verName);sb.append(" Code:");sb.append(verCode);sb.append(",/n已是最新版,无需更新!");Dialog dialog = new AlertDialog.Builder(Update.this).setTitle("软件更新").setMessage(sb.toString())// 设置内容.setPositiveButton("确定",// 设置确定按钮new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {finish();}}).create();// 创建// 显示对话框dialog.show();}private void doNewVersionUpdate() {int verCode = Config.getVerCode(this);String verName = Config.getVerName(this);StringBuffer sb = new StringBuffer();sb.append("当前版本:");sb.append(verName);sb.append(" Code:");sb.append(verCode);sb.append(", 发现新版本:");sb.append(newVerName);sb.append(" Code:");sb.append(newVerCode);sb.append(", 是否更新?");Dialog dialog = new AlertDialog.Builder(Update.this).setTitle("软件更新").setMessage(sb.toString())// 设置内容.setPositiveButton("更新",// 设置确定按钮new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {pBar = new ProgressDialog(Update.this);pBar.setTitle("正在下载");pBar.setMessage("请稍候...");pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);downFile(Config.UPDATE_SERVER + Config.UPDATE_APKNAME);}}).setNegativeButton("暂不更新",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int whichButton) {// 点击"取消"按钮之后退出程序finish();}}).create();// 创建// 显示对话框dialog.show();}复制代码4. 下载模块注,本部分参考了前人的相关实现,http://www.apkbus.com/android-14576-1-1.htmlvoid downFile(final String url) {pBar.show();new Thread() {public void run() {HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(url);HttpResponse response;try {response = client.execute(get);HttpEntity entity = response.getEntity();long length = entity.getContentLength();InputStream is = entity.getContent();FileOutputStream fileOutputStream = null;if (is != null) {File file = new File(Environment.getExternalStorageDirectory(),Config.UPDATE_SAVENAME);fileOutputStream = new FileOutputStream(file);byte[] buf = new byte[1024];int ch = -1;int count = 0;while ((ch = is.read(buf)) != -1) {fileOutputStream.write(buf, 0, ch);count += ch;if (length > 0) {}}}fileOutputStream.flush();if (fileOutputStream != null) {fileOutputStream.close();}down();} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}.start();}复制代码下载完成,通过handler通知主ui线程将下载对话框取消。
复制代码或者在AndroidManifest中将android:versionName="1.2.0"写成android:versionName="@string/app_versionName",然后在values/strings.xml中添加对应字符串,这样实现之后,就可以使用如下代码获得版本名称:public static String getVerName(Context context) {String verName = context.getResources().getText(R.string.app_versionName).toString();return verName;}复制代码同理,apk的应用名称可以这样获得:public static String getAppName(Context context) {String verName = context.getResources().getText(R.string.app_name).toString();return verName;}复制代码2. 流程框架3. 版本检查在服务端放置最新版本的apk文件,如:http://localhost/myapp/myapp.apk同时,在服务端放置对应此apk的版本信息调用接口或者文件,如:http://localhost/myapp/ver.jsonver.json中的内容为:[{"appname":"jtapp12","apkname":"jtapp-12-updateapksamples.apk","verName":1.0.1,"verCode":2}]复制代码然后,在手机客户端上进行版本读取和检查:private boolean getServerVer () {try {String verjson = NetworkTool.getContent(Config.UPDATE_SERVER+ Config.UPDATE_VERJSON);JSONArray array = new JSONArray(verjson);if (array.length() > 0) {JSONObject obj = array.getJSONObject(0);try {newVerCode = Integer.parseInt(obj.getString("verCode"));newVerName = obj.getString("verName");} catch (Exception e) {newVerCode = -1;newVerName = "";return false;}}} catch (Exception e) {Log.e(TAG, e.getMessage());return false;}return true;}复制代码比较服务器和客户端的版本,并进行更新操作。void down() {handler.post(new Runnable() {public void run() {pBar.cancel();update();}});}复制代码5. 安装应用void update() {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应用发布到market上,那么,你会发现market内建了类似的模块,可以自动更新或者提醒你是否更新应用。那么,对于你自己的应用需要自动更新的话,自己内建一个是不是更加方便了呢?本文提到的代码大多是在UpdateActivity.java中实现,为了能够使更新过程更加友好,可以在最初launcher的Activity中建立一个线程,用来检查服务端是否有更新。
有更新的时候就启动UpdateActivity,这样的使用体验更加平滑。年轻是我们唯一拥有权利去编织梦想的时光,把握现在,把握每一分的学习机会。
⑥ Android app和IOS app 更新机制的区别
Android 和 iOS 应用的更新都可以不用做,可以让第三方应用商店来帮你做,你只需更改应用的版本就行了。目前 Android 的通用做法是,在应用内检查版本号,通过跟服务器的版本号来对比,版本号不同就更新,具体的做法是可以在应用内写个下载程序,也可以在弹出浏览器来下载。iOS 应用如果要上传到 app store,是不允许在应用内检查更新的,否则不让上架,iOS 的更新更简单,让苹果 app store 来做就行了,你在 build 的时候,改变版本号就行,希望对你有帮助。
⑦ 什么是Google Play应用内更新
Google Play应用内更新是Play Core库的一项功能,它引入了新的请求流,以提示活跃用户更新开发者的应用。
这里需要注意的是,应用内更新仅适用于运行Android 5.0(API级别21)或更高版本的设备,并且要求开发者使用Play Core库 1.5.0或更高版本。满足这些条件后,开发者即可使用这项功能。
1.灵活更新
在这种方式下,如果用户选择更新,应用程序即使在使用过程中也不会受到影响,可以继续使用,会由后台会下载并安装最新的版本,当版本安装完成后会出现重启提示。用户选择重启即可完成整体的更新流程。这种更新方式适用于非核心功能的更新。
⑧ 王者怎么更新
IOS和安卓都是一样的,进入游戏就显示有更新的,游戏一般是进入登录界面就会自动更新,IOS如果还不行的话,一般在AppStore中会有更新提示,安卓各大应用商店也都会有应用更新提示。
王者荣耀更新方法:
1、游戏内提示更新,点击更新即可。
2、IOS应用更新,找到苹果商店右下角的更新,在待更新项目中直接更新。
3、安卓应用商店内更新重新安装。
王者荣耀
(2015年腾讯天美发行的MOBA手游)
《王者荣耀》是由腾讯游戏天美工作室群开发并运行的一款运营在Android、IOS、NS平台上的MOBA类手机游戏,于2015年11月26日在Android、IOS平台上正式公测,游戏前期使用名称有《英雄战迹》、《王者联盟》。《Arena Of Valor》,即《王者荣耀》的欧美版本于2018年在任天堂Switch平台发售。
游戏是类dota手游,游戏中的玩法以竞技对战为主,玩家之间进行1V1、3V3、5V5等多种方式的PVP对战,还可以参加游戏的冒险模式,进行PVE的闯关模式,在满足条件后可以参加游戏排位赛等。
⑨ 为什么Android系统应用更新不是让新apk替换进入/system分区
这里涉及到两个问题:odex和第三方制作的Gapps刷机包
买来一个android设备,没有root前都是这样子的:
只要不是内地的android设备基本都会搭载google提供的一系列android手机的应用,大家会叫它Gapps,GMS什么的。这一批应用包含了表面的从gmail到youtube到play service到背后的公共用途的软件包,以及很多framework和本地代码动态运行库及其它内容。
当然其中大部分可执行代码都以dex这种可以由dalvik这个java虚拟机执行的的形式存在,具体的说,是以odex的形式存在。
dalvik在运行dex之前,需要做一系列验证,确保dex里头的代码是符合规范,是能安全执行的,dalvik做完检查后,将dex做一些处理(比如调整,加校验位等),就变成了odex。实际上在dalvik里头运行的是odex。
所以,正式发售的设备的内置应用程序,都是以***.apk加上同名的***.odex存在的。
因为这种机制,把一对apk/odex放到另一台不同(具体)型号的设备里是没法运行的。
而google不允许包括CM在内的第三方rom里内置Gapps。Gapps是收费的私有软件。
所以,目前想到的办法是借助smali等开源工具做deodex,将odex转化成可以通用的dex。这样重新打包了Gapps后,才能作为刷机包塞到别的设备中
-----------------------------------
google会不会对gapps进行升级?
显然是的,一部分的升级会通过play store进行,比如更新play store本身,装一个google play service(这个apk实际上是一个供第三方应用程序的API合集,有了它才能在第三方应用中使用google maps的矢量地图,通过google+登陆等项目)
另外一部分则要通过设备的OTA做,因为这个更新实在太大了,同一个手机,从android4.0升级到android4.1时,可能每一个Gapps的文件都需要替换,而且android安装应用程序的机制说到底只能改变apk文件,但它动不了framework,library,所以这些东西的更新需要借助OTA等通过bootloader许可直接修改system分区的手段
在第三方打包好的gapps里就能发现,gapps有很多很多的版本
我觉得刷gapps的原则是,首先gapps要适配设备当前android的大版本,给4.1用的gapps就不应该刷到4.0系统里,使用intel处理器的尤其要注意,这个gapps是不是给x86设备的,Z24x0/27x0只能有限度地翻译arm代码,把arm设备的gapps给x86设备用,可能会导致系统根本无法启动;然后越新打包出来的gapps问题可能会越少。