解决android studio升级失败提示 Connection failed方法

 更新时间:2016年9月20日 19:58  点击:1500
下面来给各位介绍android studio升级失败提示 Connection failed解决方法,希望文章可以给各位带来帮助.

关于这个问题,查了不少地方,发现解决方法都差不多,但或多或少有些问题或没说清楚。关于在windows系统中的解决方法,基本没什么问题,都是如下修改:

在Android Studio安装目录“/bin/studio.exe.vmoptions”文件中追加以下几行


-Djava.net.preferIPv4Stack=true
-Didea.updates.url=http://dl.google.com/android/studio/patches/updates.xml
-Didea.patches.url=http://dl.google.com/android/studio/patches/

但有点要注意,64位系统就应该修改“/bin/studio64.exe.vmoptions”这个文件。
而下面主要说明修改mac中的升级问题:

在Mac和Linux版本中,网上提供的解决办法,差不多都是如下修改:
直接修改环境变量:


$ export REQUIRED_JVM_ARGS="-Didea.updates.url=http://dl.google.com/android/studio/patches/updates.xml -Didea.patches.url=http://dl.google.com/android/studio/patches/"
$ bin/studio

此方法多次尝试,均以失败告终。最后不得不自行想办法解决,发现如下修改可解决这个问题:

在“/Applications/Android Studio.app”中,右键点击“显示包内容”,打开“/bin/idea.vmoptions”文件,在后面追加入windows中的内容,即:

-Djava.net.preferIPv4Stack=true
-Didea.updates.url=http://dl.google.com/android/studio/patches/updates.xml
-Didea.patches.url=http://dl.google.com/android/studio/patches/
后保存退出,重新打开Android Studio,Check for Updates …就可以看到升级提示了。

注:此方法只是自己摸索尝试在本机上可行,非官方提供,失败勿喷,谢谢!a

一般的安卓应用都会提供自动更新的功能,让用户方便使用最新的版本,现在我们来讲讲如何实现安卓应用自动更新的功能实例方案,方便大家学习。

安卓应用实现自动更新比较简单,这里跟大家介绍下。

1. web接口

需要提供一个接口供客户端查询更新状态,并且在需要更新时,告知客户端新APK地址。

接口参数如下:

    package   包名,因为有时候会出现同一个应用换包名打包的情况
    version 版本号,即android清单文件里面的versionCode
    channel 渠道号
    os 操作系统,android/ios。ios 这里仅作预留。

 

之所以传入这些字段,是要在与服务器端的包匹配时,务必满足:

    package, channel, os 相等,并且服务器端的version 大于 客户端传入的version

代码如下:

os = request.GET.get('os')
pkg_name = request.GET.get('package')
channel = request.GET.get('channel')
version = request.GET.get('version')

if not os or not pkg_name or not channel or not version:
    return jsonify(**ret_dict)
pkg = Package.objects.filter(
    os=os,
    package=pkg_name,
    channel=channel,
    status__gt=config.PACKAGE_STATUS_NOT_UPDATE
).order_by('-version').first()
if pkg and int(version) < pkg.version:
    ret_dict['pkg_status'] = str(pkg.status)
    ret_dict['pkg_url'] = config.WEB_HOST + pkg.file.url
    ret_dict['update_prompt'] = pkg.info
return jsonify(**ret_dict)

2. 数据库设计

由于web端使用的是django,所以可以很方便的给出运营同学可以操作的后台界面,如下:

NewImage

注意红框内的元素,运营同学在上传时,是不允许修改的,而是由程序自动解析APK文件得到后填入的。

具体的解析方法,我们稍后给出。

而对应的models代码如下:

class Package(models.Model):
    file = models.FileField(u'文件', upload_to=config.PACKAGE_UPLOAD_PATH)
    package = models.CharField(u'包名', max_length=255, blank=True, default='')
    version = models.IntegerField(u"版本号", blank=True, default=0, null=True)
    channel = models.CharField(u"渠道", max_length=128, blank=True, default='')
    status = models.IntegerField(u'更新状态', default=config.PACKAGE_STATUS_NOT_UPDATE,
        choices=config.PACKAGE_UPDATE_STATUS)
    info = models.TextField(u'通知信息', blank=True, null=True)
    os = models.CharField(u'操作系统', max_length=64, default=config.PACKAGE_CLIENT_UNKNOW,
        choices=config.PACKAGE_CLIENT_OS, blank=True, null=True)

    def __unicode__(self):
        _,name = os.path.split(self.file.name)
        return name

    class Meta:
        unique_together = ('package', 'version', 'channel', 'os')

    def save(self, * args, ** kwargs):
        # 文件上传成功后,文件名会加上PACKAGE_UPLOAD_PATH路径
        path,_ = os.path.split(self.file.name)
        if not path:
            if self.file.name.endswith('.apk'):
                self.os = config.PACKAGE_CLIENT_ANDROID
                path = os.path.join('/tmp', uuid.uuid4().hex + self.file.name)
                # logger.error('path: %s', path)
                with open(path, 'wb+') as destination:
                    for chunk in self.file.chunks():
                        destination.write(chunk)
                info = parse_apk_info(path)
                os.remove(path)
                self.package = info.get('package', '')
                self.version = info.get('version', 0)
                self.channel = info.get('channel', '')
            elif self.file.name.endswith('ipa'):
                self.os = config.PACKAGE_CLIENT_IOS

        super(self.__class__, self).save(*args, ** kwargs)

    def display_filename(self):
        _,name = os.path.split(self.file.name)
        return name
    display_filename.short_description = u"文件"

