自从Google被墙了以后,访问Android的API文档一直是个问题。虽然Android SDK能够将开发文档下载下来离线查看,可是因为文档中仍然连接Google的在线资源导(js,fonts等)致访问速度仍然很慢。
采用脚本删掉html文件中对在线资源的引用(网上也有别人处理过的能够下载)javascript
是脱机查看,有人还在chrome下写了个插件。html
Android文档更新以后,须要从新处理。脚本很慢,等待网友提供处理过的文档又不够及时。java
我用经常使用的浏览器时Firefoxandroid
项目地址: https://gitee.com/vale666/OptAndroidDocsgit
因此决定用C++从新写一个优化Android离线文档访问速度的小程序。本项目采用Qt Creator开发(Linux下这个用起来很爽,很方便)。本项目在Linux编译测试经过,理论上windows也是能够的。chrome
本项目编译以后会生成OptAndroidDocs,在Android的文档目录下执行OptAndroidDocs便可小程序
Vale@PC:~/.my_files/usr/android_develop/sdk/docs$ time OptAndroidDocs real 0m14.163s user 0m11.227s sys 0m1.180s
从上面的数据能够看到,处理几百兆的Android 5.0离线文档(大概是9000多个html文件) 只用了14秒。windows
1.assets/js/docs.js中:api
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
改成:浏览器
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; //po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
就是注释掉中间那一行
2.仍是assets/js/docs.js中:
// Search for matching JD docs if (text.length >= 3) { // Regex to match only the beginning of a word var textRegex = new RegExp("\b" + text.toLowerCase(), "g");
改成:
// Search for matching JD docs if (text.length >= 1000) { // Regex to match only the beginning of a word var textRegex = new RegExp("\b" + text.toLowerCase(), "g");
这第二点比较重要,若是不修改在输入类名时, 文档的搜索功能不能自动补全(只能补全前两个字母)