热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android产品研发系列

转载请标明出处:一片枫叶的专栏最近的Android产品研发系列主要讲解的是Android产品研发过程中涉及到的技术,技巧,实践等。前面我们讲解了Android源码系列的文章可

转载请标明出处:一片枫叶的专栏

最近的Android产品研发系列主要讲解的是Android产品研发过程中涉及到的技术,技巧,实践等。前面我们讲解了Android源码系列的文章  可参考:Android源码解析–>总结(持续更新中),源码系列的文章东西比较多比较复杂,并且一些东西还没有讲完,这里已经更新了30篇了,后续的东西一定会更新的。考虑一直讲源码系列可能看的比较累,这里就有了产品研发系列的文章。本个系列的文章主要是讲解Android产品研发过程中一些需要注意的技术技巧与实践。其主要面对产品研发,对App稳定性,友好型,兼容性要求较高的App。

下面就是我准备讲解的一些产品研发系列的内容:
(其中红色字体的文章是我已经写完的部分,其他的是我还没写但是打算写的东西,这些东西大概覆盖了Android产品研发过程中涉及到的各个方面,当然了有可能后续也会有所补充)


Android产品研发(一)–>实用开发规范

本文中选择将开发规范作为这个系列的第一篇文章,就是个人感觉产品研发过程中,开发规范真的很重要,很重要,非常重要(重要的事情说三遍),一个好的开发规范可以让团队中的人对他人的代码更熟悉,新人也可以更好的了解产品的业务逻辑。开发规范并不是一个死的一成不变的,每个团队可能都有自己的开发规范,只要是适合团队的开发规范就是最好的开发规范…

Android产品研发(二)–>启动页优化

这篇文章中我们主要介绍一下启动页的优化,关于启动页的优化是UE方面的内容了,一个很慢的启动页很容易让用户觉得受不了,进而“逃离”App的,所以若想产品有更好的用户体验,做一些启动页的优化是一个不错的选择。这里我们简单介绍一下我在实践中对启动页是如何优化的…

Android产品研发(三)–>基类Activity

在实际的Android产品研发中,一般的我们在写Activity的时候都会继承于一个基类Activity,该Activity是所有的Activity的基类。在该基类中我们主要用于重写一些共有的逻辑。好处是显而易见的对于一些Activity的共有逻辑我们不必要在每个Activity中都重新写一遍,只需要在基类Activity中写一遍就好了…

Android产品研发(四)–>减小Apk大小

随着移动技术的深入发展,各种炫酷效果的更新,在我们追求UI与UE的同时一个不如忽视的问题逐渐暴露出来,那就是apk文件越来越大,可能有的童鞋会说现在都是wifi环境,apk文件增大几M不是什么大不了的问题,这其实也是有一定道理的,但是作为开发人员的我们这绝不是我们认为可以忽略这个问题的理由。优化Apk大小也是优化我们App体验的一个重要方面,虽然可能它不是那么的重要…

Android产品研发(五)–>多渠道打包

国内的Android开发者还是很苦逼的,由于众所周知的原因,google play无法在国内打开(翻墙的就不在考虑之内了),所以Android系的应用市场,群雄争霸。后果就是国内存在着有众多的应用市场,产品在不同的渠道可能有这不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包…

Android产品研发(六)–>Apk混淆

本文主要讲解Apk的混淆,这里的混淆分为两种代码混淆和资源文件混淆。实际的产品研发中为了防止自己的劳动成果被别人窃取,混淆代码能有效防止apk文件被反编译,进而查看源代码。说来惭愧,作为互联网创业公司的我们也确实对竞品Apk反编译研究过,如果Apk混淆之后确实对理解源码的业务流程造成了困扰,这也从侧面说明了Apk混淆的重要性…

Android产品研发(七)–>Apk热修复

去年一整年Android社区中刮过了一阵热修复的风,各大厂商,逼格大牛纷纷开源了热修复框架,恩,产品过程中怎么可能没有bug呢?重新打包上线?成本太高用户体验也不好,咋办?上热修复呗。好吧,既然要开始上热修复的功能,那么就得调研一下热修复的原理。下面我将分别讲述一下热修复的原理,各大热修复框架的比较,以及自身产品中热修复功能的实践

Android产品研发(八)–>App数据统计

文本将要介绍一下Android产品中另一项基础功能-数据统计。App数据统计的意义在于通过统计用户的行为方式有针对性的更新展示算法,根据用户的行为习惯更新产品功能等等,具体而言当我们开发好App后就会把它发到应用市场上,但是目前有很多的应用市场(如,豌豆荚,应用宝,安卓市场等),那么问题来了,假如我们想统计我们开发的应用的下载次数,就必须使用统计吧,而且它不仅可以统计我们的应用的下载量,启动次数,还可以统计页面访问量、查看程序的bug等等,所以相对于项目而言产品由于存在着持续的迭代与用户体验,所以做好数据统计工作是一项必不可少的工作…

