主题:Web of Things,Mobile and UbiquitousComputingWWW 2018,2018年4月23日至27日,法国里昂1469Aladdin:在Android上自动发布Deep-Link API摘要马云12,胡子牛1,刘云新3,谢涛4,刘玄哲1*1高可信软件技术教育部重点实验室(北京大学)2清华大学3微软研究院4伊利诺伊大学香槟分校{mayun,bull}@pku.edu.cn,yunxin. microsoft.com,taoxie@illinois.edu,xzl@pku.edu.cn在网络上的各个方面的基本作用,例如,使用户与其中每个网页具有用于外部访问的全局URL的Web相比,移动应用内的特定最近,“深度链接”的概念在本文中,我们提出了一个大规模的实证研究,以调查深度链接是如何真正采用,超过25,000个Android应用程序。 令我们惊讶的是,我们发现深度链接的覆盖率相当低,例如,超过70%和90%的应用程序在应用程序商店Wandoujia和Google Play上没有深度链接。一个根本原因是应用程序开发人员为深度链接提供API然后,我们提出了阿拉丁方法及其支持工具,以帮助开发人员实际上自动发布深层链接API,以访问他们的应用程序中的位置。 Aladdin包括一个新颖的合作框架,通过合成的静态分析和动态分析,同时最低限度地参与开发人员的输入和配置,而不需要任何编码工作或额外的部署工作。我们评估阿拉丁与579流行的应用程序,并证明其有效性和性能。CCS概念• 以人为中心的计算→无处不在的移动计算系统和工具关键词深度链接; Android应用程序;程序分析ACM参考格式:马云12人,虎子牛1人,刘云欣3人,谢涛4人,刘玄哲1人。2018年。Aladdin:在Android上自动发布Deep-Link API。在WWW 2018:2018年网络会议,2018年4月23日至27日,里昂,法国。ACM,New York,NY,USA,10页。https://doi.org/10.1145/3178876.31860591介绍导致Web取得巨大成功的一个关键因素是存在超链接以访问网页,甚至访问“深层”Web内容的特定片段。例如,超链接https://en.wikipedia 。 org/wiki/World_Wide_Web#History 指 向“WorldWideWeb“wiki页面的“history“部分。的确,超链接起到了*作者:xzl@pku.edu.cn。本文在知识共享署名4.0国际(CC BY 4.0)许可下发布作者保留在其个人和公司网站上以适当的归属方式传播作品的权利。WWW 2018,2018年4月23日©2018 IW3C2(国际万维网会议委员会),在知识共享CC BY 4.0许可下发布。ACM ISBN 978-1-4503-5639-8/18/04。https://doi.org/10.1145/3178876.3186059在网页之间导航并为感兴趣的内容添加书签,以及使搜索引擎能够抓取网页内容[18]。在当前的移动计算时代,移动应用(又称,应用程序)已成为访问互联网的主要入口[11,41]。然而,与Web相比,对“超链接”的支持在移动应用中固有地缺失,使得用户必须执行繁琐且琐碎的传统Web超链接的其他优势也自然缺失。在实现这种限制之后,已经提出了“深度链接”的概念直观地说,深度链接是移动应用程序的“超链接”。例如,使用深度链接“android-app://org.Wikipedia/http/en.m.wikipedia.org/wiki/World_Wide_Web”,用户可以直接在维基百科应用程序中打开“WorldWideWeb”的页面。目前,各种主要服务提供商,如Google[7],Facebook[6],百度[3]和Microsoft[4]都大力提倡深度链接,而主要的移动操作系统平台,如iOS[16]和Android[2]也鼓励其开发人员在其应用程序中发布深度链接。应用程序. 事实上,深度链接为移动计算生态系统中的当前利益相关者带来了各种好处移动用户可以通过直接导航到目标应用页面来获得消费应用内内容的更好体验。应用程序开发人员可以将其深度链接开放给对其应用程序的内容,数据或功能感兴趣的其他人,以便应用程序开发人员可以找到潜在的合作者来实现应用程序的“组合”。然而,目前尚不清楚在广泛实践的状态下,到目前为止支持的深度联系为了解决这个问题,在本文中,我们首先对流行的Android应用程序进行了实证研究,并发现了以下发现:随着应用程序版本的演变,深度链接的数量越来越多。对比豌豆荚1号上排名前200的应用的第一个版本和最新版本,支持深度链接的应用比例从30%上升到80%;当前应用的深度链接覆盖率较低。在豌豆家和Google Play上排名前20,000和5,000的热门应用程序中,分别有超过70%和90%的应用程序没有深度链接。对于有深度链接支持的应用,只有4%的活动实际上有深度链接;开发人员付出了巨大的努力 根据我们对GitHub上开源Android应用的研究,开发人员需要手动修改45 - 411行代码才能为一个Activity实现一个深度链接API。为了减少开发人员支持深度链接的工作量,我们提出了Aladdin,这是一种新的方法,可以帮助开发人员自动释放基于1豌豆家(www.wandoujia.com)是中国领先的Android应用商店。···主题:Web of Things,Mobile and UbiquitousComputingWWW 2018,2018年4月23日至27日,法国里昂1470合作框架。我们的合作框架结合了静态分析和动态分析,以及从事最小的人力投入的框架自动化。特别地,给定Android应用,Aladdin首先使用静态分析来找到如何从应用的入口最有效地到达应用内的活动(每个活动是Android应用的基本UI组件在开发人员选择了需要深度链接动态位置的Activity之后, Aladdin然后执行动态分析以找到如何到达每个Activity内部的片段(每个最后,Aladdin综合分析结果并生成模板,这些模板记录了如何到达应用程序内的位置的脚本。Aladdin提供了与应用程序代码集成的深度链接代理来接管深度链接处理,因此不插装应用程序的原始业务逻辑这样的代理可以通过来自第三方应用或服务的发布的深度链接API接受访问。我们在579个流行的Android应用程序上评估阿拉丁 评测结果显示,阿拉丁发布的深链接API能够覆盖大部分应用,运行时性能较好。据我们所知,Aladdin是第一个自动发布Android应用程序的深度链接API而不影响其正常功能的工作,从而为Android应用程序建立了“类Web”用户体验的基础更具体而言,本文的主要贡献如下。我们基于25,000个流行的Android应用程序对当前的深度链接进行了广泛的实证研究,揭示了深度链接的现状以及开发人员为实现深度链接所做的我们提出了一种方法来帮助开发人员实际上自动发布基于合作框架的深度链接API,开发人员只需要我们评估我们的方法在流行的Android应用程序的有效性2背景在本节中,我们将介绍Android应用和深层链接的一些背景知识。2.1概念类比一个Android应用(由其包名称标识)通常由多个相互松散绑定的Activity Activity是一个组件,它为用户提供交互的用户界面,例如拨打电话、观看视频或阅读新闻。 每个Activity都分配了一个窗口来绘制其图形用户界面。应用中的一个Activity被指定为为了便于理解,我们可以在Android应用程序和Web之间进行类比,如表1所示。 Android应用程序可以被视为一个网站,其中应用程序的包名称就像网站的域。因此,活动可以被视为网页,因为它们都是应用程序和网站的基本块,分别提供用户界面。 主要活动就像一个网站的主页。一个Activity 有几个视图组件来显示它的用户界面,比如TextView、ButtonView和ListView。视图组件类似于由网页组成的Web元素例如
、