minifjquery移入移出出引号有没有影响

403 Forbidden
You don't have permission to access /my-computer-using/wordpress-experience/using-minify-to-reduce-the-wordpress-connection-request
on this server.
Additionally, a 403 Forbidden
error was encountered while trying to use an ErrorDocument to handle the request.Minify the CSS and JS compression and reduction (Minify: remove space carriage return), and the number of CSS, JS files into one file. Do not think you there is no need for such large bandwidth optimization. De reason to use it more important to a fi
Source: /xuliehao/-3297.html Adobe Dreamweaver CS5 License issued patch network to support Adobe Dreamweaver CS5 Simplified Chinese version of the register. Well, give License: Well, give License: Show user name: www
JQuery plug-in installed to Dreamweaver http://ywj-/blog/722948 View
For Web applications,, HTTP request is a luxury thing, so we have to minimize it. HTTP request to reduce site performance optimization is also a factor. Like this: &link href=&/min/b=wp-content/themes/group/css&f=rest.css,tage.min.css& re
A recent lecture to a remedial class, the most basic dreamweaver will use the new file from the start, feeling a lot ah! Although html + css + js code has been used to write, but to use a js drop down menu to write a sophisticated easy, but to be a p
One, Adobe CS5 full Keygen /file/f7e660ff3b -------------------------------------------------- ---------------------------- Second, the installation and crack method: 1. Installation option to install the trial, installed, (if you do
Download: Macromedia Dreamweaver MX for Linux /download_page.php?id=12078 22M dreamweavermx_6.0.0reactms3_all.deb Macromedia Fireworks MX for Linux /download_page.php?id=12079 13M fireworksmx_6.0.0rea
First, the format 1, the first step to format HTML code: Click menu bar &Edit& - &Preferences& - &Code format& (Note: Dreamweaver versions may be slightly different) Step Two: Formatting you can refer to me, also set accordin
Install MAC version of DreamWeaver CS4, Windows platform, the installation process with no significant difference between the successful installation is complete. However, when prompted to start the license expired, can not enter the main program int
图片的间隙 Q:我有一张大图片,把它切割后在Dreamweaver中进行拼接,可是总是有间隙,不知为什么? A:不知你是否把表格的边距.间距和边框设置为零,只要注意在分割图片时切片之间的距离和表格的设置就行了. 新窗口 Q:请问当点击链接时,如何让链接的窗口&跳&出来,而不是让原来的页面转到那个链接的窗口呢? A:你可以选中该链接,然后把属性面板上的&Target(目标)&改为&_blank&便可以了(如图). 输入空格 Q:我在编辑网页时经常要
在如今Web2.0盛行.AJAX流行的时代背景下,Adobe公司的轻量级的AJAX框架Spry,尤其是当Spry集成到Dreamweaver cs3时,这无疑是最令人兴奋的. 排除与用户交互有关的Spry XML数据交互和Spry相关窗口组件不谈,最先让用户上手的就是Spry所带来的Ajax视觉效果了.在Dreamweaver cs3单击相关按钮就可以轻松地向页面元素添加视觉过渡, 以使它们扩大选取.收缩.渐隐.高光等等. 1,Spry Menu Bar 使用该按钮可以创建横向或纵向的网页下拉或
google输入法刚出来的时候和fireworks出现冲突[详见],前几天推出的1.0.20 .0新版本,发现又和dreamweaver出现了冲突. Dreamweaver代码编辑区,由英文输入法切换到google拼音的时候出现了下面的问题,又被强制关掉了.想起了紫光拼音4.0版本,也是和DW冲突,DW到底得罪谁了?
dw(dreamweaver)正则表达式函数列表,需要的朋友可以参考下. 刚用teleport pro拉了一个整站到本地所有的超链都被强行加了一句tppabs=&...&新装的系统和dreamweaver 8就玩了一把dw的替换功能查找范围:整个当前本地站点搜索:源代码查找:\btppabs=&h[^&]*&替换:(为空)勾选:使用正则表达式点替换全部按钮OK~~搞定-- 例子2: 里面包含了括号 单引号等 查找:href=&javascript
目录 简介 优点 缺点 快捷键 注:由于Macromedia2005年被Adobe并购.故此软件现以为Adobe旗下产品. 简介 Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页. DREAMWEAVER.FLASH以及在DREAMWEAVER之后推出的针对专业网页图像设计的FIREWORKS,三者被MACRO
在运用Dreamweaver的过程中,熟练的使用快捷键,制作网页时能达到事半功倍的效果,在这里我们把DW的快捷方式整理出来,希望对大家熟练掌握Dreamweaver的知识有所帮助. 文件菜单 新建文档 Ctrl+N 打开一个 HTML文件 Ctrl+O或者将文件从[文件管理器]或[站点]窗口拖动到[文档]窗口中 在框架中打开 Ctrl+Shift+O 关闭 Ctrl+W 保存 Ctrl+S 另存为 Ctrl+Shift+S 检查链接 Shift + F8 退出 Ctrl+Q 编辑菜单 撤消 Ct
1.灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,也可以在状态栏中的元素列表上单击右键来调用Style.虽然不同的方法达到的效果看似一样,但实际上产生的HTML代码则完全不同.比如用Custon Style来调用Style标准,在网页代码中就生成一个〈span〉标签,这样的标签一多就会使文件十分臃肿而且影响浏览器的解析速度,所以我们应尽量使用状态栏中的元素列表来调用Style. 2.活用Format Tab
应用目标:制作文字特效 应用软件:Dreamweaver MX 操作难度:★★☆☆☆ 我们常用的网页制作工具Dreamweaver MX不仅可以制作网页,而且利用其中的CSS滤镜我们还可以对文字或图片进行简单的特效处理.下面我们就通过几个例子来看一看在Dreamweaver中是如何制作特效文字的. 光晕字 首先启动Dreamweaver,在新文档中插入一个1×1的表格,边框设置为0,然后在其中输入需要修饰的文字. 单击右面的浮动面板中的&设计→CSS样式&打开这一浮动面板. 面板右下角
好消息dreamweaver cs4之flash链接实现代码 现在的代码 &script src=&../../Scripts/swffix_modified.js& type=&text/javascript&&&/script& &object id=&FlashID& classid=&clsid:D27CDB6E-AE6D-11cf-96B8-& width=&qu
网上开始流传adobe dreamweaver cs4的破解以及一些真正的注册码.我们能够从中得到了一些破解的办法. 39-03 59-74 注:根据中华人民共和国法律的规定,本着学习的目的下载和使用一款软件是合法的. 网上开始流传adobe dreamweaver cs4的破解以及一些真正的注册码.我们能够从中得到了一些破解的办法. 一.使用真正的注册码. 网上开始流传一个新的注册码,1192-12
最新做东西,发现dreamweaver总提示在onLoad运行***,发生了一个JavaScript错误,原来解决方法那么简单,直接删除C:\Documents and Settings\Administrator\Application Data\Macromedia\Dreamweaver **文件夹即可. 错误提示类似: '在onChange运行Flash Button.htm时,发生了一个javascript错误' 在onLoad运行Design Notes_onOpen.htm时,发生
非常不错的利用dreamweaver 正则实现的替换.并且有返回值的调用. 例1: List-j/1100.aspx --& List.aspx?id=1100 List-j/(\d+).aspx --& List.aspx?id=$1 例2: List.aspx?id=1100 --& List-j/1100.aspx List.aspx\?jt=(\d+) --& List-j/$1.aspx (注:& List.aspx?id=1100&中出现&
Adobe Dreamweaver虽然非常好用,但它并不是唯一一个能够设计.开发.发布精彩网站的Web开发集成环境.我们的开源世界里有很多非常棒的可以完全替代Dreamweaver的各种功能的优秀Web开发工具,更重要的,是免费的.如果你正在寻找Dreamweaver的替代品,下面这8款软件你应该优先尝试一下.注意,没有先后顺序,并不是第一位就是最好的. 1.Quanta Plus Quanta Plus是一款Web集成开发环境,可以用来开发HTML, XHTML, CSS, XML, PHP
注:Dreamweaver8和Dreamweaver2004学习基础,一样,所以看这个一样学Dreamweaver8 Macromedia Dreamweaver MX 2004 (简称DW MX 2004),是Macromedia 最新开发的的HTML编辑器,用于对Web站点.Web页和 Web应用程序进行设计.编码和开发. DW MX 2004 包含有一个崭新.简洁.高效的界面,且性能也得到了改进.此外,还包含了众多新增的功能,改善了软件的易用性并使您无论处于设计环境还是编码环境都可以方便地
这篇文章主要介绍了dreamweaver 8实现Jquery自动提示的方法,需要的朋友可以参考下 最近在学习jQuery,然后在网上找到了自动提示的方法,记之. 1,首先下载jQuery_API.mxp这个扩展文件. 2,打开DW,点击命令--&扩展管理--&文件--&安装扩展, 3,找到你下载好的扩展文件,一直点击确定. 4,重启DW.这样,在编写的时候就会有自动提示了. 如果我们需要手动的调出自动提示,那么: 点击:编辑--&快捷键--&(选中菜单命令下的编辑)--&gt
为减少HTTP请求,我们往往需要合并和压缩多个JS和CSS文件,下面记录下网上关于实现这个功能的PHP源码以及开源项目Minify的使用方法 一.实现合并和压缩多个JS和CSS文件的代码 HTML: &link rel=&stylesheet& type=&text/css& href=&cssmin.php?get=base,style1,style2,global&path=css/&v=& /&
新版特点包括: 全新设计的用户界面 新的智能滤镜 新的自动对齐和混合工具 新的快速选定工具 新的黑白转换控制 增强的数码相机RAW文件支持 增强的克隆和修复操作 增强的曲线控制 增强的打印控制 增强的文件浏览模块Bridge. 新的程序包包括以下几个部分: 图像处理主程序Adobe Photoshop CS3 Internet图片发布程序Adobe ImageReady CS3 文件浏览程序Adobe Bridge CS3 设备管理程序Adobe Device Central CS3 图片银行A
Adobe Dreamweaver CS3破解补丁下载地址 http://www.jb51.net/softs/8530.html Adobe Dreamweaver CS4 官方英文┆ 简体中文┆繁体中文精简绿色免安装版 [11.22更新] Dreamweaver cs3 cpu使用100%的补丁下载 Adobe Dreamweaver CS3 官方简体中文版 [已修正CPU占用过高的问题] Dreamweaver CS3/Flash CS3/Photoshop CS3注册机[Adobe CS
Dreamweaver新增了SprySpry.Spry是Adobe推出的Ajax Framework(Spry DemoSpry Demo),它能与Dreamweaver无缝的整合,直接用拖拉的方式完成程序代码的编写. Adobe CS3(Creative Suite 3)包括: ·Adobe Photoshop CS3(不与ImageReady捆绑) ·Adobe Illustrator CS3 ·Adobe InDesign CS3(包括InCopy CS3) ·Adobe Acrobat
artDialog是一个轻巧且高度兼容的javascript对话框组件,可让你的网页交互拥有桌面软件般的用户体验 artDialog是一个轻巧且高度兼容的javascript对话框组件,可让你的网页交互拥有桌面软件般的用户体验. artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐--这一切全是XHTML+CSS原生实现. 为了方便使用,特别制作出artDialog Dr
1.从外部文档中粘贴时,如果不想要其格式,只要文字,可以使用&Edit-&paste as text&命令,而不要直接Ctrl+V. 2.&Command-&Add/Remove Netscape resize fix&是一个很有用的命令,它可以使在NC4.0中浏览页面时,改变窗口大小的时候页面不会花掉. 3.所有的head元素不可成为库组件,所有元素在被insert library时,其head关联属性被去掉,如style.CSS属性. 4.libra
dreamweaver cs3在新建文件时比以前版本有了较大改变,分为了四列形,有点类似于golive的样式了.最大的改观就算它能自动创建div+css布局,基本上涵盖了所有的常用布局形式.可以为我们设计页面时节省很大一部分时间,值得表扬. 下面的是自动生成的页面,里边还带注释呢 二列固定.左侧栏.标题和脚注 标题 Sidebar1 内容 此 div 上所显示的背景色刚好与内容等宽.如果您喜欢改用分界线,而且 #mainContent div 将始终包含较多的内容,请在 #
基于Adobe Dreamweaver CS3官方简体中文版制作,免激活,免序列号,光盘大小为90M. 安装说明:先卸载你原来的版本,然后全新安装此版即可.更新说明:修正个别机子CPU占用100%的BUG. 校验信息 文件: Dreamweaver_CS3_SC_V1.1.iso MD5: 3F068B3EDDD0A475DA058 CRC32: 84B5501E d0z
和Fireworks一样,Adobe公司并没有对Dreamweaver的界面进行升级
dreamweaver 安装Jquery智能提示,需要的朋友可以参考下. dreamweaver: 在http://xtnd.us/dreamweaver/jquery网址中下载一个名为jQuery_API.mxp的插件.在Dreamweaver中依次选择&命令&-&&扩展管理&-&&安装扩展&-&&jQuery_API.mxp&命令后,就会自动安装插件了.扩展安装成功后重启dreamweaver,新建空白页
近日筹建一小站,部分参考内容是反编译自某款软件的帮助文件,相关网页文件有好几百个,需要移除或修改其中的某些源代码,而某些操作是通常的批量查找替换所不能完成的,只好花些时间研究了 Dreamweaver 的高级搜索(搜索标签),详细选项非常多,理论上应可完成各种能够想得出的操作,确实非常实用非常强大! 批量移除链接 批量清除标签和内容 批量删除特定的段落 批量修改图片替代(说明)文字 当然,以上提及的几个应用,只是我此次所使用到的,Dreamweaver 的&搜索标签&功能远远不止这些,
1.灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,也可以在状态栏中的元素列表上单击右键来调用Style.虽然不同的方法达到的效果看似一样,但实际上产生的HTML代码则完全不同.比如用Custon Style来调用Style标准,在网页代码中就生成一个〈span〉标签,这样的标签一多就会使文件十分臃肿而且影响浏览器的解析速度,所以我们应尽量使用状态栏中的元素列表来调用Style. 2.活用Format Tab
除了Flash CS4,Adobe Creative Suite (CS4)发布了Dreamweaver/Fireworks/Soundbooth三个beta版本. Dreamweaver新功能:Live View (在real-world浏览器中显示web页面):Related Files(管理显示相关文件):Code Navigator(实时显示当前效果影响代码):CSS best practices:Adobe(R) AIR(TM) authoring support等功能.新版本越来越大,Drea
第一次打开Dreamweaver ,就会让你选择关联哪些文件,如果这次没有选,似乎就不能再次打开这个窗口进行文件关联了, 不过可以通过注册表修改,重新打开文件关联窗口. 打开HKEY_CURRENT_USER\Software\Adobe\Dreamweaver CS5\Settings,找到initialFileTypeDlg,把它的值修改为&FALSE&,重新打开Dreamweaver,文件关联窗口就会重新出现,也可以把一下内容复制到一个*.reg文件中,直接导入即可 Window
一.快速启动:Dreamweaver-html源代码自动格式化 把自己页面的源代码按照标准的格式整理好!也就是类似于: &table& &tr& &td& XXX &/td& &/tr& &/table& 的格式,标签必须对整齐. 首先在[编辑]|[首先参数]的&代码格式&中设置好格式: 第一行-缩进:勾选.可以选择使用Tab键或空格键填补缩进. 第二行-制表符大小:Tab键所占空位.这个只在DreamWeaver
本人是学C++出身,对于Java几乎不了解.一时心血来潮想学学android开发,于是下载了Eclipse,安装了SDK,有模有样的学习起来.也许是懒惰了,对于java一直提不起精神.国庆前夕,在网上闲逛,竟然发现了可以使用网页的开发模式进行移动应用开发.真高兴,不用学习java了,不用使用那个Eclipse了. 简单搜索了一下,终于确定使用Dreamweaver+Jquery mobile+Phonegap构建移动应用开发环境.Dreamweaver不用说了,早在大学期间就已经接触了,是老面孔
17:24 作者:奇客资讯 出处:天极网软件频道 责任编辑:王津 本文的作者是Tom Arah,一个著名的设计师: 我已经收到了很多关于我最近一期数码设计专栏的非常善意的电子邮件,但是我不得不承认,其中有一些让我感到些微不爽. 这些邮件是设计者们为了感谢我而发的,当他们从印刷物设计转移到网页设计的时候,我曾为他们指向了Dreamweaver的道路.他们已经对Dreamweaver心怀感激好多年了,它为他们的网页设计职业提供了最好的平台,感激是他们的心意. 但问题在于:Dre
关闭Dreamweaver删除Dreamweaver配置文件 如果是cs3以前的版本 删除C:/Documents and Settings/当前用户/Application Data/Macromedia/Dreamweaver对应版本/Configuration 如果是cs3以后(包括cs3)的版本 删除C:/Documents and Settings/Administrator/Application Data/Adobe/Dreamweaver对应版本/Configuration 重新
最近用Dreamweaver 8做网页的时候发现从代码视图状态到设计视图状态转换速度很慢,以前是好的,但是最近不知道为什么,只要一点击设计就像死机一样很久才能反映过来,在设计状态下修改页面也很慢,任何一点小的改动就要等很久,Dreamweaver 8标题栏显示未响应.这几天做东西痛苦死了,根本无法正常操作. 在网上找了半天也没有找到解决方法,后来终于找到了一个相关的帖子,大概意思是说Dreamweaver 8和瑞星有冲突,于是我就禁用了瑞星的所有监控,再打开Dreamweaver 8 操作网页,
新增功能 下面是 Adobe(R) Dreamweaver(R) CS4 最新功能的列表. 实时视图 Dreamweaver CS4 使您在保持直接访问代码的同时,能够使用新的&实时&视图在实际的浏览器条件下设计网页.对代码所做的更改会立即反映在呈现的显示中.请参阅在 Dreamweaver 中预览页面. 针对 Ajax 和 JavaScript 框架的代码提示 由于改进了对 JavaScript 核心对象和原始数据类型的支持,您现在可以更加快速准确地编写 JavaScript.您也可以通过组
20:49 需要做的唯一一步就是把下载下来的dll文件放到你的程序根目录替换同名文件.不管替换以前你是否输过序列号/程序是否过期,也不管是否有网络连接,是否在host中&阻止&adobe网站,该方法都管用. 需要注意的是,amtlib.dll分32位和64位版本.32位系统直接下载32位版本,64位系统选择性下载. 比如,我的Win7 x64安装了Photoshop CS5 x64版本,那么在我的 C:\Program Files (x86)\Adobe\Adob
文件菜单 新建文档 Ctrl+N 打开一个 HTML文件 Ctrl+O或者将文件从[文件管理器]或[站点]窗口拖动到[文档]窗口中 在框架中打开 Ctrl+Shift+O 关闭 Ctrl+W 保存 Ctrl+S 另存为 Ctrl+Shift+S 检查链接 Shift + F8 退出 Ctrl+Q 编辑菜单 撤消 Ctrl+Z 重复 Ctrl+Y 或 Ctrl+Shift+Z 剪切 Ctrl+X 或Shift+Del 拷贝 Ctrl+C 或Ctrl+Ins 粘贴 Ctrl+V 或Shift+Ins
[伍哥原创] Minify实现js和css文件的合并.压缩.缓存,这个带来了两个明显的好处: - HTTP请求减少了,服务器负载也相应降低 - 传输的数据字节少了,网络IO也相应降低 1,Minify的介绍 Minify其实是一个php项目,详细信息可以直接上 /p/minify/ 看一看,说得挺清楚的. 2,在PHP项目里面应用Minify 先下载 /files/minify-2.1.5.zip
资源 html ----&hypertext marked language ['ha?p??t?kst] 超文本标记语言 [.cn/eschool/zhuanti/dwvip/][1] html ----&hypertext marked language ['ha?p??t?kst] 超文本标记语言 xhtml----& 可扩展标记语言 www----&world wide web 万维网 第一章 软件简介与设置 [F4 显示隐藏浮动面板]
记录如何把非透明swf动画在dreamweaver做成透明flash动画方法.今天飞龙做公司网站,横幅广告条banners需处理成动画形式,但要求能简便地更换动画背景图片.如果每换一次背景图片都用flash8处理,那就太麻烦了,所以必须想办法做透明flash动画.思路是,把背景图片叠加在div层背景上:然后把透明flash动画插入该div层. 想到制作思路就寻解决方法.先在flash8里把已有背景图片层拿掉,但文件属性无法设置背景为透明,而alpha值只适合flash对象,不适合flash背景色
专辑:网页平面设计-带你轻松掌握dreamweaver视频教程 简介:网页平面设计-带你轻松掌握dreamweave 1 1. 项目介绍及背景设置 [Dreamweaver教程]
00:10 | 播放(13) | 评论(0) | 时长:19:04 2 2. logo与导航的制作 [Dreamweaver教程]
00:10 | 播放(8) | 评论(0) | 时长:22:57 3 3. 导航与banner的制作 [Dreamweaver教程] 2013-
重装win7 以后,什么都重装了.前段时间装了Dreamweaver CS4,装了也没进去看.今天打开就显示要激活,网上方法很多就不说了.比较纠结的是,装的中文版,菜单怎么还是英文的呢.百度.谷歌了一番,也算没白费功夫,最终让我找到解决办法了. 首先把Dreamweaver关了,再删除Dreamweaver个人配置文件.找到C:\Users\用户名\AppData\Roaming\Adobe\Dreamweaver CS4\zh_CN 删除(不放心的话改个名字).再打开Dreamweaver,菜
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.072 (s). 9 q(s)使用gradle打包apk已经成为当前主流趋势,我也在这个过程中经历了各种需求,并不断结合gradle新的支持,一一改进。在此,把这些相关的东西记录,做一总结。
1. 替换AndroidManifest中的占位符
defaultConfig{
manifestPlaceholders = [app_label:&@string/app_name&]
如果只想替换debug版本:
buildTypes {
manifestPlaceholders = [app_label:&@string/app_name_debug&]
更多的需求是替换渠道编号:
productFlavors {
// 把dev产品型号的apk的AndroidManifest中的channel替换dev
manifestPlaceholders = [channel:&dev&]
2. 独立配置签名信息
对于签名相关的信息,直接写在gradle当然不好,特别是一些开源项目,可以添加到local.properties:
RELEASE_KEY_PASSWORD=xxxx
RELEASE_KEY_ALIAS=xxx
RELEASE_STORE_PASSWORD=xxx
RELEASE_STORE_FILE=../.keystore/xxx.jks
然后在build.gradle中引用即可:
signingConfigs {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
为了更省事,小规模团队可考虑添加到gradle.properties或者另外再建立一个单独的properties,然后提交到版本库中,方便大家共享。
3. 多渠道打包
多渠道打包的关键之处在于,定义不同的product flavor, 并把AndroiManifest中的channel渠道编号替换为对应的flavor标识:
productFlavors {
manifestPlaceholders = [channel:&dev&]
manifestPlaceholders = [channel:&official&]
// ... ...
wandoujia{
manifestPlaceholders = [channel:&wandoujia&]
manifestPlaceholders = [channel:&xiaomi&]
manifestPlaceholders = [channel:&360&]
注意一点,这里的flavor名如果是数字开头,必须用引号引起来。
构建一下,就能生成一系列的Build Variant了:
devRelease
officialDebug
officialRelease
wandoujiaDebug
wandoujiaRelease
xiaomiDebug
xiaomiRelease
360Release
其中debug, release是gradle默认自带的两个build type, 下一节还会继续说明。
选择一个,就能编译出对应渠道的apk了。
4. 自定义Build Type
前面说到默认的build type有两种debug和release,区别如下:
// release版本生成的BuildConfig特性信息
public final class BuildConfig {
public static final boolean DEBUG =
public static final String BUILD_TYPE = &release&;
// debug版本生成的BuildConfig特性信息
public final class BuildConfig {
public static final boolean DEBUG =
public static final String BUILD_TYPE = &debug&;
现在有一种需求,增加一种build type,介于debug和release之间,就是和release版本一样,但是要保留debug状态(如果做过rom开发的话,类似于user debug版本),我们称为preview版本吧。
其实很简单:
signingConfigs {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
buildTypes {
manifestPlaceholders = [app_label:&@string/app_name_debug&]
manifestPlaceholders = [app_label:&@string/app_name&]
manifestPlaceholders = [app_label:&@string/app_name_preview&]
另外,build type还有一个好处,如果想要一次性生成所有的preview版本,执行assemblePreview即可,debug和releae版本同理。
5. build type中的定制参数
上面我们在不同的build type替换${app_label}为不同的字符串,这样安装到手机上就能明显的区分出不同build type的版本。
除此之外,可能还可以配置一些参数,我这里列几个我在工作中用到的:
manifestPlaceholders = [app_label:&@string/app_name_debug&]
applicationIdSuffix &.debug&
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [app_label:&@string/app_name&]
minifyEnabled true
shrinkResources true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [app_label:&@string/app_name_preview&]
applicationIdSuffix &.preview&
debuggable true // 保留debug信息
minifyEnabled true
shrinkResources true
signingConfig signingConfigs.preview
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
这些都用的太多了,稍微解释一下:
// minifyEnabled 混淆处理
// shrinkResources 去除无用资源
// signingConfig 签名
// proguardFiles 混淆配置
// applicationIdSuffix 增加APP ID的后缀
// debuggable 是否保留调试信息
// ... ...
6. 多工程全局配置
随着产品渠道的铺开,往往一套代码需要支持多个产品形态,这就需要抽象出主要代码到一个Library,然后基于Library扩展几个App Module。
相信每个module的build.gradle都会有这个代码:
compileSdkVersion 22
buildToolsVersion &23.0.1&
defaultConfig {
minSdkVersion 10
targetSdkVersion 22
versionCode 34
versionName &v2.6.1&
当升级sdk、build tool、target sdk等,几个module都要更改,非常的麻烦。最重要的是,很容易忘记,最终导致app module之间的差异不统一,也不可控。
强大的gradle插件在1.1.0支持全局变量设定,一举解决了这个问题。
先在project的根目录下的build.gradle定义ext全局变量:
compileSdkVersion = 22
buildToolsVersion = &23.0.1&
minSdkVersion = 10
targetSdkVersion = 22
versionCode = 34
versionName = &v2.6.1&
然后在各module的build.gradle中引用如下:
compileSdkVersion pileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId &com.xxx.xxx&
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
然后每次修改project级别的build.gradle即可实现全局统一配置。
7. 自定义导出的APK名称
默认android studio生成的apk名称为app-debug.apk或者app-release.apk,当有多个渠道的时候,需要同时编出50个渠道包的时候,就麻烦了,不知道谁是谁了。
这个时候,就需要自定义导出的APK名称了,不同的渠道编出的APK的文件名应该是不一样的。
// rename the apk with the version name
applicationVariants.all { variant -&
variant.outputs.each { output -&
output.outputFile = new File(
output.outputFile.parent,
&ganchai-${variant.buildType.name}-${variant.versionName}-${variant.productFlavors[0].name}.apk&.toLowerCase())
当apk太多时,如果能把apk按debug,release,preview分一下类就更好了(事实上,对于我这样经常发版的人,一编往往就要编四五十个版本的人,debug和release版本全混在一起没法看,必须分类),简单:
// rename the apk with the version name
// add output file sub folder by build type
applicationVariants.all { variant -&
variant.outputs.each { output -&
output.outputFile = new File(
output.outputFile.parent + &/${variant.buildType.name}&,
&ganchai-${variant.buildType.name}-${variant.versionName}-${variant.productFlavors[0].name}.apk&.toLowerCase())
现在生成了类似于ganchai-dev-preview-v2.4.0.0.apk这样格式的包了,preview的包自然就放在preview的文件夹下,清晰明了。
8. 混淆技巧
混淆能让反编译的代码可读性变的很差,而且还能显著的减少APK包的大小。
1). 第一个技巧
相信很多朋友对混淆都觉得麻烦,甚至说,非常乱。因为添加混淆规则需要查询官方说明文档,甚至有的官方文档还没说明。当你引用了太多库后,添加混淆规则将使一场噩梦。
这里介绍一个技巧,不用查官方文档,不用逐个库考虑添加规则。
首先,除了默认的混淆配置(android-sdk/tools/proguard/proguard-android.txt), 自己的代码肯定是要自己配置的:
## 位于module下的proguard-rules.pro
#####################################
######### 主程序不能混淆的代码 #########
#####################################
-dontwarn xxx.model.**
-keep class xxx.model.** { *; }
## 等等,自己的代码自己清楚
#####################################
########### 不优化泛型和反射 ##########
#####################################
-keepattributes Signature
接下来是麻烦的第三方库,一般来说,如果是极光推的话,它的包名是cn.jpush, 添加如下代码即可:
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
其他的第三库也是如此,一个一个添加,太累!其实可以用第三方反编译工具(比如jadx: ),打开apk后,一眼就能看到引用的所有第三方库的包名,把所有不想混淆或者不确定能不能混淆的,直接都添加又有何不可:
#####################################
######### 第三方库或者jar包 ###########
#####################################
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn com.squareup.**
-keep class com.squareup.** { *; }
-dontwarn com.octo.**
-keep class com.octo.** { *; }
-dontwarn de.**
-keep class de.** { *; }
-dontwarn javax.**
-keep class javax.** { *; }
-dontwarn org.**
-keep class org.** { *; }
-dontwarn u.aly.**
-keep class u.aly.** { *; }
-dontwarn uk.**
-keep class uk.** { *; }
-dontwarn com.baidu.**
-keep class com.baidu.** { *; }
-dontwarn com.facebook.**
-keep class com.facebook.** { *; }
-dontwarn com.google.**
-keep class com.google.** { *; }
## ... ...
2). 第二个技巧
一般release版本混淆之后,像友盟这样的统计系统如果有崩溃异常,会记录如下:
java.lang.NullPointerException: java.lang.NullPointerException
at com.xxx.TabMessageFragment$7.run(Unknown Source)
这个Unknown Source是很要命的,排除错误无法定位到具体行了,大大降低调试效率。
当然,友盟支持上传Mapping文件,可帮助定位,mapping文件的位置在:
project & module
& build & outputs & {flavor name} & {build type} & mapping.txt
如果版本一多,mapping.txt每次都要重新生成,还要上传,终归还是麻烦。
其实,在proguard-rules.pro中添加如下代码即可:
-keepattributes SourceFile,LineNumberTable
当然apk包会大那么一点点(我这里6M的包,大个200k吧),但是再也不用mapping.txt也能定位到行了,为了这种解脱,这个代价我个人觉得是值的,而且超值!
9. 动态设置一些额外信息
假如想把当前的编译时间、编译的机器、最新的commit版本添加到apk,而这些信息又不好写在代码里,强大的gradle给了我创造可能的自信:
defaultConfig {
resValue &string&, &build_time&, buildTime()
resValue &string&, &build_host&, hostName()
resValue &string&, &build_revision&, revision()
def buildTime() {
return new Date().format(&yyyy-MM-dd HH:mm:ss&)
def hostName() {
return System.getProperty(&user.name&) + &@& + InetAddress.localHost.hostName
def revision() {
def code = new ByteArrayOutputStream()
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = code
return code.toString()
上述代码实现了动态的添加了3个字符串资源: build_time、build_host、build_revision, 然后在其他地方可像如引用字符串一样使用如下:
// 在Activity里调用
getString(R.string.build_time)
// 输出 17:01
getString(R.string.build_host)
// 输出jay@deepin,这是我的电脑的用户名和PC名
getString(R.string.build_revision) // 输出3dd5823, 这是最后一次commit的sha值
这个地方,如何从命令行读取返回结果,很有意思。
其实这段代码来自我学习VLC源码时偶然看到,深受启发,不敢独享,特摘抄在此。
vlc源码及编译地址:, 有兴趣可以过去一观。
10. 给自己留个&后门&: 点七下
为了调试方便,我们往往会在debug版本留一个显示我们想看的界面(记得之前微博的一个iOS版本就泄露了一个调试界面),如何进入到一个界面,我们可以仿照android开发者选项的方式,点七下才显示,我们来实现一个:
private int clickCount = 0;
private long clickTime = 0;
sevenClickView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (clickTime == 0) {
clickTime = System.currentTimeMillis();
if (System.currentTimeMillis() - clickTime & 500) {
clickCount = 0;
clickCount++;
clickTime = System.currentTimeMillis();
if (clickCount & 6) {
// 点七下条件达到,跳到debug界面
release版本肯定是不能暴露这个界面的,也不能让人用am在命令行调起,如何防止呢,可以在release版本把这个debug界面的exported设为false。
11. 自动化构建
如何使用jenkins打包android和ios,并上传到蒲公英平台,这个可以参考我的另外一篇文章专门介绍: ,不过,这篇文章还没写完,实际上在公司里已经一直在用了,哪天心情好了总会写完的,这里不再赘述。
android打包因为groovy语言的强大,变的强大的同时必然也变的复杂,今天把我经历的这些门道拿出来说道一下,做一个小小的总结,后续有更新我还会添加。
同步首发:
阅读(...) 评论()}

我要回帖

更多关于 英文里有没有双引号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信