Flutter笔记:使用Flutter私有类涉及的授权协议问题

Flutter笔记
使用Flutter私有类涉及的授权协议问题

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/138330726
HuaWei:https://bbs.huaweicloud.com/blogs/426628

【介绍】:本文是一个杂谈,关于使用Flutter私有类涉及的授权协议问题。

flutter-ljc


1. 概述

在我最近的一个项目中,我需要使用 Flutter 框架来开发一个具有复杂图形界面的移动应用。在实现过程中,我发现 Flutter 框架内部的一个私有类 _StarGenerator 非常适合我需要实现的功能。这个类能够生成定制的星形图形,正是我所需要的。然而,由于 _StarGenerator 是一个私有类,直接使用它涉及到一些授权协议的问题。

Flutter 是开源的,遵循 BSD-style 许可协议,这意味着可以自由使用、修改和分发其源代码。但是,使用时需要遵守一些特定的条件,包括保留原始的版权声明,添加必要的许可声明,并且不能使用 Google 或 Flutter 的商标,除非得到明确的书面许可。

因此,我面临的问题是如何合法地使用这个私有类,同时遵守 Flutter 的授权协议。这不仅是一个技术问题,也是一个法律问题,需要我仔细考虑如何处理。在这篇文章中,我将详细探讨使用 Flutter 私有类时涉及的授权协议问题,并分享我如何解决这一问题的经验。

2. 关于Flutter使用的BSD-style协议

2.1 协议内容

Flutter 协议地址为:https://github.com/flutter/flutter/blob/master/LICENSE,内容全文如下:

Copyright 2014 The Flutter Authors. All rights reserved.Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:* Redistributions of source code must retain the above copyrightnotice, this list of conditions and the following disclaimer.* Redistributions in binary form must reproduce the abovecopyright notice, this list of conditions and the followingdisclaimer in the documentation and/or other materials providedwith the distribution.* Neither the name of Google Inc. nor the names of itscontributors may be used to endorse or promote products derivedfrom this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

其中文翻译为::

版权所有 2014 年 Flutter 作者。保留所有权利。在源代码和二进制形式的再分发和使用中,无论是否进行修改,只要满足以下条件,均允许:源代码的再分发必须保留上述版权声明、条件列表和以下免责声明。二进制形式的再分发必须在文档和/或其他提供的材料中重现上述版权声明、条件列表和以下免责声明。未经特定事先书面许可,不得使用 Google 公司或其贡献者的名称来认可或推广从本软件衍生的产品。本软件由版权所有者和贡献者“按原样”提供,不提供任何明示或暗示的担保,包括但不限于对适销性和特定用途的适用性的担保。在任何情况下,版权所有者或贡献者均不对任何直接、间接、附带、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购、使用、数据或利润损失,或业务中断)承担责任,无论是在合同、严格责任还是侵权行为(包括疏忽或其他方式)的任何理论下,即使已被告知可能发生此类损害。

2.2 协议要点

Flutter 使用的 BSD-style 许可协议是一种非常宽松的开源许可协议,它允许个人和组织在几乎没有限制的情况下使用、修改和分发软件。然而,为了合法地使用 Flutter 框架及其组件,需要遵守以下几个关键要点:

  1. 版权声明保留:在使用 Flutter 源代码或其衍生产品时,必须保留原始的版权声明。这意味着在源代码的再分发中,无论是修改后还是未修改,都必须包含原始的版权声明和免责声明。

  2. 文档和材料中的版权声明:在以二进制形式分发软件时,必须在随软件提供的文档和其他材料中复制版权声明、条件列表和免责声明。这确保了使用者在接收到二进制文件时,也能明确了解到其使用条件和限制。

  3. 商标使用限制:许可协议明确禁止未经授权使用 Google 或其贡献者的名字来推广从 Flutter 框架衍生的产品。这意味着,除非得到 Google 的明确书面许可,否则不能在任何产品推广或广告中使用 Google 的名字。

  4. 免责声明:Flutter 框架和所有相关组件都是在“按原样”基础上提供的,不附带任何形式的明示或暗示的保证。这包括但不限于对商品的适销性和特定用途的适用性的暗示保证。这意味着开发者在使用 Flutter 框架时,需要自行承担使用风险。

  5. 责任限制:在任何情况下,Flutter 的版权所有者或贡献者都不会对任何直接或间接的损害负责,无论这些损害是如何引起的,也不论责任理论如何(包括合同责任、严格责任或侵权行为(包括疏忽或其他))。

3. 使用Flutter中未暴露的成员

