百度App技术

百度App iOS工程化实践: EasyBox破冰之旅

半腔热情 提交于 2020-04-13 17:32:36
【今日推荐】:为什么一到面试就懵逼!>>> 本文作者:yanxin1563 本文作者: Yunpeng-基础技术 前言 百度App从单一的搜索工具发展到今天以搜索和Feed流为双引擎的综合性内容消费服务平台,其复杂程度已然不可同日而语矣。 作为一个日活过亿的超级App,业务规模庞大,相关技术人员超过千人,客户端支持主流的移动技术,涉及近百业务方,技术形态复杂,各种组件近三百个,代码百万量级,由此带来的工程化问题是技术团队的一个极大挑战。 项目的膨胀导致了很多不起眼的小问题被无限放大,组件管理不规范、编译时间长、工程文件合并冲突、Xcode默认非彻底编译隔离等等问题,导致开发人员在开发环境上耗费了大量时间。目前业界较流行的工具对于大规模工程的支持力度相对较弱,实践起来总是有些掣肘,难以达到理想状态。 EasyBox的诞生,就是致力于为超级App量身打造一套现代、高效、优雅的研发工具链。 这篇文章的主要目的是 站在工具链的角度 上,分享一下我们在实践工程化过程中一些经验。 概述 EasyBox主体由工程组装器(Installer)、多仓库管理工具(MGit)、二进制管理工具(LFS)三部分构成,分别负责工作区的构建(组件依赖分析、工程的生成与组合)、源码仓库的管理以及二进制的管理。EasyBox架构图: 由多仓库管理工具克隆所需仓库源码,由二进制管理工具下载二进制包

一种简单优雅的TextView行间距适配方案

爱⌒轻易说出口 提交于 2020-04-09 06:14:50
本文作者:yanxin1563 原创 zhanghao 背景 Android的屏幕碎片化严重,各种屏幕分辨率层出不穷,而在不同分辨率的屏幕上显示出一致的效果,是百度App的研发团队和视觉团队共同追求的目标。 在百度App的Android开发中,TextView的行间距屏幕适配问题在研发和视觉之间纠缠已久。 该图为热议页面的图文模板在三款设备上的显示效果。可以看到TextView的行间距在三款设备下的一致性表现不尽如人意,而这已成为日常UI开发以及视觉review过程中的一大痛点,降低了大家的工作效率。 下面将探索一种简单优雅的的TextView行间距适配方案。 分析 先来分析下TextView在不同设备上行间距表现不一致的原因。百度App的UI团队使用Sketch工具来进行UI设计以及UI review,因此本文接下来字体尺寸的测量都借助Sketch工具完成。 先看下面一个简单的xml布局: <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="虽然此视图的实际布局取决于其父视图和任何同级视图中的其他属性。虽然。。。" android:textSize="16dp"/>

一种简单优雅的TextView行间距适配方案

元气小坏坏 提交于 2020-04-08 01:21:15
本文作者:yanxin1563 原创 zhanghao 背景 Android的屏幕碎片化严重,各种屏幕分辨率层出不穷,而在不同分辨率的屏幕上显示出一致的效果,是百度App的研发团队和视觉团队共同追求的目标。 在百度App的Android开发中,TextView的行间距屏幕适配问题在研发和视觉之间纠缠已久。 该图为热议页面的图文模板在三款设备上的显示效果。可以看到TextView的行间距在三款设备下的一致性表现不尽如人意,而这已成为日常UI开发以及视觉review过程中的一大痛点,降低了大家的工作效率。 下面将探索一种简单优雅的的TextView行间距适配方案。 分析 先来分析下TextView在不同设备上行间距表现不一致的原因。百度App的UI团队使用Sketch工具来进行UI设计以及UI review,因此本文接下来字体尺寸的测量都借助Sketch工具完成。 先看下面一个简单的xml布局: <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="虽然此视图的实际布局取决于其父视图和任何同级视图中的其他属性。虽然。。。" android:textSize="16dp"/>

