话说在自己的App上替换原生安卓WebView(虽然安卓4.4+内核已经更改为了Chrome,但性能还是明显存在瓶颈)是比较常用的做法了。
相信常规使用java开发安卓应用的群体占据几乎全部(当然,追求高效和安卓的应用也会使用c++ native开发),还有各大开源项目厂商的混合开发框架。安卓开发者几乎没有什么门槛约束。
Xamarin.Android是比较小众的。本着对原生性能的追求和C#语言的热衷。(Xamarin编译生成apk后性能接近java原生应用)
集成的环境就不用多说了,主要注意一下两个方面内容。
1、创建Android Binding (安卓绑定库),将Crosswalk的提供java库“翻译成”C#语言,需要注意,绑定库可能会编译错误,需要我们额外添加类型修正。具体做法可以,在Transforms文件Metadata.xml,剔除编译失败类型:
1、java的部分类导致翻译之后C#访问修饰符不一致,根据实际情况,可以remove-node 移除不需要引用的类型。
2、继承机制不一致,java中继承不要求返回类型一模一样(兼容即可),但是c#要求完全一样。
3、unsafe接口修饰符导致继承问题,通常我们可以先用1方法剔除,在Additions文件夹创建部分类实际实现。实现类中通过 unsafe{} 块代替 unsafe修饰。如:
public partial class Ua{
public unsafe void Compare(int a, int b){
...
}
}
public partial class Ua{
public void Compare(int a, int b){
unsafe{
...
}
}
}
2、资源问题,编译绑定库后,还需要考虑资源的问题,由于绑定库中引用了资源"固定了id",所以我们同样需要调整资源的id,使得和绑定库中的值一样。我们可以创建一个安卓项目独立放置资源文件,同时增加 public.xml,声明我们公开固定的资源名称。
还需要注意一点,资源固定存在不兼容低版本的情况,留意与AppCompat的兼容性。不兼容通常抛出异常: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.
网友评论