在Flutter开发中,我们经常会遇到框架内部定义的私有成员或类,这些成员虽然在框架的内部被广泛使用,但并没有在公共API中暴露。这些私有成员包括函数、变量以及类等。虽然这些私有成员可能非常适合我们的需求,直接使用它们却涉及到一些特定的风险和限制。

3.1 风险

  1. 兼容性问题:私有成员在未来的Flutter版本中可能会被修改或完全移除。因为它们不是公开的API的一部分,Flutter开发团队不保证这些私有成员的稳定性和向后兼容性。这意味着依赖这些私有成员的应用或库可能在未来的Flutter更新后无法正常工作。

  2. 维护难度:使用未公开的成员会使得代码的维护变得更加困难。如果这些成员的实现发生变化,开发者需要投入额外的时间和资源来调整自己的应用以适应这些变化。

  3. 法律和许可问题:虽然Flutter的BSD许可证允许修改和再分发代码,但直接复制和修改Flutter框架内部的代码可能需要在项目中包含适当的版权声明和许可声明,这增加了合规的复杂性。

3.2 解决方案

3.2.1 寻找公开的替代方案

在使用私有成员之前,应首先寻找是否有公开的API可以达到同样的目的。Flutter社区和官方文档是获取这些信息的好资源。

3.2.2复制代码直接使用

如果必须使用某些私有功能,我们需要考虑许可和版权问题。

根据 Flutter 的许可协议(BSD-style license),你可以自由地使用、修改和分发 Flutter 框架的源代码,但需要遵守以下条件:

  1. 保留原始的版权声明。

  2. 在你的代码中添加一个许可声明,说明你的代码基于 Flutter 框架,并提供一个链接到 Flutter 的许可协议。

  3. 你不能使用 Google 或 Flutter 的商标,除非得到明确的书面许可。

因此,如果你直接复制了某个私有类的实现,你需要:

  1. 保留该私有类中原有的版权声明(如果有的话)。

  2. 在你的代码中添加一个许可声明,说明你的代码基于 Flutter 框架,并提供一个链接到 Flutter 的许可协议。例如,一个模板如下:

// Copyright 2023 Your Name. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.// This code is based on the Flutter framework.
// Flutter is licensed under the BSD-style license:
// https://github.com/flutter/flutter/blob/master/LICENSE// 下面是代码直接使用了Flutter私有成员的代码

4. 结论

在本文中,我们探讨了使用 Flutter 框架中未公开的私有类和成员时涉及的授权协议问题。详细分析 Flutter 的 BSD-style 许可协议,讨论了直接使用 Flutter 私有成员的潜在风险。

不过虽然使用 Flutter 私有类和成员可能在某些情况下看似方便,但要考虑遵守开源协议的规定、维护代码的兼容性和可维护性,以及避免潜在的法律风险才是更为稳妥和可持续的做法。

最后,开发者应当在充分理解相关许可协议的基础上,做出明智的技术和法律选择,以确保他们的项目既能利用到 Flutter 强大的功能,同时也符合开源社区的规范和精神。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-1)词向量

