写这篇文章,也是缘于运营的一个需求:在 App 运营过程中,会有大量的推广短信,里面附有链接,目的是引导用户参与活动。如果用户手机没有安装我们的 App 就引导其去下载页,如果用户已经安装了我们的 App 就直接在 App 中打开对应的活动。
导语:在自定义lint规则的实践过程中,我们发现lint扫描的效率非常低,比如在项目中进行一次lint全量扫描,平均需要5分钟左右,而且这是在仅扫描自定义规则的情况下。我们将lint扫描集成到了流水线中,所有的MR操作都会触发扫描,并block住MR的流程。经常会发现这样一种情况,某个MR仅仅修改了一行代码,却仍要扫瞄整个项目,这会严重影响MR的效率。所以,大部分情况下并不需要进行lint的全量扫描,我们更关心的是新增代码是否存在问题。于是,我们需要探索一种lint增量扫描的解决方案。 前言 先来说说
在移动开发中,网络层面的监控一直是非常有必要的,比如统计网络接口的失败率、重定向网络请求、网络Request增加公共header头、实现动态域名等等。经常会遇到App某些域名因为一些原因在某些地区DNS解析异常,因此我们需要将这些有问题的域名进行动态替换,让用户可以正常的访问接口,正常使用我们的App。
为本机应用程序支持 OAuth 时要牢记的一些特殊注意事项。与基于浏览器的应用程序一样,本机应用程序不能使用客户端机密,因为这将要求开发人员在应用程序的二进制分发中传送机密。事实证明,反编译和提取秘密相对容易。因此,本机应用程序必须使用不需要预注册客户端密码的 OAuth 流程。
一、错误记录 报错信息 : 网页无法打开 位于 baiduboxapp://speech/startVoiceSearch?¶ms={“voiceSource”:“home_naver_lo
描述:通过获取沙盒H5路径直接加载 将h5文件存入沙盒,webview加载本地文件URL 。
重定向 URL 是 OAuth 流程的关键部分。用户授权应用成功后,授权服务器会将用户重定向回应用。由于重定向 URL 将包含敏感信息,因此服务不会将用户重定向到任意位置至关重要。
自定义 API,顾名思义为开发者为满足自身需求而自己创建的一个 API。那么自己创建的这个 API 能起到什么效果和作用呢。
每个客户端都会有自己的 UA (userAgent)标识,可以用 JavaScript 获取客户端标识。
与单页应用程序一样,移动应用程序也无法维护客户机密。因此,移动应用程序还必须使用不需要客户端密码的 OAuth 流程。当前的最佳做法是将授权流程与 PKCE 一起使用,同时启动外部浏览器,以确保本机应用程序无法修改浏览器窗口或检查内容。
原需求,在一个伸缩列表中,自定义LinearLayout继承LinearLayout动态添加布局。
自2018年我开源了XUpdate之后,至今已迭代了14个版本,月下载量达7k+,Github的star量也已经有1.1k+.
前些日子,公司安卓应用的魔窗出现问题,需要重新写过。于是,就有了此篇魔窗HelloWord。 没有包含微信分享,如果有微信分享,无非就是再集成微信分享,将分享链接改为魔窗的mLink深度链接即可
小伙伴们,在上文中我们介绍了Android视图组件ProgressDialog,本文我们继续盘点,介绍一下视图控件的WebView。
Binding adapters 可以作为一个设置某个值的框架来使用,databinding 库可以允许指定具体的方法来进行相关值的设置,在该方法中可以做一些处理逻辑,Binding adapters 会最终给你想要的结果,那么当我们在布局文件中使用 databinding 绑定数据时是如何调用对应的属性方法呢?
Android应用/组件间通信有一种方式是intent,应用可以注册intent filter声明自己对什么样的intent感兴趣,其它应用发送intent时通过系统级广播传递过来,如果与预先注册的intent filter匹配,应用将收到该intent(无论应用是否正在运行,都会被“唤醒”,也就是隐式启动Activity),取出intent携带的数据,做进一步处理
移动研发火热不停,越来越多人开始学习Android 开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。市面上也多是谈论知识图谱,缺少体系和成长节奏感,特此编写一份 Android 研发进阶之路,希望能对大家有所帮助。
首先我们来分析写这个界面,列出几个关键词:列表、Header、下拉刷新、上拉加载;如果使用Android原生开发的话我们会使用到列表组件、然后下拉刷新和上拉加载使用自定义控件的方式实现。
在 自定义 Gradle 插件 编译后生成的 pom 文件 , 存放在 " build/publications/plugin/pom-default.xml " 文件中 ,
原文地址: http://www.jianshu.com/p/4bbecd0bb027
目录介绍 01.前沿说明 1.1 案例展示效果 1.2 该库功能和优势 1.3 相关类介绍说明 02.如何使用 2.1 如何引入 2.2 最简单使用 2.3 常用api 2.4 使用建议 03.js调用 3.1 如何使用项目js调用 3.2 js的调用时机分析 04.问题反馈 4.0.1 视频播放宽度超过屏幕 4.0.2 x5加载office资源 4.0.3 WebView播放视频问题 4.0.4 无法获取webView的正确高度 4.0.5 使用scheme协议打开链接风险 4.0.6 如何处理加载错误
Flutter推出来已经有一段时间了,前一阵Google IO大会后发布了Beta3。基于Flutter的 app可以一次编写,同时在Android和iOS平台上跑,并且能给用户带来完全原生的体验。我们都知道跨平台开发还有Hybrid,React Native以及Weex等方案,这些解决方案都是从Web开发的角度向Native开发演进,其技术基础都是HTML、CSS和Javascript等Web技术,对于没有接触过Web开发的Native app程序员来讲,门槛是比较高的。而Flutter给我的感觉是从Native开发向Web开发演进,Native app程序员应该能比较舒服的入门。
在 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑦ ( 登录 Maven 私服 | Maven 私服初始化设置 | 创建 Maven 仓库 ) 博客中 , 在 Maven 私服中创建了 Maven 仓库 " MyRepository “ , 地址为 ” http://localhost:8081/repository/MyRepository/ " ;
直接在iconfont上生成的代码,url链接里是以 // 开头的,不是完整的网址路径。 解决方案:在字体图标引用路径前面要加上https:,否则在app上不显示
Android Lint是Google提供的静态代码检查工具,使用Lint可以对Android项目源码进行扫描和检查,发现代码潜在的问题,或者辅助开发者统一编码规范。
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。
公司为政府做的App开发完了,需要上一些手段保证安全。这样客户才放心嘛。 防止第三方反编译篡改应用,防止数据隐私泄露,防止二次打包欺骗用户。
解析某博客或者书籍网站数据时:已知它的书籍首页URL地址,这个首页含有它的书籍目录及其章节的链接,APP想拉取它的目录节点,然而,该目录页面里面的章节可能有重复的内容,那么解析后,我们向内存中保存章节信息的时候,需要过滤。
在这个流量为王的互联网背景下,移动端的H5页面显然在导流上承担着重要作用,在H5页面上,我们对引流的需求有两种:
我们正在 Android 平台上进行多项变更来增强用户隐私和平台安全性,旨在为用户提供更安全的体验。以 Android 11 (API 级别 30) 或更高版本为目标的应用默认将只能获取 过滤后的已安装应用列表。如需访问过滤后列表以外的应用,则需要在应用内的 Android manifest 中使用 元素声明需要与之交互的应用。本文将介绍适应此特性的最佳实践。
先说一下背景,目前有需求从外部包括其他应用和WEB跳转到我们自己的APP,就这么个简单的需求……
目录介绍 01.前沿说明 1.1 案例展示效果 1.2 该库功能和优势 1.3 相关类介绍说明 1.4 WebView知识点 02.如何使用 2.1 如何引入 2.2 最简单使用 2.3 常用api 2.4 使用建议 2.5 异常状态类型区分 2.6 该库流程图 03.js调用 3.1 Java调用js方法 3.2 js调用java方法 3.3 js的调用时机分析 3.4 js交互原理分析 04.问题反馈 05.webView优化 06.关于参考 07.其他说明介绍 01.前沿说明 基于腾讯x5开源库,提高
Https HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间
视频上很容易就可以做到倍速播放,一般的视频格式都是每秒固定的帧数,按比例跳帧就可以了。音频上其实也可以用这种方式来直接删除一些周期,因为电脑里的音频也是数字化离散化地储存的。但是为了使声音不失真,应该都用了稍复杂一点的算法的,比方说把相邻时钟周期内的声音电平信号取平均,或者用高斯平均值代替原信号,再精细点可以自适应地在音调信号比较丰富的地方设置比较高的权重来尽量少压缩保持音色,总之有很多种方法都可以做到啦。因为没有关注过这个,所以并不知道在软件里具体是怎么实现的,但是数字信号的缩放、滤波这些算法应该都差不多是这么做的,音频的加速也不像是需要使用更复杂的非线性自适应滤波的样子。
相信做地图社交类APP开发的大家都知道,一般情况下,为了整体的美观和用户体验度,我们需要定制化Marker的样式。本文中实现的方式都是基于高德地图的,百度地图也类似,大家可以照葫芦画瓢,废话不多说,先来看看最终效果:
深度链接(Deeplink)是泛用性极高的一项通用技术,在我们日常生活中非常容易接触到。比如:
如果不使用系统自带的TitleBar(即Activity被设置@android:style/Theme.NoTitleBar),那就需要自己来写进度条了,这里封装了一个自定义控件和加载网页的公共Activity,方便使用。 正文 一、截图 二、自定义控件 复制代码 /** * 带进度条的WebView * @author 农民伯伯 * @see http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html *
1.首先要确立你的技术方向和目标,然后朝着这个方向和目标走下去,最重要的是做好职业规划
说到Android中的文件下载,Android API中明确要求将耗时的操作放到一个子线程中执行,文件的下载无疑是需要耗费时间的,所以要将文件的下载放到子线程中执行。下面,我们一起来实现一个Android中利用多线程下载文件的小例子。
上图是不是加载网页的时候会有一个进度条在横向加载,比以前网速不好的时候是一片空白给人的感觉友好多了是不,然后效果还不错。
随着业务量的增长,客户端必然随之越来越业务和功能模块耦合越来越生,开发人员代码维护成本越来越高。 App一般都会走向组件化、插件化的道路,而组件化、插件化的前提就是解耦,那么我们首先要做的就是解耦页面之间的依赖关系。
TBS视频播放器可以支持市面上几乎所有的视频格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, mkv等18种视频格式。同时支持硬件解码,使得内存占用,稳定性相较于系统播放器都更优。
04.视频播放器通用架构实践 目录介绍 01.视频播放器的痛点 02.业务需求的目标 03.该播放器框架特点 04.播放器内核封装 05.播放器UI层封装 06.如何简单使用 07.如何自定义播放器 08.该案例的拓展性分享 09.关于视频缓存方案 10.如何监控视频埋点 11.待实现的需求分析 12.一些细节上优化 13.参考案例和博客记录 00.视频播放器通用框架 基础封装视频播放器player,可以在ExoPlayer、MediaPlayer,声网RTC视频播放器内核,原生MediaPlayer可以自
APP 如何自动实现携带参数安装?这是许多开发者感兴趣的问题,毕竟在 APP 开发的许多逻辑上常常不可避免的需要判断安装来源,比如:广告投放、用户邀请、用户行为、社交分享等 APP 推广环节,国内的 openinstall 就是 APP 安装来源追踪领域的专业第三方服务商。
现在移动端 web 应用,很多时候都需要与原生 app 进行交互、沟通(运行在 webview 中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能。所以,这次就来捋一捋 h5 与原生 app 交互的原理。 h5 与原生 app 的交互,本质上说,就是两种调用:
1、已经下载过的用户,可以直接打开应用(一般人的手机上安装的应用都非常多,要快速找到某个应用是很困难的事情,而且Android、IOS的搜索都做的很烂~ ~ );
近年来,我们见证了旨在简化开发者生活的技术的惊人进步。即使有出色的解决方案,创建、配置和共享开发者环境可能是一件非常令人头疼的事。Vagrant + VirtualBox解决方案使开发者环境的虚拟化变得简单,而Docker的出现则极大地影响了IT世界。
领取专属 10元无门槛券
手把手带您无忧上云