一种简单优雅的TextView行间距适配方案

旧街凉风 提交于 2020-04-07 05:34:51
本文作者:yanxin1563 原创 zhanghao 背景 Android的屏幕碎片化严重,各种屏幕分辨率层出不穷,而在不同分辨率的屏幕上显示出一致的效果,是百度App的研发团队和视觉团队共同追求的目标。 在百度App的Android开发中,TextView的行间距屏幕适配问题在研发和视觉之间纠缠已久。 该图为热议页面的图文模板在三款设备上的显示效果。可以看到TextView的行间距在三款设备下的一致性表现不尽如人意,而这已成为日常UI开发以及视觉review过程中的一大痛点,降低了大家的工作效率。 下面将探索一种简单优雅的的TextView行间距适配方案。 分析 先来分析下TextView在不同设备上行间距表现不一致的原因。百度App的UI团队使用Sketch工具来进行UI设计以及UI review,因此本文接下来字体尺寸的测量都借助Sketch工具完成。 先看下面一个简单的xml布局: <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="虽然此视图的实际布局取决于其父视图和任何同级视图中的其他属性。虽然。。。" android:textSize="16dp"/>

一种简单优雅的TextView行间距适配方案

冷暖自知 提交于 2020-04-06 19:23:23
本文作者:yanxin1563 原创 zhanghao 背景 Android的屏幕碎片化严重,各种屏幕分辨率层出不穷,而在不同分辨率的屏幕上显示出一致的效果,是百度App的研发团队和视觉团队共同追求的目标。 在百度App的Android开发中,TextView的行间距屏幕适配问题在研发和视觉之间纠缠已久。 该图为热议页面的图文模板在三款设备上的显示效果。可以看到TextView的行间距在三款设备下的一致性表现不尽如人意,而这已成为日常UI开发以及视觉review过程中的一大痛点,降低了大家的工作效率。 下面将探索一种简单优雅的的TextView行间距适配方案。 分析 先来分析下TextView在不同设备上行间距表现不一致的原因。百度App的UI团队使用Sketch工具来进行UI设计以及UI review,因此本文接下来字体尺寸的测量都借助Sketch工具完成。 先看下面一个简单的xml布局: <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="虽然此视图的实际布局取决于其父视图和任何同级视图中的其他属性。虽然。。。" android:textSize="16dp"/>

百度App iOS工程化实践: EasyBox破冰之旅

半世苍凉 提交于 2020-04-05 22:32:58
本文作者:yanxin1563 本文作者: Yunpeng-基础技术 前言 百度App从单一的搜索工具发展到今天以搜索和Feed流为双引擎的综合性内容消费服务平台,其复杂程度已然不可同日而语矣。 作为一个日活过亿的超级App,业务规模庞大,相关技术人员超过千人,客户端支持主流的移动技术,涉及近百业务方,技术形态复杂,各种组件近三百个,代码百万量级,由此带来的工程化问题是技术团队的一个极大挑战。 项目的膨胀导致了很多不起眼的小问题被无限放大,组件管理不规范、编译时间长、工程文件合并冲突、Xcode默认非彻底编译隔离等等问题,导致开发人员在开发环境上耗费了大量时间。目前业界较流行的工具对于大规模工程的支持力度相对较弱,实践起来总是有些掣肘,难以达到理想状态。 EasyBox的诞生,就是致力于为超级App量身打造一套现代、高效、优雅的研发工具链。 这篇文章的主要目的是 站在工具链的角度 上,分享一下我们在实践工程化过程中一些经验。 概述 EasyBox主体由工程组装器(Installer)、多仓库管理工具(MGit)、二进制管理工具(LFS)三部分构成,分别负责工作区的构建(组件依赖分析、工程的生成与组合)、源码仓库的管理以及二进制的管理。EasyBox架构图: 由多仓库管理工具克隆所需仓库源码,由二进制管理工具下载二进制包,然后组装器根据描述表生成对应工程