近日,个推TechDay携手GDG广州,邀请了多位跨领域的Android开发专家,以“Kotlin Everywhere,演进Android开发生态”为主题,与在场观众一同探索Android开发领域的前沿技术及实践方法。缓存
如下是广州站分享嘉宾的精华提炼安全
(文章结尾附讲师PPT下载)性能优化
伍裕平,汇丰软件工程师微信
《Kotlin Multi-platform开发踩坑记》网络
伍裕平的演讲主要围绕“如何入‘Kotlin Multi-platform’坑”、“如何踩坑和填坑”进行展开。他说道,选择Kotlin Multi-Platform是由于该项目能够将一份 Kotlin 代码同时编译成JVM 的 class 文件和 JavaScript 文件,从而减小开发中的重复劳做。闭包
伍裕平为你们梳理了他在开始一个Kotlin Multi-Platform项目中所踩过的各类坑,并为你们提供了对应的填坑方案。架构
在Kotlin 编译成 JavaScript过程当中,他指出首先要避免“plugin 1.3.31 及之前默认不模块化”这个坑,要在build.gradle的kotlin闭包里加一句指定模块化方式。框架
用模块化(如AMD、CommonJS方式)的话,在JavaScript中使用Kotlin中的类是要用“导入对象+包+类名”。模块化
其次,因为JavaScript 不支持泛型和函数重载,Kotlin在编译过程当中会默认在函数名后加一个哈希串,而这会致使调用的时候不够便利,因此他提出了用JsName指定变成相应的函数名称的解决方案。函数
在Kotlin 编译成 Java过程当中,Kotlin默认丢掉默认参数,能够经过加“JvmOverloads”的方式把默认值予以保留。
将 Java API 迁移到 Kotlin过程当中,坑主要有如下两种:
一、Kotlin 编译成 Java class 时,默认把非 private 属性变为 private 属性 + getter & setter。开发者经过“把属性改成 private,把非 private 访问修饰符放在 getter / setter 上”的方法进行填坑。
二、Kotlin 自己没有 static。要解决这个问题,开发者能够在Static上加一个“JvmStatic”。
李健民,个推Android高级研发工程师
《移动应用安全》
李健民阐述了移动安全中移动恶意攻击的四个主要方向:网络安全、数据安全、代码安全、设备安全。
网络安全
网络安全分为四个部分:数据防泄露、请求防重放、内容防篡改、身份防假装。解决数据防泄露的关键在于必定要对数据进行加密处理。请求防重放则能够经过请求时在参数中携带时间戳、随机数、流水号、“时间戳+流水号”这四种方式措施来予以防御。
数据安全
针对存储的安全防御,咱们在数据落地的时候必定要进行加密处理,防止他人拿到重要的敏感数据。其次,咱们要建立私有类型数据,尽可能用(private)的建立方式,而不是全局的建立方式。
代码安全
常见逆向工程套路主要分为三种:反编译、脱壳、动态分析。如下四种方式能够防止代码反编译:代码混淆、签名验证、利用反编译工具漏洞进行防御、加固。防动态分析则能够从反调试、反xposed、反root三个维度进行入手。
设备安全
开发者能够经过检查设备所处的环境来判断设备是否处于异常的状态。若是设备状态异常,则极可能处于黑产工具的控制下。黑产的攻击场景主要有如下四种:渠道推广、登陆注册、营销活动、社区互动。APP开发者能够经过检测设备上的相应的风控信息,经过多维度的风控检测模型标识高风险的用户,并将风险等级告知客户端,以此进行一些防御。
个推做为专业的数据智能服务商,拥有海量数据资源,在移动安全领域也推出了相应的数据解决方案-个验。个验是个推旗下的“一键认证”产品,能够帮助APP开发者实现高效、极速、安全稳定的认证登陆过程,优化用户体验。
此外,个验还为APP开发者提供风险识别与风险防御的系列方案。在风险识别方面,个验能够经过设备、网络、行为等多维度识别设备风险。准确识别出风险用户后,企业可在业务上对风险用户进行限制。在风险防御方面,个验在不影响正经常使用户使用的状况下,经过动画验证码阻止恶意自动化程序的进一步操做。
Nicky, 阿里巴巴创新事业部高级工程师
《移动出海的困局与对策——开发者篇》
Nicky 主要从三方面解读“移动出海”:出海浪潮、出海的困局、出海的对策。手机厂商借助预装形式,为移动互联网出海带来了新的增加空间。Nicky 认为,中国移动互联网出海的发展历程能够分为五个阶段:开端、探索期、发展期、爆发期、升级期。
出海的困局能够归结为三点:一是没法判断设备的好坏;二是没法定义当前网络的好坏;三是没法找到其余工具利器来为APP提供良好的海外体验。
针对这三大困局,Nicky一一提供了解决对策:
如何判断设备的好坏?
Facebook给出year维度来评估机器性能,但不够直观,没法解决开发者想要了解机器的高中低状况或者占比的问题。咱们能够修改源码,定义某些参数维度是高端机,中端,低端,这样作性能交流也更直观了。
如何定义当前网络的好坏?
能够借助用Facebook的networkclass开源工具类来判断当前的网络情况。相似日常作的电信网络测速同样,networkclass经过屡次测试,测出平均值,再给出一个标准,会根据当前一兆每秒,几百K等等,来定义出当前网络的好坏。
如何用其余工具为APP提供良好的海外体验?
Google 提供了Android One、Android Go、KaiOS三大工具。Android One的特色为价格亲民、系统易用。Android Go的优点在于会根据用户的机器性能状况来推荐相匹配的APP版本,让高端机、低端机都能有更好的使用体验。KiaOs做为世界第三大移动系统,经过低价的切入点打入低端用户,把更多的国际用户拉到互联网人群来作信息的传递。
Nicky总结道,开发者在移动出海过程当中应不断强化三点:一是借助平台进行本地环境测试;二是借助平台进行设备分析和网络分析;三是在性能优化同时,兼顾业务数据与ROI。
林起钊,软通动力安卓工程师
《跨平台演进之路》
林起钊的演讲围绕三方面展开:C和Java实现跨平台原理简析、热门跨平台技术简介、安卓系统中使用的跨平台技术。
林起钊认为C语言实现跨平台主要是靠各个平台上的编译器,但系统调用(进程、线程、文件操做、内存管理等)须要单独适配。而Java跨平台是创建在“虚拟机”的基础上的,它经过JVM在程序运行时将.class文件解释执行,其字节码文件只能在装有JVM的系统上运行。
林起钊指出目前热门跨平台技术主要包括Hybrid、React-Native、Flutter、Kotlin四种,并对Flutter、和Kotlin进行了详细解读。基于dart语言,Flutter直接经过Skia图像处理引擎渲染界面,而平台适配及硬件对接等功能能够经过Plugin来完成。Flutter平台适配工做量大,技术生态有限。
Kotlin的出现是为了可以经过编译直接转换为Java或JavaScript、Objective-C代码,以及简化代码及提升代码安全性。Google随后推出了Kotlin Multiplatform实现了跨平台功能。
安卓系统中使用的跨平台技术主要为:AndroidRuntime、Project Treble。AndroidRuntime虚拟机基于寄存器(cpu上的一块高速缓存),在APK运行以前,就对其包含的Dex字节码进行翻译,获得对应的本地机器指令。
Treble架构是8.0版本推出的新元素,旨在让供应商实现(由芯片制造商编写的设备专属底层软件),与 Android 操做系统框架分离开来。新的架构之下,framework和hal运行于不一样的进程,全部的HAL采用新的HIDL技术来对接。
关注【个推技术学院】微信公众号
(微信号:getuitech)
回复关键词“广州”
便可领取广州站完整版嘉宾分享PPT!
广州站已圆满结束。本周六,个推TechDay全国巡回沙龙将走进成都。
活动时间:2019年8月31日 13:30-18:00
活动地点:四川省成都市天府软件园C1 三楼会议室
活动主题:进阶移动开发,技术赋能产业
点击连接(https://mp.weixin.qq.com/s?__biz=MzU2MDc1MjcyMQ==&mid=2247484432&idx=1&sn=130e54aa5b76811e93e49bba59f58a6e&chksm=fc02752ecb75fc38cee56ac2a882f7cc12cd32dc5cbf1d0fc0be58b9646e627612b83ce6442e&token=573381267&lang=zh_CN#rd)
便可了解详细报名方式,技术干货PPT及更多精彩内容请关注 “个推技术学院”公众号。