Android开发帮助文档Doc打开速度慢解决_Python篇

解决android帮助文档打开慢

网友说是因为Doc目录下的html文件里含有访问google的js文件

<link rel="stylesheet"
href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">

 <script src="http://www.google.com/jsapi" type="text/javascript"></script>

经查的确如此。

由于这两行脚本需在线访问Google,显然后续内容的加载就会很慢慢慢慢......

咋办呢?

将每个目录下的.html文件都打开手动删除上边两行内容?一定会删到 疼。有人建议:

方法一:修改Hosts文件

这样解决,修改C:\WINDOWS\system32\drivers\etc目录下的hosts文件里添加

127.0.0.1 fonts.googleapis.com

127.0.0.1
www.google.com

127.0.0.1
www.google.com/jsapi

127.0.0.1
www.google-analytics.com

127.0.0.1 apis.google.com/js/

速度会提升很多。

方法二:编写Java程序批量注释

遍历doc目录下的所有文件,将每个文件的上边两行内容删除,参考

/*
 * 去掉Android文档中需要联网的javascript代码
 */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FormatDoc {
    public static int j=1;
    /**
     * @param args
     */
    public static void main(String[] args) {

        File file = new File("D:/android/android-sdk-windows/docs/");
        searchDirectory(file, 0);
        System.out.println("OVER");
    }

    public static void searchDirectory(File f, int depth) {
        if (!f.isDirectory()) {
            String fileName = f.getName();
            if (fileName.matches(".*.{1}html")) {
                String src= "<(link rel)[=]\"(stylesheet)\"\n(href)[=]\"(http)://(fonts.googleapis.com/css)[?](family)[=](Roboto)[:](regular,medium,thin,italic,mediumitalic,bold)\"( title)[=]\"roboto\">";
                String src1 = "<script src=\"http://www.google.com/jsapi\" type=\"text/javascript\"></script>";
                String dst = "";
                //如果是html文件则注释掉其中的特定javascript代码
                annotation(f, src, dst);
                annotation(f, src1, dst);
            }
        } else {
            File[] fs = f.listFiles();
            depth++;
            for (int i = 0; i < fs.length; ++i) {
                File file = fs[i];
                searchDirectory(file, depth);
            }
        }
    }

    /*
     * f 将要修改其中特定内容的文件
     * src 将被替换的内容
     * dst 将被替换层的内容
     */
    public static void annotation(File f, String src, String dst) {
        String content = FormatDoc.read(f);
        content = content.replaceFirst(src, dst);
        int ll=content.lastIndexOf(src);
        System.out.println(ll);
        FormatDoc.write(content, f);
        System.out.println(j++);
        return;

    }

    public static String read(File src) {
        StringBuffer res = new StringBuffer();
        String line = null;
        try {
            BufferedReader reader = new BufferedReader(new FileReader(src));
            int i=0;
            while ((line = reader.readLine()) != null) {
                if (i!=0) {
                    res.append('\n');
                }
                res.append(line);
                i++;
            }
            reader.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return res.toString();
    }

    public static boolean write(String cont, File dist) {
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter(dist));
            writer.write(cont);
            writer.flush();
            writer.close();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
}

方法三:执行脚本

通过shell删除那行js代码,非常简洁方便,比上面的的java方便100倍,不过不能删掉第一段js代码。

find . -name "*.html"|xargs grep -l "jsapi"|xargs sed -i '/jsapi/d'

我没试过。

人生苦短,我用Python

方法四:python代码批量删除

思路:遍历doc或docs目录及子目录,查找所有.html文件,打开这些文件,读取文件内容,替换上边的js内容为空,把修改内容写回文件,结束。

说着很复杂,用python实现真的很简单。

import os
s1 = '''<link rel="stylesheet"
href="http://fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">'''
s2 = '''<script src="http://www.google.com/jsapi" type="text/javascript"></script>'''
s3 = '''<script type="text/javascript" async="" src="https://apis.google.com/js/plusone.js"></script>'''
s4 = '''<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js"></script>'''
for root,dirs,files in os.walk(r'C:\AndroidSdk\docs'):
    for file in files:
        fd = root + os.sep + file
        if ".html" in fd:
            print fd
            f = open(fd, 'r')
            s = f.read().replace(s1, "").replace(s2, "").replace(s3, "").replace(s4, "")
            f.close()
            f = open(fd, 'w')
            f.write(s)
            f.close()

献丑一条条解释一下,假定我的Android的开发帮助文档在c:\androidsdk\docs下,遍历其下所有目录和文件名只需用os的walk函数即可完成。

for root,dirs,files in os.walk(r'C:\AndroidSdk\docs'):

walk返回值,当前遍历的目录root、其下有哪些子目录dirs、有哪些文件files,重要的是递归的遍历指定目录C:\AndroidSdk\docs。

去掉html文件里两条影响速度的js,得先有html文件,

    for file in files:
        fd = root + os.sep + file

则构造出了所有文件名,找到(匹配).html文件只需这样

        if ".html" in fd:
            print fd

接下来就是干掉影显示(速度)的js了,替换文件里相应内容为空即可。

f = open(fd, 'r')
            s = f.read().replace(s1, "").replace(s2, "").replace(s3, "").replace(s4, "")
            f.close()
            f = open(fd, 'w')
            f.write(s)
            f.close()

运行吧,1分钟内就运行结束了,整个docs下共九千多个文件,遍历、读写需要时间。

最后找个doc试试 C:\AndroidSdk\docs\reference\android\widget\Spinner.html

那速度,杠杠的。

我用的是python2.7.5

呵呵,欢迎回复批评!或点赞!

python下载地址 https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi

				



				
时间: 02-03

Android开发帮助文档Doc打开速度慢解决_Python篇的相关文章

Eclipse3.7中搭建Android开发环境文档教程和视频教程

1.下载Eclipse3.7,登录http://www.eclipse.org/downloads/,下载Eclipse Classic 3.7: 2.安装ADT插件:下载好Eclipse后解压,运行Eclipse,第一次运行会提示设置workspace:在菜单栏选择Help-Install New Software,在Work with栏输入http://dl-ssl.google.com/android/eclipse/并回车,稍后显示如下图: 选择Select All按钮,单击Next--

android 开发 ------- 接口文档 规范

1 接口书写的格式: 1   用例图 2   流程图 3   具体的接口: 3.1请求的方式: 包括: 服务器地址 le.gxjinan.com/open/user.php?ac=login 请求方式 POST 编码格式 UTF-8 内容的格式 application/x-www-form-urlencoded 3.2 请求的参数: 例如: 参数 类型 是否必须 说明 user String 是 手机号,邮箱,用户名 3.2 响应信息: 请求方式 POST 编码格式 UTF-8 数据类型 Jso

加快Android离线文档的访问速度

OptAndroidDocs 背景: 自从Google被墙了之后,访问Android的API文档一直是个问题.虽然Android SDK可以将开发文档下载下来离线查看,但是由于文档中仍然链接Google的在线资源导(js,fonts等)致访问速度仍然很慢. 网上大概有2种方法: 采用脚本删掉html文件中对在线资源的引用(网上也有别人处理过的可以下载) 是脱机查看,有人还在chrome下写了个插件. 但是我对以上两种方法还不够满意: Android文档更新之后,需要重新处理.脚本很慢,等待网友提

OFFICE文档(DOC,XLS,PPT)打开报错的解决办法!

一般情况下,打开OFFICE文档报错都是因为模板文件出错!! 至于为什么会出错这个问题不好说,可能是不正确关闭文档等等,重装OFFICE也不一定能解决问题! 出现这种情况一般是所有的Word文档或者EXCLE文档都打不开! 解决办法一:(不保证所有操作系统及环境都适用)进入C:\Documents and Settings\当前用户名\Application Data\Microsoft\Templates\ 将Templates文件夹清空(即删除)然后再试试!—————————————————

Android官方入门文档[2]运行你的应用程序

Android官方入门文档[2]运行你的应用程序 Running Your App运行你的应用程序 This lesson teaches you to1.Run on a Real Device2.Run on the Emulator You should also read?Using Hardware Devices?Managing AVDs with AVD Manager?Managing Projects 这节课教你1.运行在真实设备2.运行在模拟器 你也应该阅读?使用硬件设备?

Android官方入门文档[4]启动另一个Activity

Android官方入门文档[4]启动另一个Activity Starting Another Activity启动另一个Activity This lesson teaches you to1.Respond to the Send Button2.Build an Intent 3.Create the Second Activity4.Receive the Intent5.Display the Message You should also read?Installing the SDK

微信开发配置文档

微信开发配置文档 请求SDK接口 1, 绑定域名 公众号设置 菜单 --> 功能设置 绑定域名 : http://www.xxxxx.com2, 记录应用ID : AppID(应用ID)wxd9c94eba232190a1 应用密码: 8ff9f1fd268bdb643fc27354811d973a3, 找到开发者工具 --> 开发者文档 -->微信网页开发 -->JS-SDK说明文档 页面底部 下载 sample.php 示例DEMO 打开sample.php 设置 APPID

开发技术文档汇总

开发技术文档汇总:(持续更新) 1 Underscore 中文文档    github地址   英文文档 2 Express中文文档   github地址 3 Backbone中文文档 Backbone英文文档   github地址 4 Jquery中文文档(适合1.0--2,0) 5 Bootstrap中文 6 Less中文 7 NodeJs中文API 8 node.js相关的中文文档及教程 9 ECMAScript262中文兼容库 10 浏览器hacks 11 Rapheal中文   相关文

Android官方入门文档[1]创建一个Android项目

Android官方入门文档[1]创建一个Android项目 创建一个Android项目 这节课教你1.创建与Android Studio中的一个项目2.创建使用命令行工具项目 你也应该阅读?管理项目 Creating an Android Project This lesson teaches you to1.Create a Project with Android Studio2.Create a Project with Command Line Tools You should also