3. APK文件解析

def parse_apk_info(apk_path, tmp_dir='/tmp'):
    """
    获取包名、版本、渠道:
    {'version': '17', 'channel': 'CN_MAIN', 'package': ‘com.fff.xxx'}
    :param apk_path:
    :return:
    """
    from bs4 import BeautifulSoup
    import os
    import shutil
    import uuid

    abs_apk_path = os.path.abspath(apk_path)
    dst_dir = os.path.join(tmp_dir, uuid.uuid4().hex)
    jar_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'apktool.jar'))
    cmd = 'java -jar %s d %s %s' % (jar_path, abs_apk_path, dst_dir)

    if isinstance(cmd, unicode):
        cmd = cmd.encode('utf8')

    # 执行
    os.system(cmd)

    manifest_path = os.path.join(dst_dir, 'AndroidManifest.xml')

    result = dict()

    with open(manifest_path, 'r') as f:
        soup = BeautifulSoup(f.read())
        result.update(
            version=soup.manifest.attrs.get('android:versioncode'),
            package=soup.manifest.attrs.get('package'),
        )

        channel_soup = soup.find('meta-data', attrs={'android:name': 'UMENG_CHANNEL'})
        if channel_soup:
            result['channel'] = channel_soup.attrs['android:value']

    shutil.rmtree(dst_dir)

    return result

当然,正如大家所看到的,我们需要依赖于 apktool.jar 这个文件,具体大家可以在网上下载。

hosts文件以前小编以为只有电脑才有呢,没想到手机也有hosts文件了,下面我来为各位介绍Android修改hosts文件的方法介绍

有朋友问Android怎么修改Hosts?对于这个问题,由于手头并没有Android设备,所以只能从网上搜罗了几个方法,如果有朋友有更好的方法,不妨留言补充。

本文介绍三种Android手机修改hosts文件的方法,但修改hosts文件一定要谨慎:Android手机hosts文件的换行符必须是n而不是windows的rn,使用Notepad++打开hosts文件,依次点击菜单中的“视图–显示符号–显示所有字符”,如果行末是LF就没问题,CR LF结束则需要替换所有的CR LF为LF。

Android手机hosts文件路径:/system/etc/hosts

修改hosts方法一:需重启

修改host文件首先需要Android手机获取Root权限

使用Root Explorer管理器或ES文件浏览器装载/system可写状态,找到/system/etc/hosts的文件,使用文本编辑器打开编辑后保存
保存后重启手机即可生效

修改hosts方法二:不需重启

将hosts文件拷贝到电脑,电脑端修改后复制回手机,这种方法不需要重启

修改hosts方法三

各种android市场中寻找修改hosts的app,例如:

hosts 助手
smartHosts
至于iOS设备如何修改hosts,可能就需要越狱了,有些麻烦,这里暂且不提。本人目前使用的苹果设备用到的google服务不多,如果有朋友有什么好的方法,也可以留言告诉我

Android x86 即运行于 x86 PC上的Android操作系统,目前已经支持大部分安卓程序。本文我们来分享一下ndroid X86 4.4 使用体验组图,有兴趣的朋友可以去官方下载安装。

Android X86 4.4 不久前发布,这是正式发布版本,官方网址:http://www.android-x86.org/,有兴趣的朋友可以去下载(官网好像被墙了,唉)

1

2

3

4

7

5

6

8

9

10

12

11

13

Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,可以在Linux,Mac OS X,Windows 系统上使用。

Android Studio 是一个谷歌Android开发环境,类似于Eclipse开发和调试,是一款工具开发软件。Android Studio 1.0 最近已经发布。更多信息,查看该页面。

 

Android Studio

 

使用PPA进行安装,非常方便,打开终端,输入以下命令:

sudo add-apt-repository ppa:paolorotolo/android-studio

sudo apt-get update

sudo apt-get install android-studio

移除PPA并删除软件:

sudo apt-get install ppa-purge

sudo ppa-purge ppa:paolorotolo/android-studio

[!--infotagslink--]

相关文章

  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • C#方法的总结详解

    本篇文章是对C#方法进行了详细的总结与介绍,需要的朋友参考下...2020-06-25