一句话归纳: 1)神经网络不仅可以处理图像,还可以处理文本。 2)神经网络处理文本,先要解决文本的表示(图像的表示用像素RGB)。 3)独热编码词向量: 词表:{我&am…

ensp 配置s5700 ssh登陆

#核心配置 sys undo info-center enable sysname sw1 vlan 99 stelnet server enable telnet server enable int g 0/0/1 port lin acc port de vlan 99 q user-interface vty 0 4 protocol inbound ssh authentication-mode aaa q aaa local-user admin0 password cipher adm…

Java集合框架-容器源码分析

Java集合框架-容器&源码分析 文章目录 Java集合框架-容器&源码分析[TOC](文章目录)前言一、集合框架概述二、Collection接口及其子接口(List/Set)及实现类2.1 Collection接口中方法2.2 遍历:Iterator迭代器接口&foreach(5.0新特性)2.3 Connection子接口…

SQL 基础 | AS 的用法介绍

SQL(Structured Query Language)是一种用于管理和操作数据库的标准编程语言。 在SQL中,AS关键字有几种不同的用法,主要用于重命名表、列或者查询结果。 以下是AS的一些常见用法: 重命名列:在SELECT语句中&a…

C++深度解析教程笔记7

C深度解析教程笔记7 第13课 - 进阶面向对象(上)类和对象小结 第14课 - 进阶面向对象(下)类之间的基本关系继承组合 类的表示法实验-类的继承 第15课 - 类与封装的概念实验-定义访问级别cmd 实验小结 第16课 - 类的真正形态实验-st…

Web,Sip,Rtsp,Rtmp,WebRtc,专业MCU融屏视频混流会议直播方案分析

随着万物互联,视频会议直播互动深入业务各方面,主流SFU并不适合管理,很多业务需要各种监控终端,互动SIP硬件设备,Web在线业务平台能相互融合,互联互通, 视频混流直播,录存直播推广&a…

c++ 筛选裁决文书 1985-2021的数据 分析算法的差异

c cpp 并行计算筛选过滤 裁决文书网1985-2021 的300g数据 数据 数据解压以后大概300g,最开始是使用python代码进行计算,但是python实在太慢了,加上多进程也不行, 于是 使用c 进行 计算 c这块最开始使用的是 i7-9700h 用的是单线…

基于Spring Boot的心灵治愈交流平台设计与实现

基于Spring Boot的心灵治愈交流平台设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页…

C++类成员函数重载

成员函数重载是指在同一个类里,有两个以上的函数具有相同的函数名。每种实现对应着一个函数体,但是形参的个数或者类型不同。 例如:减法函数重载 创建一个类,在类中定义3个名为subtract的重载成员函数,分别实现两…

【二等奖水平论文】2024五一数学建模C题22页保奖论文+22页matlab和13页python完整建模代码、可视图表+分解结果等(后续会更新)

一定要点击文末的卡片,那是资料获取的入口! 点击链接加入群聊【2024五一数学建模】:http://qm.qq.com/cgi-bin/qm/qr?_wv1027&khoTDlhAS5N_Ffp-vucfG5WjeeJFxsWbz&authKey7oCSHS25VqSLauZ2PpiewRQ9D9PklaCxVS5X6i%2BAkDrey992f0t15…

能综合验证的RISCV内核开源项目调研选择

1. 评估的背景目的 考虑维度: 资源需求,开放程度,学习难度,工具链资源。 最好是国产FPGA支持,或者开源EDA工具链支持。 目标还是寻求一款在FPGA上低成本跑起来并能够支持一定的程序开发,最好实现一款…

人工智能 | Embedding

Embedding是什么 Embedding是一种将离散的符或对象映射到连续向量空间技术。在自然语言处理领域中,Embedding常用于将单词或句子为向量形式,以便计算机可以更好地理解和处理文本数据。 通过使用Embedding,我们可以将每个单词或句子表示为一…

eclipse开启服务后,网页无法打开,如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

kubectl_入门_service详解

Service 我们知道 Pod 的生命周期是有限的。可以用 ReplicaSet 和Deployment 来动态的创建和销毁 Pod,每个 Pod 都有自己的 IP 地址,但是如果 Pod 重建了的话那么他的 IP 很有可能也就变化了。 这就会带来一个问题:比如我们有一些后端的 Po…

jupyter notebook切换conda虚拟环境

首先,切换到某个虚拟环境,本人切换到了d2l环境: (d2l) C:\Users\10129>pip install ipykernel然后,如代码所示安装ipykernel包 最后,按下述代码执行: (d2l) C:\Users\10129>python -m ipykernel i…

mac电脑关于ios端的appium真机自动化测试环境搭建

一、app store 下载xcode,需要登录apple id 再开始下载 二、安装homebrew 1、终端输入命令&#xff1a; curl -fsSL <https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh>如果不能直接安装&#xff0c;而是出现了很多内容&#xff0c;那么这个时候不要着急&…

国产服务器操作系统部署NTP服务 _ 统信UOS _ 麒麟 _ 中科方德

原文链接&#xff1a;国产服务器操作系统部署NTP服务 | 统信UOS | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;在保持服务器时间的精确同步方面&#xff0c;时间同步服务器&#xff08;NTP服务器&#xff09;扮演着至关重要的角色&#xff0c;它能确保系统操作的时…

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series

【论文阅读笔记】TS2Vec: Towards Universal Representation of Time Series 摘要 这段文字介绍了一个名为TS2Vec的通用框架&#xff0c;用于学习时间序列数据的表示&#xff0c;可以在任意语义层次上进行。与现有方法不同&#xff0c;TS2Vec通过对增强的上下文视图进行层次化…

【热门话题】Stylus 入门与实践详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Stylus 入门与实践详解引言一、Stylus 简介1.1 什么是 Stylus&#xff1f;1.2 S…

【51单片机LCD1602显示矩阵键盘原始键值】2023-6-1

缘由https://ask.csdn.net/questions/7955623 #include "reg52.h" sbit LCD1602_RS P3^5;//RS端数据命令选择(H/L) sbit LCD1602_RW P3^6;//RW端读写选择(H/L) sbit LCD1602_EN P3^7;//EN端使能信号上升沿25ns void PanDuan1602(/*LCD1602忙判断*/) { LCD1602…