Xamarin是微软推出的基于.NET平台进行移动开发的应用框架,其实与Flutter比较类似,但二者的实现方式是大有不同的,
具体差别就不进行叙述,因为这不是本文的主要内容,就个人爱好而言,我更偏向于Xamarin
第一次见到Xamarin是在去年,那个时候我还觉得挺高级的,毕竟微软用C#把整个Android SDK都重写了一遍(编译后位于APK的动态库中)
但我奇怪的是开发中没有涉及到res资源以及manifest清单的配置,我就在想它是怎么实现的,然后我百度了一下,发现它是用注解配置的
比如要配置MainActivity为启动界面,在类声明上标注[MainLauncher = true] 即可配置为启动界面,
这让我想到了结绳4.0安卓平台也可以这么搞,而且还可以进一步的优化,
比如某个类库需要配置权限或清单才能使用,则可以在语法树成员上标注一些属性配置,
在方法调用栈中查找当前最顶层的安卓四大组件,为其附加上这些属性配置即可,如:
1 | 类 需要网络权限类 |
具体实现呢其实比较简单,结绳本身就是按需编译的,所以肯定会有一个从入口开始分析的过程,方法调用栈就在这个分析过程中:
假设入口类为启动窗口,首先编译器要查找这个入口类,然后分析其所有事件和虚拟方法,
假设开始分析第一个事件,语句体为:
1 | 变量 坐标1 : 坐标 = (2,3) |
首先会分析到第一个变量,这时会调到分析这个变量的类型,同理也是分析其所有事件和虚拟方法,
分析完毕后,回到当前所在类,继续分析第二个变量,也是坐标类型,继续跳到分析坐标类,但坐标类已经分析过了,所以需要直接跳过(具体判断自行实现)
开始分析方法调用,弹出提示,首先获取到这个方法所处的类,跳到这个类中对应方法去进行分析,循环往复,最终完成所有代码需求分析
其实也比较简单,具体过程就不再赘述了