近日,个推TechDay携手GDG广州,邀请了多位跨领域的Android开发专家,以“Kotlin Everywhere,演进Android开发生态”为主题,与在场观众一同探索Android开发领域的前沿技术及实践方法。

以下是广州站分享嘉宾的精华提炼

(文章结尾附讲师PPT下载)

李健民,个推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。

伍裕平,汇丰软件工程师

《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过程中,坑主要有以下两种:

1、Kotlin 编译成 Java class 时,默认把非 private 属性变为 private 属性 + getter & setter。开发者通过“把属性改为 private,把非 private 访问修饰符放在 getter / setter 上”的方法进行填坑。

2、Kotlin 本身没有 static。要解决这个问题,开发者可以在Static上加一个“JvmStatic”。

林起钊,软通动力安卓工程师

《跨平台演进之路》

林起钊的演讲围绕三方面展开: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技术来对接。

_ _ _ _ _

_ _ _ _ _

_ _ _ _ _

_ _ _ _ _

_ _ _ _ _
_ _ _ _ _

PPT获取方式

关注【个推技术学院】微信公众号

(微信号:getuitech)

回复关键词“广州

即可领取广州站完整版嘉宾分享PPT!

广州站已圆满结束。本周六,个推TechDay全国巡回沙龙将走进成都。

活动时间:2019年8月31日 13:30-18:00

活动地点:四川省成都市天府软件园C1 三楼会议室

活动主题:进阶移动开发,技术赋能产业

点击阅读原文即可了解详细报名方式,技术干货PPT及更多精彩内容请关注 “个推技术学院”公众号。

免费报名参与【成都站】!

kotlin中mainactivity无法直接调用xml中的控件_个推TechDay广州站:使用Kotlin演进安卓开发生态...相关推荐

  1. kotlin中mainactivity无法直接调用xml中的控件_使用Kotlin高效地开发Android App(一)

    一.apply 函数 和 run 函数 1.1 apply函数 apply函数是指在函数块内可以通过 this 指代该对象,返回值为该对象自己.在链式调用中,可以考虑使用它来不破坏链式. /** * ...

  2. kotlin中mainactivity无法直接调用xml中的控件_使用52North 客户端接口调用OGC WPS服务...

    52°North是一个来自研究机构.工业界和公共行政管理界的研究者组成的开放国际合作组织,他们通过协作研发流程促进地理信息学创新.具体来说他们开发新的地理信息概念和技术,例如用于管理时空测量数据,以及 ...

  3. bartender的api帮助_在浏览器中通过bartender,调用条码打印机的active控件代码的实现...

    系统中须要在浏览器,直接调用条码打印机,打印出产品条码. 现实中的条码打印机,品种繁多,非常难在一个程序中实现, 于是我们用已经支持全部条码打印机的bartender软件 调用它的api ,来实如今浏 ...

  4. (继续搬)struts日期格式的转换以及hibernate中session的关闭在xml中的配置

    1.struts日期格式的转换package cn.sxx.utils;import java.text.ParseException; import java.text.SimpleDateForm ...

  5. qt中利用普通函数将调用ui界面的控件

    一.新建qt程序,界面如图所示: 二.在.h文件中: #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #in ...

  6. android 模糊查询控件_第三十二篇:在SOUI2.0中像android一样使用资源

    SOUI2.0之前,在SOUI中使用资源通常是直接使用这个资源的name(一个字符串)来引用.使用字符串的好处在于字符串能够表达这个资源的意义,因此使用字符串也是现代UI引擎常用的方式.尽管直接使用字 ...

  7. Winform中在使用Dock属性设计页面布局控件的顺序导致页面效果不同的问题

    场景 在Winform中进行页面设计时,常使用控件的Dock属性来进行布局调整.但是由于设置属性的顺序问题,导致达不到想要的效果. 比如以下两个控件 下面的控件设置的Dock属性是Bottom,即在页 ...

  8. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

    WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描 ...

  9. 添加Aforge控件,报错“在.....中没有可放置在工具箱上的控件”

    添加Aforge控件,报错"在-中没有可放置在工具箱上的控件" 1.先添加AForge系列引用 工具–>NuGet包管理器–>管理解决方案的NuGet程序包 之后,打开 ...

最新文章

  1. android 三维动画效果,9款令人惊叹的HTML5 3D动画应用
  2. 【技术精华汇总】不一样的技术创新——阿里巴巴2016双11背后的技术
  3. 用html制作3d相册_运动眼镜原型可以用全彩3D打印来制作啦!
  4. CSS中选择器优先级顺序实战讲解
  5. 西瓜书-感知机与BP算法
  6. 企业级WLAN市场格局
  7. 智慧工厂应用系统建设方案
  8. 锁定计算机程序到任务栏,程序图标不能锁定到任务栏?这样做so easy啦!
  9. 每日一题之 hiho1542 无根树变有根树
  10. 印刷电路板丝网设计的十大技巧
  11. python安装mysqldb报错
  12. Win10问题篇之——WIN2016和WIN10关闭同步主机服务,节省磁盘频繁读取,并关闭自动维护
  13. VirtualBox安装MacOS
  14. for循环(循环结构)
  15. eclipse不进入断点_eclipse断点不起作用怎么办?
  16. flex布局四等分|2×2布局,并且有固定值间隙
  17. .net连接Access 2000或Access 2007
  18. 初二计算机考试知识点操作题,初中信息技术考试所有操作题步骤.docx
  19. 欧姆龙PLC的CIP协议报文
  20. 文件域跟图像域-制作QQ主页信息

热门文章

  1. 小孩学计算机的电视剧,小时候在教育频道看的一个电视剧,好像是叮当演的,讲一堆小孩学唱戏之类的...
  2. 短信验证php_php实现登录短信验证
  3. Java电商系统商品详情页存储方案设计
  4. 提醒严肃认真的投机者们注意如下事实
  5. 哔哩哔哩websocket协议逆向--制作一个属于自己的弹幕姬
  6. 用Python学《微积分B》(多元函数的极限)
  7. 访问空指针一定会使程序死掉吗
  8. java照片切换播放音乐_音乐播放器-图片切换-轮播图效果
  9. R语言中dcast 和 melt的使用 简单易懂
  10. java刷票代码_Java 刷票器