VMLKit 0.1.2

VMLKit 0.1.2

Emil Sjölander 维护。



VMLKit 0.1.2

  • Visly Inc.

VML Mobile libraries

CircleCI

Mobile client libraries for https://visly.app. VML is currently in an experimental state so if you are interested in integrating it into your app please contact us at [email protected] so we can make sure it is a good fit and offer any assistance if needed.

VML 是一个用于渲染服务器端驱动的 UI 的跨平台移动框架。我们希望 VML 成为 webview 的替代品,具有许多相同的优点,但具有原生性能。使用 VML 的好处包括 空中更新跨平台服务器端控制

概述

此存储库包含用 Kotlin/Swift 编写的 Android 和 iOS VML 库,以及用 rust 编写的共享核心。共享 rust 核心管理渲染 VML UI 的非平台特定方面,例如解析服务器响应、有效管理更新和执行布局。布局基于 使用 stretch 库的 flexbox

入门指南

Android

要开始在自己的 Android 应用中使用 VML,请首先添加 jcenter 依赖关系。

dependencies {
    implementation 'app.visly.vml:core:0.1.0'
}

您还必须确保初始化原生依赖项,这最好在您的 Application 类中完成。

class ShardsApplication: Application() {

    override fun onCreate() {
        super.onCreate()
        VMLViewManager.init(this)
    }
}

现在你已经准备好加载第一个vml视图。你可以通过指向你使用node-vml-server构建的服务器端点的url来加载它,或者使用原始json字符串。为了简便起见,我们将在这里使用原始json方法。

class MainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val result = VMLViewManager.instance.loadJson(this, """{
            "root": {
                "kind": "flexbox",
                "props": {"background-color": "#f00"},
                "layout": {
                    "width": {"unit": "points", "value": 200},
                    "height": {"unit": "points", "value": 200}
                }
            }
        }""")

        val root: FrameLayout = findViewById(R.id.vml_root)
        root.addView(result.getView(this))
    }
}

iOS

要在iOS应用程序中使用VML,首先添加cocoapods依赖项。

platform :ios, '11.0'
use_frameworks!

target 'ios' do
  pod 'VMLKit', '~> 0.1.0'
end

现在你已经准备好加载第一个vml视图。你可以通过指向你使用node-vml-server构建的服务器端点的url来加载它,或者使用原始json字符串。为了简便起见,我们将在这里使用原始json方法。

import UIKit
import VMLKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        let result = VMLViewManager.shared.loadJson("""
        {
            "root": {
                "kind": "flexbox",
                "props": {"background-color": "#f00"},
                "layout": {
                    "width": {"unit": "points", "value": 200},
                    "height": {"unit": "points", "value": 200}
                }
            }
        }
        """)

        self.view.addSubview(result.view)
    }
}

开发

首先,通过下载Xcode和Android studio来安装Android和iOS工具链。对于Android,您还需要设置您的$ANDROID_HOME。目前,我们仅支持在macOS上构建,但是您可以通过jcenter / Cocoapods在任何平台上使用vml库。

一旦安装了Android和iOS工具链,就是时候克隆存储库并设置环境了。我们准备了一些Make脚本,希望这可以简化这个过程。这些脚本准备你的本地环境以构建Rust核心。如果你只是在Kotlin / Swift中进行开发,则不需要运行任何make脚本。

git clone https://github.com/vislyhq/vml-mobile.git
cd vml-mobile
make setup
make install

完成所有这些后,你应该可以开始了。在Xcode中打开vml-mobile/ios/Examples/VMLKit.xcworkspace或在Android Studio中打开vml-mobile/android

所有共享的Rust代码位于vml-mobile/core中,平台绑定在vml-mobile/core/iosvml-mobile/core/android。在修改任何Rust文件后,请确保从根目录运行make install以构建并打包Rust库供Android和iOS使用。

如果您想对支持VML的布局引擎进行任何更改或添加,请前往github.com/vislyhq/stretch

许可证

Copyright (c) 2018 Visly Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.