Android产品研发(九)–>App网络传输协议

本文将要介绍的是App的网络传输协议。App与服务器交互就会涉及到信息的交换,而信息的交互就必然需要一套完整的数据协议。这里首先需要明确一点的是什么是网络传输协议呢?这里首先套用一段百度百科的定义…

Android产品研发(十)–>不使用静态变量保存数据

本文讲解的其实并不是一个技术方面,而是一个Android产品研发过程中的技巧:尽量不使用静态变量保存核心数据。这是为什么呢?这是因为Android系统中的应用进程并不是安全的,包括application对象、静态变量在内的进程级别变量并不会一直呆着内存里面,它会被kill掉,它真的有可能会被kill掉,真的真的,重要的事情说三遍。与大家普遍的看法不同之处在于,当进程被干掉之后,实际上app不会重新开始启动。Android系统会创建一个新的Application对象,然后启动上次用户离开时的activity以造成这个app从来没有被kill掉得假象。而这时候静态变量等数据由于进程已经被杀死而被初始化,所以就有了我们的不推荐在静态变量(包括Application中保存全局数据静态数据)的观点…

Android产品研发(十一)–>使用scheme实现页面跳转

本文讲解的是一种App内页面跳转协议,这里的跳转包括应用内跳转、H5与Native跳转,服务器通知客户端如何跳转等。在讲解应用内跳转协议之前我们先讲解一下H5与Native相互跳转的相关知识点…

Android产品研发(十二)–>App长连接实现

本文中我们将讲解一下App的长连接实现。一般而言长连接已经是App的标配了,推送功能的实现基础就是长连接,当然了我们也可以通过轮训操作实现推送功能,但是轮训一般及时性比较差,而且网络消耗与电量销毁比较多,因此一般推送功能都是通过长连接实现的…

Android产品研发(十三)–>App轮训操作

本文将讲解app端的轮询请求服务,一般而言我们经常将轮询操作用于请求服务器。比如某一个页面我们有定时任务需要时时的从服务器获取更新信息并显示,比如当长连接断掉之后我们可能需要启动轮询请求作为长连接的补充等,所以这时候就用到了轮询服务…

Android产品研发(十四)–>App升级与更新

本文将讲解app的升级与更新。一般而言用户使用App的时候升级提醒有两种方式获得:一种是通过App Store获取、一种是打开应用之后提醒用户更新升级,而更新操作一般是在用户点击了升级按钮之后开始执行的,这里的升级操作也分为两种形式:一般升级、强制升级…

Android产品研发(十五)–>内存对象序列化

本文将讲解Android中数据传输中需要了解的数据序列化方面的知识,我们知道Android开发过程中不同Activity之间传输数据可以通过Intent对象的put**方法传递,对于java的八大基本数据类型(char int float double long short boolean byte)传递是没有问题的,但是如果传递比较复杂的对象类型(比如对象,比如集合等),那么就可能存在问题,而这时候也就引入了数据序列化的概念…

Android产品研发(十六)–>开发者选项

本文主要介绍Android开发中常常涉及到但又不是被人重视知识点:开发者选项。主要涉及到如何打开开发者模式,开发者选项中有哪些操作菜单以及各自的作用,如何清除手机数据,清除手机数据具体清除那些数据等等…

Android产品研发(十七)–>Hybird开发

本文将介绍Android中hybrid开发相关的知识点。hybrid开发实际上是混合开发的意思,这里的混合是H5开发与Native开发混合的意思。下面的文章中我们将逐个介绍一下hybrid开发的概念、hybrid开发的优势、Android中如何实现hybrid开发、简单的hybrid开发的例子,以及在产品实践中对hybrid开发的应用,希望通过本篇文章的介绍让您能够对Android中的hybrid开发有一个基本的认识…

Android产品研发(十八)–>webview问题集锦

本文中我们将介绍一下Android中webview在使用过程中会遇到的一些问题。这些问题主要是webview在使用过程中我已经趟过的坑,希望通过这篇文章的介绍能够帮助大家更好的使用webview…

Android产品研发(十九)–>Android studio中的单元测试

本文我们将讲解如何在Android studio中进行单元测试。在Android开发项目中,经常会进行测试操作,而一次又一次的运行模拟器,浪费了大量时间,降低了工作效率降低,虽然最新的Android studio中提供了instance run功能,来提高Android studio的编译速度,但是我们还是需要了解Android studio的单元测试功能,其可以很方便的为我们提供功能性测试,所以如果项目中有用到测试数据的时候,可以先进行单元测试,如果可以正常输出数据了,然后再到UI中执行,这样会提高一些工作效率…

Android产品研发(二十)–>代码Review

本文我们将讲解Android中的代码Review。良好的产品开发迭代过程中,代码Review是一个必不可少的步骤,通过代码Review能够提高产品质量,增强团队成员之间的沟通,提高开发效率。所以团队开发活动中定时进行代码Review就显得很有必要了…

Android产品研发(二十一)–>Android中的UI优化

本文我们将讲解一下Android UI优化方面的知识。Android系统的优化分为好多方面:比如性能优化,UI优化,资源文件优化等等,这里我们先暂时讲解Android UI优化方面的知识点…

Android产品研发(二十二)–>Android实用调试技巧

本文我们将讲解Android中的调试技巧。程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。在Android开发过程中熟练的使用调试技巧是一个很重要的方面。Android的调试技巧包括熟练使用Android中的日志API,自定义Android日志框架,通过gradle配置调试日志,Android studio的调试技巧等等。通过对本文的学习我们能够对Android中调试技巧有一个大概的了解…

Android产品研发(二十三)–>Android中保存静态秘钥实践

本文我们将讲解一个Android产品研发中可能会碰到的一个问题:如何在App中保存静态秘钥以及保证其安全性。许多的移动app需要在app端保存一些静态字符串常量,其可能是静态秘钥、第三方appId等。在保存这些字符串常量的时候就涉及到了如何保证秘钥的安全性问题。如何保证在App中静态秘钥唯一且正确安全,这是一个很重要的问题,公司的产品中就存在着静态字符串常量类型的秘钥,所以一个明显的问题就是如何生成秘钥,保证秘钥的安…

Android产品研发(二十四)–>内存泄露场景与检测

最近的Android产品研发系列主要讲解的是Android产品研发过程中涉及到的技术,技巧,实践等。前面我们讲解了Android源码系列的文章 可参考:Android源码解析–>总结(持续更新中),源码系列的文章东西比较多比较复杂,并且一些东西还没有讲完,这里已经更新了30篇了,后续的东西一定会更新的。考虑一直讲源码系列可能看的比较累,这里就有了产品研发系列的文章。本个系列的文章主要是讲解Android产品研发过程中一些需要注意的技术技巧与实践。其主要面对产品研发,对App稳定性,友好型,兼容性要求较高的App…

Android产品研发(二十五)–>MVC/MVVM/MVP简单理解

本文我们将讲解Android开发中常常涉及到的MVC/MVP/MVVM等模式的基本概念。许多童鞋对Android开发中涉及到的MVC、MVP、MVVM这三种模式不是太清楚,我认为无论是MVC、MVP亦或者是MVVM都是一种代码组织方式,通过这种代码组织方式能够让代码更有层次感,各个层次主要负责各自的工作,这样降低了整个项目的代码逻辑耦合度与可读性…



Android产品研发之Https请求;
Android产品研发之拦截App请求;
Android产品研发之定位服务;
Android产品研发之持续集成;
Android产品研发之常用框架;
Android产品研发之git使用;
Android产品研发之产品加固与加密;
Android产品研发之屏幕适配;
Android产品研发之Fragment化;
Android产品研发之基础组件SDK化;
Android产品研发之React Native开发;
Android产品研发之RxAndroid;
Android产品研发之性能优化;
Android产品研发之控件MD化;

作为IT人员我还是比较强调做产品而不是做项目的,因为做项目都是跟着项目走许多东西做完了也就做完了,没有深入进去,没有持续的迭代与优化,相当于做一件事做了N遍,这样对个人很难有技能上的提高。持续的迭代一个产品不但能够在深度也能在广度上提高自己,如果可以的话强烈建议大家持续的迭代某一个产品。

这里多说几句,这里只是在技术上关于Android产品研发的一些tip,在产品上我们同样的是需要有自己的思考。为了让App更好用,更好看,更简单,多多的站在用户的角度上思考,这不但是产品经理的任务,同样也是我们程序员需要做的。只有在和用户交流的时候,你才会发现,你觉得很好的东西用户可能根本不会用,有时候,专业术语导致用户完全不理解。按钮很明显但用户完全没看到,为什么?因为用户的注意力被其他功能给扰乱了,这些问题都是产品的复杂造成的。说这么多就是想跟大家说做产品需要的时候更多的需要从用户的角度考虑问题,而不是站在你的角度想用户的问题,有时候你所想的问题可能并不是用户想要的。


本系列文章以同步至github中:https://github.com/yipianfengye/AndroidProject,欢迎star和follow

对产品研发技术,android源码实践,Github项目解析方面感兴趣的同学可以参考我的:

  • Android产品研发系列

  • Android源码解析系列

  • Github项目解析系列

  • Android tips知识点系列



推荐阅读
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了在C#中SByte类型的GetHashCode方法,该方法用于获取当前SByte实例的HashCode。给出了该方法的语法和返回值,并提供了一个示例程序演示了该方法的使用。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
author-avatar
Jessica
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有