CN110083382B - 跨平台内容管理和分发系统 - Google Patents

跨平台内容管理和分发系统 Download PDF

Info

Publication number
CN110083382B
CN110083382B CN201910073654.XA CN201910073654A CN110083382B CN 110083382 B CN110083382 B CN 110083382B CN 201910073654 A CN201910073654 A CN 201910073654A CN 110083382 B CN110083382 B CN 110083382B
Authority
CN
China
Prior art keywords
content
different
reconfigured
compiled
platform
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910073654.XA
Other languages
English (en)
Other versions
CN110083382A (zh
Inventor
B·斯维科基
B·R·布卢姆
G·P·卡雷
S·希利
V·奥利瓦·亚劳乔
E·基德尼
D·J·阿伦达什
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accenture Global Solutions Ltd
Original Assignee
Accenture Global Solutions Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Accenture Global Solutions Ltd filed Critical Accenture Global Solutions Ltd
Publication of CN110083382A publication Critical patent/CN110083382A/zh
Application granted granted Critical
Publication of CN110083382B publication Critical patent/CN110083382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开的实施例涉及跨平台内容管理和分发系统。设备接收为不同计算平台发布内容的请求,并接收针对不同计算平台将要发布的内容。设备基于一个或多个经标记的信息类别来为不同计算平台重新配置内容,以生成不同的重新配置的内容,并基于一个或多个带标记的信息类别编译不同的重新配置的内容,以为不同计算平台生成不同的编译内容。该设备将不同的编译内容中的至少一个提供给与至少一个不同计算平台相关联的客户端设备。

Description

跨平台内容管理和分发系统
技术领域
本公开的实施例涉及计算机领域,并且更具体地,涉及跨平台内容管理和分发系统。
背景技术
计算机软件开发者可以创建不同类型的内容,诸如文字处理内容、财务软件、虚拟现实软件、二维(2D)和三维(3D)视频游戏和内容等等。为了获得对开发此类内容的成本的回报,开发者通常需要为不同类型的计算平台(例如移动设备平台、台式计算机平台、游戏系统平台等等)配置和编译内容。
发明内容
根据一些实现,设备可以包括一个或多个存储器,以及一个或多个处理器,一个或多个处理器被通信地耦合到一个或多个存储器的一个或多个处理器,一个或多个处理器用以:接收为不同的计算平台发布内容的请求;接收待为不同的计算平台发布的内容;基于一个或多个经标记的信息类别,为不同的计算平台重新配置内容,以生成不同的重新配置的内容;基于一个或多个经标记的信息类别来编译不同的重新配置的内容,以为不同的计算平台生成不同的编译内容;以及将不同的编译内容中的至少一项提供给与不同的计算平台中的至少一个相关联的客户端设备。
根据一些实现,其中一个或多个处理器还用以:支持内容创建者对一个或多个经标记的信息类别的选择。
根据一些实现,其中一个或多个处理器还用以:确定不同的重新配置的内容需要许可的激活;基于确定不同的重新配置的内容需要许可的激活来获取许可;以及为不同的重新配置的内容激活许可。
根据一些实现,其中一个或多个处理器还用以:接收与内容相关联的内容信息,内容信息包括:与内容相关联的元数据,与内容相关联的发行标识符,以及与内容相关联的版本;以及存储内容和内容信息。
根据一些实现,其中一个或多个处理器还用以:将不同的编译内容存储在数据结构中;以及从客户端设备接收针对内容的请求,并且其中,当提供不同的编译内容中的至少一项时,一个或多个处理器用以:基于针对内容的请求来向客户端设备提供来自数据结构的不同的编译内容中的至少一项。
根据一些实现,其中一个或多个处理器还用以:确定不同的编译内容中的至少一项与数据结构中先前存储的内容匹配;以及在将不同的编译内容存储在数据结构中之前,从不同的编译内容中移除不同的编译内容中的至少一项。
根据一些实现,其中在重新配置内容时一个或多个处理器用以:防止对内容与平台无关的部分的修改;以及修改内容与平台功能性相关联的其他部分。
根据一些实现,其中在编译不同的重新配置的内容时一个或多个处理器用以:将重新配置的内容转换为由不同的计算平台理解的编程语言。
根据一些实施例,非暂时性计算机可读介质可以存储包括一个或多个指令的指令,一个或多个指令在由一个或多个处理器执行时使得一个或多个处理器接收针对不同计算平台配置和编译内容的请求,并且接收内容和与内容相关联的内容信息,其中内容信息包括与内容相关联的元数据,与内容相关联的发行标识符,以及与内容相关联的版本。一个或多个指令可以使一个或多个处理器安全地存储内容和内容信息,并基于请求并基于内容信息针对不同计算平台重新配置内容,以生成不同的重新配置的内容。一个或多个指令可以使一个或多个处理器编译不同的重新配置的内容以针对不同计算平台生成不同的编译内容,并且将不同的编译内容中的至少一个提供给与不同计算平台中的至少一个相关联的客户端设备。
根据一些实施例,一种方法可以包括由设备接收针对不同计算平台配置和编译内容的请求,以及由设备接收内容和与内容相关联的内容信息,其中内容信息包括与内容相关联的元数据,与内容相关联的发行标识符,以及与内容相关联的版本。方法可以包括:基于请求并基于内容信息,由设备针对不同计算平台重新配置内容,以生成不同的重新配置的内容,并且由设备确定不同的重新配置的内容是否需要激活许可。方法可以包括:当不同的重新配置的内容需要激活许可时,由设备获得许可,以及由设备针对不同的重新配置的内容激活许可。方法可以包括由设备编译不同的重新配置的内容以针对不同的计算平台生成不同的编译内容,并且由设备将不同的编译内容中的至少一个提供给与不同计算平台中的至少一个相关联的客户端设备。
附图说明
图1A-图1H是本文描述的示例实现的概述的图;
图2是在其中可以实现本文描述的系统和/或方法的示例环境的图示;
图3是图2的一个或多个设备的示例组件的示图;以及
图4是用于针对多个不同计算平台自动配置和捆绑内容的示例过程的流程图。
具体实施方式
以下对示例实现的详细描述参考附图。不同附图中的相同参考标号可以标识相同或相似的元件。
为不同类型的计算平台配置和捆绑内容需要开发者了解不同的硬件平台(例如,32位架构、64位架构等)和不同的软件平台(例如,视频游戏平台、WindowsTM操作系统(OS)、AppleTM操作系统(iOS)等等)。因此,存在许多不同类型的计算平台、硬件平台和软件平台。然而,为许多不同类型的计算平台配置和捆绑内容对于开发者来说是耗时的、消耗资源(例如,处理器、存储器等)、并且使得开发者远离改进内容和/或创建新内容。
本文描述的一些实现提供了内容发布平台,其为多个不同计算平台自动配置和编译(例如,将内容打包成机器可理解的代码或数据结构,将更高级别的语言翻译成更低级别的机器可读代码,将图形、音频、视频和/或其他内容捆绑到可以是.exe、.zip或任何其他编码的包中等等)内容。例如,内容发布平台可以接收内容和将内容发布到多个不同平台(例如,计算平台)的请求,并且可以为不同平台配置内容以生成不同的内容配置。内容发布平台可以编译不同的内容配置以为不同平台生成不同的编译内容,并且如果不同的编译内容中的一项或多项包括重复信息(例如,与内容发布平台先前发布的信息相同的信息),则可以修改不同的编译内容中的一项或多项。内容发布平台可以确定是否为不同的编译内容提供许可,并且可以为不同的编译内容取回任何必要的许可。内容发布平台可以将不同的编译内容提供给与不同平台相对应的不同客户端设备。
图1A-图1H是本文描述的示例实现100的概述的图。如图1A中所示,客户端设备可以与内容发布平台相关联。假设与客户端设备相关联的内容创建者已经创建了内容(例如,3D视频游戏或模拟)并且希望将内容发布到多个不同的平台(例如,计算平台)。在一些实现中,内容创建者可以利用客户端设备来访问由内容发布平台提供的内容发布应用。在这样的实现中,内容创建者可以经由客户端设备提供用于访问内容发布应用的凭证(例如,用户名、密码等)。内容发布平台可以接收凭证,并且可以在向客户端设备提供对内容发布应用的访问之前认证凭证。在内容发布平台中认证凭证,内容发布平台可以向客户端设备提供内容发布应用的用户界面以用于显示。用户界面可以包括请求内容创建者标识要发布的内容的信息(例如,“C:\Content”、3D视频游戏),请求内容创建者标识内容将被发布到的平台的信息(例如,平台1-15)等等。
如图1A中进一步所示,并且通过参考标号105,当内容创建者选择“发布”按钮(例如,或一些其他机制)时,客户端设备可以向内容发布平台提供创建以发布内容的请求,并且内容发布平台可以接收发布内容的请求。在一些实现中,发布内容的请求可以包括内容信息,诸如指示内容创建者的用户名和密码的经标记的信息类别、与内容相关联的元数据(例如,内容将被发布到的平台、与内容相关联的一个或多个游戏包、与内容相关联的一个或多个场景等等)、针对内容的发行标识符、针对请求的参考标号、内容的版本等等。在一些实现中,平台可以包括硬件平台(例如x86架构、32位架构、64位架构等等)、软件平台(例如AndroidTM、iOSTM、Microsoft WindowsTM、JavaTM、LinuxTM、macOSTM、PlayStation 4TM等等)、虚拟平台和/或组合硬件、软件和虚拟平台。
如图1A中进一步所示,并且通过参考标号110,当内容创建者选择“发布”按钮时,客户端设备可以将内容(例如,要编译并且要被发布到由内容创建者标识的平台的3D视频游戏)提供到内容发布平台。在一些实现中,内容可以包括软件(例如文字处理软件、电子邮件软件、数据处理软件、财务软件等)、视频游戏(例如2D视频游戏、3D视频游戏、虚拟现实视频游戏等)、模拟(例如视频游戏模拟、训练场景模拟、导游模拟、工厂参观模拟、装配过程模拟、医疗手术模拟、到火星的飞行模拟、大数据可视化、艺术表达模拟等)、视频、音频文件等。
如图1A中进一步所示,并且通过参考标号115,基于发布内容的请求,内容发布平台可以将内容和内容信息存储在与内容发布平台相关联的数据结构中。在一些实现中,该数据结构和本文描述的其他数据结构可以包括:数据库、表格、链表、树等。在一些实现中,内容发布平台可以将内容和内容信息存储在数据结构中,以供内容发布平台稍后处理。
如图1B中所示,并且通过参考标号120,内容发布平台可以将内容和内容信息存储在包括以下子字段的数据库中:用户名字段、密码字段、内容字段、元数据字段、发行标识符(ID)字段、参考标号字段、版本字段等。在一些实现中,用户名字段可以包括与内容发布平台的用户相关联的用户名(例如John S.、Bob G.、Elaine P.或Amy C.),密码字段可以包括与用户名相关联的密码(例如ABC123、GHI789、JKL12或DEF456),内容字段可以包括被上载到内容发布平台的内容(例如视频游戏、软件等),元数据字段可以包括内容的元数据(例如将发布内容的平台、与内容相关联的包、与内容相关联的场景等),发行标识符字段可以包括与内容相关联的发行标识符,参考标号字段可以包括与发布内容的请求相关联的参考标号,版本字段可以包括与内容相关联的版本等。
在一些实现中,内容发布平台可以通过使用加密技术加密内容和内容信息来安全地存储内容和内容信息。例如,可以使用对称密钥(或单密钥)加密技术安全地存储内容和内容信息。使用对称密钥加密技术,由内容发布平台和用户共享的单个密钥可以被用来对内容和内容信息进行加密和解密。示例对称密钥技术可以包括高级加密标准(AES)、数据加密标准(DES)、三重DES(3DES)、Serpent、Twofish、blowfish、CAST5、RC4、国际数据加密算法(IDEA)等。
在一些实现中,可以使用非对称密钥(或公钥-私钥)加密技术来安全地存储内容和内容信息。使用非对称密钥加密技术,可以利用私钥加密信息,并利用公钥解密,以验证信息是否使用对应的私钥被加密。示例性非对称密钥加密技术可以包括数字信号算法(DSA)、Rivest-Shamir-Adleman(RSA)、Diffie-Hellman密钥交换、密钥序列化、非对称实用程序、X25519密钥交换等。
在一些实现中,可以通过将加密散列函数应用于内容和内容信息来安全地存储内容和内容信息。加密散列函数可以被用来验证文件和/或消息的完整性、验证密码等。示例加密散列函数可以包括安全散列算法1(SHA-1)、安全散列算法2(SHA-2)、安全散列算法3(SHA-3)、消息摘要5(MD5)、BLAKE2等。
在一些实现中,内容发布平台可以仅对被上载到内容发布平台的内容进行加密。在一些实现中,内容发布平台可以备份内容和内容信息。内容和内容信息的备份可以手动地、自动地、在定期的基础上和/或根据时间表来被执行。
如图1C中所示,并且通过参考标号125,内容发布平台的内容配置引擎可以从数据结构中取回或接收内容(例如,3D视频游戏)和内容信息(例如,3D视频游戏将发布到的平台、3D视频游戏的版本等)。在一些实现中,内容配置引擎可以基于内容将被发布到的平台来重新配置内容,以便为内容将被发布到的每个平台生成重新配置的内容。例如,如图1C的参考标号130-1至130-15所示,内容配置引擎可以为内容将被发布到的十五个平台中的每一个生成重新配置的内容。在一些实现中,内容配置引擎可以并行地、顺序地和/或类似地为每个平台重新配置内容。
在一些实现中,为了在对应平台上实现执行的目的,内容配置引擎可以通过调整内容(例如,内容的源代码)来为对应平台生成每个重新配置的内容。在这样的实现中,内容配置引擎可以针对与对应平台相关联的硬件(例如中央处理单元(CPU)、图形处理单元(GPU)、存储器等)、与对应平台相关联的软件(例如操作系统)和/或与对应平台相关联的其他特征(例如第三方库、视频能力、音频能力等)来调整内容。
在一些实现中,内容配置引擎可以重新编译针对内容的源代码,可以为内容重写源代码的一个或多个部分,可以改变由内容输出的图形的一个或多个大小、颜色、形状、布局等,等,以便为对应平台生成每个重新配置的内容。在一些实现中,内容配置引擎在为对应平台生成每个重新配置的内容时,可以检查用于预处理、编译、加载和/或执行针对对应平台的内容的源代码的选项,以确保相同的默认行为正在发生(例如,这可以包括检查针对对应平台的变量、路径和/或库路径设置);可以确定由源代码使用的每个选项(例如,因为选项的使用可以改变源代码被构建的方式并且可以改变源代码的行为),并且可以确保由对应平台以相同的方式解释所使用的选项;可以检查源代码的精度水平(例如,在整数运算中使用了多少位、在实数和双精度算术中使用了多少位等);可以确定对应平台是否会覆盖源代码的默认优化级别,并且可以降低针对对应平台的优化级别;可以检查字符串常量是如何被处理的;可以确定变量在源代码的创建期间是否被初始化(或未被初始化)(例如,将默认值设置为零、空或其他值);可以检查对应平台如何确定逻辑值(例如,确定值在对应平台上是否被评估为真和假);可以确定在对应平台中是否默认启用了异常处理程序;可以确定源代码是否使用变量值的堆栈或静态储存;可以确定是否存在由源代码使用的任何选项,其可能使使用线程或其他并行执行模型而引发并行执行;可以确定哪里存在源代码使用的任何选项或默认行为,其可能引发不同舍入方法的利用;等。
在一些实现中,当生成每个重新配置的内容时,内容配置引擎可以不修改内容的源代码中与核心功能性相关联的一部分,但是可以修改源代码中与平台功能性相关联的一部分。核心功能性可以包括源代码中与平台无关的部分,诸如已专利的或通用的算法以及定义内容行为方式的其他基本功能性。平台功能性可以包括源代码中定义关于对应平台的特定特性的部分,诸如与通过用户界面呈现信息相关联的源代码。
在一些实施例中,当生成每个重新配置的内容时,内容配置引擎可以在内容的源代码中指定要在其上执行条件编译的符号、可以将调试和/或跟踪定义为内容的源代码中的符号、可以指定要将内容发布到的平台的处理器、可以允许使用不安全关键字的源代码进行编译、可以启用或禁用使得重新配置的内容比所述内容更小、更快和更有效的优化等。
如图1D中所示,内容发布平台的内容编译引擎可以取回或接收针对不同平台的配置内容。在一些实现中,内容编译引擎可以编译为不同平台所重新配置的内容,以便为不同平台生成编译内容。例如,如图1D的参考标号135-1到135-15所示,内容编译引擎可以为内容将被发布到的十五个平台中的每一个生成编译内容。在一些实现中,内容编译引擎可以为每个平台并行地、顺序地和/或类似地编译重新配置的内容。
在一些实现中,当为特定平台捆绑重新配置的内容时,内容编译引擎可以将(例如,以源编程语言编写的)重新配置的内容变换为可以由特定平台理解的另一种编程语言。在一些实现中,内容编译引擎可以包括多个本地编译器,其中每个本地编译器对应于内容将被发布到的多个平台之一(例如,移动设备平台、台式计算机平台等)。例如,如果重新配置的内容要由基于AndroidTM的智能电话利用,则内容编译引擎可以利用由基于AndroidTM的智能电话所利用的本地编译器。
在一些实现中,内容编译引擎可以包括多个交叉编译器,其中每个交叉编译器对应于内容将发布到的多个平台之一。在一些实现中,内容编译引擎可以包括多个虚拟机编译器,其中每个虚拟机编译器对应于内容将被发布到的虚拟机。在一些实现中,内容编译引擎可以包括一个或多个本地编译器、一个或多个交叉编译器以及一个或多个虚拟机编译器的组合。
在一些实现中,内容编译引擎可以包括前端阶段、中间阶段和后端阶段。前端阶段可以根据重新配置的内容的源语言来验证重新配置的内容的语法和语义。对于静态类型的语言,前端阶段可以通过收集类型信息来执行类型检查。如果重新配置的内容在语法上不正确或具有类型错误,则前端阶段可以生成错误和警告,并可以突出显示重新配置的内容中的错误和警告。在一些实现中,前端阶段可以对重新配置的内容执行词法分析、语法分析、语义分析等。前端阶段可以将重新配置的内容变换为中间表示,以用于由中间阶段进一步处理。中间表示可以包括重新配置的内容的较低级别表示。
中间阶段可以对中间表示执行与内容将发布到的平台无关的优化。中间阶段优化的示例可以包括移除重新配置的内容中的无用代码(例如,死代码消除)、移除重新配置的内容中的不可达代码(例如,可达性分析)、发现和传播恒定值(例如,恒定传播)、将计算重新定位到较不频繁执行的位置(例如,循环外)、基于上下文的计算的专门化等。中间阶段可以产生可以由后端阶段利用的优化的中间表示。
后端阶段可以从中间阶段接收优化的中间表示,并且可以执行特定于内容将发布到的平台的更多的分析、变换、优化等。后端阶段可以生成依赖于目标的汇编代码,并且可以执行寄存器分配。后端阶段可以执行指令调度,其对指令进行重新排序以维持并行执行。后端阶段可以输出专用于内容将被发布到的平台的机器代码。
在一些实现中,内容发布平台可以对针对平台的编译内容执行一种或多种调试技术,以确保编译内容正在正确地操作。一个或多个调试技术可以包括:交互式调试、打印调试或跟踪(例如,使用跟踪语句来指示执行流程)、远程调试(例如,调试在与调试器不同的系统上执行的程序)、死后调试(例如,在程序崩溃之后调试程序)、增量调试(例如,自动化测试用例简化)等。
如图1E中所示,并且通过参考标号140,内容发布平台的重复搜索引擎可以取回或接收针对平台的编译内容,并且可以将编译内容与先前发布或上载的内容进行比较。在一些实现中,内容发布平台可以将先前上载的内容存储在(例如,与内容发布平台相关联的)数据结构中,并且先前上载的内容可以包括先前上载的内容的一个或多个部分、一个或多个先前版本的内容、一个或多个先前发行的内容等。例如,如果内容创建者正在上载视频游戏的第二发行的第二版本,则重复搜索引擎可以将视频游戏的第二发行的第二版本同与该视频游戏的第一发行相关联的所有版本以及与该视频游戏的第二发行的第一版本进行比较。
在一些实现中,如果重复搜索引擎发现编译内容中与先前上载的内容匹配一部分,则重复搜索引擎可以修改编译内容以移除编译内容的该部分,以防止重新上载先前上载的内容(例如,以消除重复信息)。例如,如图1E中所示,并且通过参考标号145,重复搜索引擎可以确定针对平台1的编译内容的一部分与先前上载的内容匹配,并且可以修改针对平台1的编译内容以防止针对平台1的该部分编译内容被上载(例如,如果仅改变内容的一部分则防止重新上载重复内容)。这可以节省时间,并且节省与发布或上载编译内容相关联的资源。
如图1F中所示,并且通过参考标号150,内容发布平台的许可管理器引擎可以取回或接收针对平台的编译内容,并且可以将针对平台的编译内容与(例如,与内容发布平台相关联的)数据结构中提供的许可信息进行比较,以确保为编译内容提供许可。在一些实现中,许可管理器引擎可以将编译内容与许可信息进行比较,以便确定编译内容是否违反任何许可和/或需要任何许可。在一些实现中,并且如图1F的参考标号155所示,如果许可管理器引擎确定编译内容违反许可或需要许可,则许可管理器引擎可以取回或获得许可,并且可以激活许可。
在一些实现中,许可管理器引擎可以取回或接收重新配置的内容,并且如果在捆绑重新配置的内容之前需要许可(例如,如果在捆绑重新配置的内容时需要激活许可),则可以执行上述针对编译内容的功能。
如图1G中所示,并且通过参考标号160,内容发布平台的内容上载引擎可以取回或接收针对平台的编译内容,并且可以将针对平台的编译内容上载到托管内容的(例如,与内容发布平台相关联的)数据结构中。例如,如图1G中所示,托管内容的数据结构可以存储针对平台1的编译内容、针对平台2的编译内容和针对平台15的编译内容。在一些实现中,托管内容的数据结构可以使得内容发布平台能够向与由内容创建者设计的十五个平台相关联的客户端设备提供内容。
如图1H中所示,与桌面计算机(例如,与平台1相关联的客户端设备)相关联的桌面用户可以(例如,经由凭证和认证)访问内容发布平台,并且可以请求来自内容发布平台的由内容创建者提供的内容。如图1H中进一步所示,并且通过参考标号165,内容发布平台可以将针对平台1的内容从托管内容的数据结构提供到桌面计算机,并且桌面计算机可以向桌面用户显示内容(例如,3D视频游戏)。
如图1H中所示,与移动设备(例如,与平台2相关联的客户端设备)相关联的移动用户可以(例如,经由凭证和认证)访问内容发布平台,并且可以请求来自内容发布平台的由内容创建者提供的内容。如图1H中进一步所示,并且通过参考标号170,内容发布平台可以将针对平台2的内容从托管内容的数据结构提供到移动设备,并且移动设备可以向移动用户显示内容(例如,3D视频游戏)。
如图1H中所示,与平板计算机(例如,与平台3相关联的客户端设备)相关联的平板用户可以(例如,经由凭证和认证)访问内容发布平台,并且可以请求来自内容发布平台的由内容创建者提供的内容。如图1H中进一步所示,并且通过参考标号175,内容发布平台可以将针对平台3的内容从托管内容的数据结构提供到平板计算机,并且平板计算机可以向平板用户显示内容(例如,3D视频游戏)。
如图1H中所示,与游戏控制台(例如,与平台4相关联的客户端设备)相关联的游戏用户可以(例如,经由凭证和认证)访问内容发布平台,并且可以请求来自内容发布平台的由内容创建者提供的内容。如图1H中进一步所示,并且通过参考标号180,内容发布平台可以将针对平台3的内容从托管内容的数据结构提供到游戏控制台,并且游戏控制台可以向游戏用户显示内容(例如,3D视频游戏)。
在一些实现中,内容发布平台可以发布可以由连接到内容的一个或多个用户和/或客户端设备利用的相同内容。在这样的实现中,内容发布平台可以将内容递送给一个用户(例如,客户端设备)、和/或递送给可能能够或可能不能够实时地或异步地彼此交互的多个用户(例如,多个客户端设备)。例如,多个用户可以利用相同的导览游行,可以实时协作组装虚拟对象,并且可以留下可以在内容发布平台上持久存储的笔记,以供以后由多个用户、其他用户和/或自动化系统访问。
以这种方式,用于针对多个不同计算平台配置和捆绑内容的过程的若干不同阶段是自动化的,这可以移除人类主观性和来自过程的浪费,并且这可以提高过程的速度和效率并且节省计算资源(例如,处理器、存储器等)。此外,本文描述的实现使用严格的计算机化过程来执行先前使用主观人类直觉或输入执行的或者不能由人类执行的任务或角色。这些角色可以包括为每个可能的计算平台重新配置内容、为每个可能的计算平台捆绑重新配置的内容、和/或将编译和重新配置的内容提供给每个可能的计算平台。
如上所指出,图1A-图1H仅作为示例而被提供。其他示例是可能的,并且可以与关于图1A-图1H所描述的不同。
图2是示例环境200的图,其中可以实现本文描述的系统和/或方法。如图2中所示,环境200可以包括客户端设备210、内容发布平台220和网络230。环境200的设备可以经由有线连接、无线连接或有线和无线连接的组合互连。
客户端设备210包括能够接收、生成、存储、处理和/或提供信息(诸如本文描述的信息)的一个或多个设备。例如,客户端设备210可以包括:移动电话(例如智能电话、无线电话等)、膝上型计算机、平板计算机、台式计算机、手持式计算机、游戏设备、可穿戴通信设备(例如智能手表、一副智能眼镜、头戴式设备(HMD)等)或类似类型的设备。在一些实现中,客户端设备210可以从内容发布平台220接收信息和/或向内容发布平台220传输信息。
内容发布平台220包括为多个不同计算平台自动配置和编译内容的一个或多个设备。在一些实现中,内容发布平台220可以被设计为模块化的,使得某些软件组件可以取决于特定需要而被换入或换出。以这种方式,针对用于不同的用途可以容易地和/或快速地重新配置内容发布平台220。在一些实现中,内容发布平台220可以从一个或多个客户端设备210接收信息和/或向一个或多个客户端设备210传输信息。
在一些实现中,如图所示,可以将内容发布平台220托管在云计算环境222中。值得注意的是,虽然本文描述的实现将内容发布平台220描述为被托管在云计算环境222中,但是在一些实现中,内容发布平台220可以不是基于云的(即,可以在云计算环境之外被实现)或者可以是部分地基于云的。
云计算环境222包括托管内容发布平台220的环境。云计算环境222可以提供不需要终端用户知晓托管内容发布平台220的(多个)系统和/或(多个)设备的物理位置和配置的计算、软件、数据访问、储存等服务。如图所示,云计算环境222可以包括一组计算资源224(统称为“计算资源224”以及单独称为“计算资源224”)。
计算资源224包括一个或多个个人计算机、工作站计算机、服务器设备或其他类型的计算和/或通信设备。在一些实现中,计算资源224可以托管内容发布平台220。云资源可以包括在计算资源224中执行的计算实例、在计算资源224中提供的储存设备、由计算资源224提供的数据传输设备等。在一些实现中,计算资源224可以经由有线连接、无线连接或有线连接和无线连接的组合来与其他计算资源224通信。
如图2中进一步所示,计算资源224包括一组云资源,诸如一个或多个应用(“APP”)224-1、一个或多个虚拟机(“VM”)224-2、虚拟化储存器(“VS”)224-3、一个或多个管理程序(“HYP”)224-4等。
应用224-1包括可以提供给客户端设备210或由客户端设备210访问的一个或多个软件应用。应用224-1可以消除在客户端设备210上安装和执行软件应用的需要。例如,应用224-1可以包括与内容发布平台220相关联的软件和/或能够经由云计算环境222提供的任何其他软件。在一些实现中,一个应用224-1可以经由虚拟机224-2来向/从一个或多个其他应用224-1发送/接收信息。
虚拟机224-2包括像物理机器一样执行程序的机器(例如,计算机)的软件实现。虚拟机224-2可以是系统虚拟机或过程虚拟机,这取决于虚拟机224-2与任何真实机器的对应性的使用和程度。系统虚拟机可以提供支持完整操作系统(“OS”)的执行的完整系统平台。过程虚拟机可以执行单个程序,并且可以支持单个过程。在一些实现中,虚拟机224-2可以代表用户(例如,客户端设备210的用户或内容发布平台220的运营商)执行,并且可以管理云计算环境222的基础设施,诸如数据管理、同步或长时间数据传输。
虚拟化储存器224-3包括一个或多个储存系统和/或在储存系统或计算资源224的存储系统或设备内使用虚拟化技术的一个或多个设备。在一些实现中,在储存系统的上下文中,虚拟化的类型可以包括块虚拟化和文件虚拟化。块虚拟化可以是指逻辑储存从物理储存中的抽象(或分离),使得可以访问储存系统而不考虑物理储存或异构结构。分离可以允许储存系统的管理员在关于管理员如何管理终端用户的储存方面具有灵活性。文件虚拟化可以消除在文件级访问的数据与文件物理存储的位置之间的依赖性。这可以实现储存使用、服务器整合和/或无中断文件迁移性能的优化。
管理程序224-4可以提供允许多个操作系统(例如,“客户操作系统”)在主计算机(诸如计算资源224)上同时执行的硬件虚拟化技术。管理程序224-4可以向客户操作系统呈现虚拟操作平台,并且可以管理客户操作系统的执行。各种操作系统的多个实例可以共享虚拟化硬件资源。
网络230包括一个或多个有线和/或无线网络。例如,网络230可以包括:蜂窝网络(例如第五代(5G)网络、长期演进(LTE)网络、第三代(3G)网络、码分多址(CDMA)网络等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网络(例如公共交换电话网(PSTN))、专用网络、自组织网络、内联网、因特网、基于光纤的网络等、和/或这些或其他类型的网络的组合。
提供图2中所示的设备和网络的数量和布置作为示例。实际上,可能存在附加的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络,或者与图2中所示的那些不同地进行布置的设备和/或网络。此外,图2中所示的两个或更多个设备可以在单个设备中实现,或者图2中所示的单个设备可以实现为多个分布式设备。附加地或备选地,环境200的一组设备(例如一个或多个设备)可以执行被描述为由环境200的另一组设备执行的一个或多个功能。
图3是设备300的示例组件的图。设备300可以对应于客户端设备210、内容发布平台220和/或计算资源224。在一些实现中,客户端设备210、内容发布平台220和/或计算资源224可以包括一个或多个设备300和/或设备300的一个或多个组件。如图3中所示,设备300可以包括总线310、处理器320、存储器330、储存组件340、输入组件350、输出组件360和通信接口370。
总线310包括允许在设备300的组件之间通信的组件。处理器320以硬件、固件或硬件和软件的组合来实现。处理器320是中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他类型的处理组件。在一些实现中,处理器320包括一个或多个处理器,其能够被编程为执行功能。存储器330包括随机存取存储器(RAM)、只读存储器(ROM)和/或存储供处理器320使用的信息和/或指令的其他类型的动态或静态储存设备(例如闪存、磁存储器和/或光存储器)。
储存组件340存储与设备300的操作和使用有关的信息和/或软件。例如,储存组件340可以包括硬盘(例如磁盘、光盘、磁光盘、和/或固态盘)、光盘(CD)、数字通用光盘(DVD)、软盘、盒式磁带、磁带和/或其他类型的与对应驱动器一起的非暂时性计算机可读介质。
输入组件350包括允许设备300接收信息的组件,诸如经由用户输入(例如触摸屏显示器、键盘、小键盘、鼠标、按钮、开关和/或麦克风)。附加地或备选地,输入组件350可以包括用于感测信息的传感器(例如全球定位系统(GPS)组件、加速计、陀螺仪和/或致动器)。输出组件360包括提供来自设备300的输出信息的组件(例如显示器、扬声器和/或一个或多个发光二极管(LED))。
通信接口370包括类似收发器的组件(例如收发器和/或分开的接收器和发射器),其使得设备300能够例如经由有线连接、无线连接或有线和无线连接的组合来与其他设备通信。通信接口370可以允许设备300从另一设备接收信息和/或向另一设备提供信息。例如,通信接口370可以包括以太网接口、光接口、同轴接口、红外接口、射频(RF)接口、通用串行总线(USB)接口、Wi-Fi接口、蜂窝网络接口等。
设备300可以执行本文描述的一个或多个过程。设备300可以基于处理器320执行由非暂时性计算机可读介质(诸如存储器330和/或储存组件340)存储的软件指令来执行这些过程。计算机可读介质在本文中被定义为非暂时性存储器设备。存储器设备包括单个物理储存设备内的存储器空间或分布在多个物理储存设备上的存储器空间。
软件指令可以经由通信接口370而从另一计算机可读介质或从另一设备被读入存储器330和/或储存组件340中。当被执行时,存储在存储器330和/或储存组件340中的软件指令可以使处理器320执行本文描述的一个或多个过程。附加地或备选地,可以使用硬连线电路代替软件指令或与软件指令组合以执行本文描述的一个或多个过程。因此,本文描述的实现不限于硬件电路和软件的任何特定组合。
提供图3中所示的组件的数量和布置作为示例。实际上,设备300可以包括附加的组件、更少的组件、不同的组件、或者与图3中所示的那些不同地布置的组件。附加地或备选地,设备300的一组组件(例如,一个或多个组件)可以执行被描述为由设备300的另一组组件执行的一个或多个功能。
图4是用于为多个不同计算平台自动配置和捆绑内容的示例过程400的流程图。在一些实现中,图4的一个或多个处理块可以由内容发布平台220执行。在一些实现中,图4的一个或多个处理块可以由另一设备或与内容发布平台220分离的或包括内容发布平台220的一组设备来执行,诸如客户端设备210。
如图4中所示,过程400可以包括接收发布内容的请求、该内容和内容信息(框410)。例如,内容发布平台220(例如,使用计算资源224、处理器320等)可以从客户端设备210接收发布内容的请求、内容和内容信息。在一些实现中,内容创建者可以使客户端设备210向内容发布平台220提供创建以发布内容的请求,并且内容发布平台220可以接收发布内容的请求。在一些实现中,发布内容的请求可以包括内容信息,诸如指示内容创建者的用户名和密码的信息、与内容相关联的元数据(例如,内容将发布到的平台、与内容相关联的一个或多个游戏包(bundle)、与内容相关联的一个或多个场景等)、针对内容的发行标识符、针对请求的参考标号、内容的版本等。在一些实现中,平台可以包括硬件平台(例如x86架构、32位架构、64位架构等)、软件平台(例如AndroidTM、iOSTM、Microsoft WindowsTM、JavaTM、LinuxTM、macOSTM、PlayStation 4TM等)、虚拟平台和/或组合硬件、软件和虚拟平台。
在一些实现中,客户端设备210可以将内容提供给内容发布平台220,并且内容发布平台220可以接收内容。在一些实现中,内容可以包括软件(例如文字处理软件、电子邮件软件、数据处理软件、财务软件等)、视频游戏(例如2D视频游戏、3D视频游戏、虚拟现实视频游戏等)、视频、音频文件等。
以这种方式,内容发布平台220可以从客户端设备210接收发布内容的请求、内容和内容信息。
如图4中进一步所示,过程400可以包括存储内容和内容信息(框420)。例如,内容发布平台220(例如,使用计算资源224、处理器320等)可以存储内容和内容信息。在一些实现中,基于发布内容的请求,内容发布平台220可以将内容和内容信息存储在与内容发布平台220相关联的数据结构中。在一些实现中,内容发布平台220可以将内容和内容信息存储在数据库中,该数据库包括用户名字段、密码字段、内容字段、元数据字段、发行标识符(ID)字段、参考标号字段、版本字段等。在一些实现中,用户名字段可以包括与内容发布平台的用户相关联的用户名,密码字段可以包括与用户名相关联的密码,内容字段可以包括上载到内容发布平台220的内容,元数据字段可以包括内容的元数据(例如将内容发布到的平台、与内容相关联的包、与内容相关联的场景等),发行标识符字段可以包括与内容相关联的发行标识符,参考标号字段可以包括与发布内容的请求相关联的参考标号,版本字段可以包括与内容相关联的版本等。
在一些实现中,内容发布平台220可以通过使用加密技术和/或其他安全技术加密内容和内容信息来安全地存储内容和内容信息。
以这种方式,内容发布平台220可以存储内容和内容信息。
如图4中进一步所示,过程400可以包括基于内容信息针对不同平台重新配置内容,以生成不同的重新配置的内容(框430)。例如,内容发布平台220(例如,使用计算资源224、处理器320等)可以基于内容信息来为不同平台重新配置内容,以生成不同的重新配置的内容。在一些实现中,内容发布平台220的内容配置引擎可以从数据结构取回或接收内容和内容信息。在一些实现中,内容配置引擎可以基于内容将发布到的平台来重新配置内容,以便针对内容将发布到的每个平台生成重新配置的内容。在一些实现中,内容配置引擎可以并行地、顺序地和/或类似地为每个平台重新配置内容。
在一些实现中,为了在对应平台上实现执行的目的,内容配置引擎可以通过调整内容(例如,内容的源代码)来为对应平台生成每个重新配置的内容。在这样的实现中,内容配置引擎可以针对与对应平台相关联的硬件、与对应平台相关联的软件、和/或与对应平台相关联的其他特征(例如第三方库、视频能力、音频能力等)来调整内容。
在一些实现中,内容配置引擎可以重新编译针对内容的源代码,可以为内容重写源代码的一个或多个部分,可以改变由内容输出的图形的一个或多个大小、颜色、形状、布局等,等,以便为对应平台生成每个重新配置的内容。在一些实现中,当生成每个重新配置的内容时,内容配置引擎可以不修改与核心功能性相关联的内容的源代码的一部分,但是可以修改与平台功能性相关联的源代码的一部分。核心功能性可以包括与平台无关的源代码的部分,诸如专利或通用算法以及定义内容行为方式的其他基本功能性。平台功能性可以包括源代码的部分,其定义关于对应平台的特定特性,诸如与通过用户界面呈现信息相关联的源代码。
以这种方式,内容发布平台220可以基于内容信息来为不同平台重新配置内容,以生成不同的重新配置的内容。
如图4中进一步所示,过程400可以包括捆绑不同的重新配置的内容以为不同的平台生成不同的编译内容(框440)。例如,内容发布平台220(例如,使用计算资源224、处理器320等)可以编译不同的重新配置的内容以针对不同的平台生成不同的编译内容。在一些实现中,内容发布平台220的内容编译引擎可以取回或接收针对不同平台的重新配置的内容。在一些实现中,内容编译引擎可以编译针对不同平台的重新配置的内容,以便为不同平台生成编译的内容。在一些实现中,内容编译引擎可以并行地、顺序地和/或类似地为每个平台编译重新配置的内容。
在一些实现中,当为特定平台捆绑重新配置的内容时,内容编译引擎可以将(例如,以源编程语言编写的)重新配置的内容变换为可以由特定平台理解的另一种编程语言。在一些实现中,内容编译引擎可以包括多个本地编译器,其中每个本地编译器对应于内容将被发布到的多个平台之一。例如,如果重新配置的内容要由基于AndroidTM的智能电话利用,则内容编译引擎可以利用由基于AndroidTM的智能电话所利用的本地编译器。
在一些实现中,内容编译引擎可以包括多个交叉编译器,其中每个交叉编译器与内容将发布到的多个平台之一相对应。在一些实现中,内容编译引擎可以包括多个虚拟机编译器,其中每个虚拟机编译器与内容将发布到的虚拟机相对应。在一些实现中,内容编译引擎可以包括一个或多个本地编译器、一个或多个交叉编译器以及一个或多个虚拟机编译器的组合。
在一些实现中,内容编译引擎可以包括前端阶段、中间阶段和后端阶段。前端阶段可以根据重新配置的内容的源语言来验证重新配置的内容的语法和语义。对于静态类型的语言,前端阶段可以通过收集类型信息来执行类型检查。如果内容在语法上不正确或具有类型错误,则前端阶段可能会生成错误和警告,并可以突出显示重新配置的内容中的错误和警告。在一些实现中,前端阶段可以对重新配置的内容执行词法分析、语法分析、语义分析等。前端阶段可以将重新配置的内容变换为中间表示,以用于由中间阶段进一步处理。中间表示可以包括重新配置的内容的较低级别表示。
中间阶段可以对中间表示执行优化,该优化与内容将发布到的平台无关。中间阶段优化的示例可以包括移除重新配置的内容中的无用代码(例如,死代码消除)、移除重新配置的内容中的不可达代码(例如,可达性分析)、发现和传播恒定值(例如,恒定传播)、将计算重新定位到较不频繁执行的位置(例如,循环外)、基于上下文的计算的专门化等。中间阶段可以产生可以由后端阶段利用的优化的中间表示。
后端阶段可以从中间阶段接收优化的中间表示,并且可以执行特定于内容将发布到的平台的更多的分析、变换、优化等。后端阶段可以生成依赖于目标的汇编代码,并且可以执行寄存器分配。后端阶段可以执行指令调度,其对指令进行重新排序以维持并行执行。后端阶段可以输出专用于内容将被发布到的平台的机器代码。
在一些实现中,内容发布平台220可以通过在内容发布平台220处模拟针对每个目的地平台的经编译的不同重新配置的内容的操作来测试编译的不同重新配置的内容;通过将经编译的不同重新配置的内容发送到每个目的地平台,确定经编译的不同重新配置的内容如何执行,并且基于经编译的不同重新配置的内容的执行方式来改进经编译的不同重新配置的内容(例如,通过提高速度、修复错误、重新配置经编译的不同重新配置的内容、重写经编译的不同重新配置的内容等);等。
以这种方式,内容发布平台220可以编译不同的重新配置的内容以为不同平台生成不同的编译内容。
如图4中进一步所示,如果一个或多个不同的编译内容包括重复信息,则过程400可以包括修改不同编译内容中的一个或多个(框450)。例如,如果一个或多个不同的编译内容包括重复信息,则内容发布平台220(例如,使用计算资源224、处理器320等)可以修改不同编译内容中的一个或多个。在一些实现中,内容发布平台220的重复搜索引擎可以取回或接收针对平台的编译内容,并且可以将编译内容与先前发布或上载的内容进行比较。在一些实现中,内容发布平台220可以将先前上载的内容存储在数据结构中,并且先前上载的内容可以包括先前上载的内容的一个或多个部分、一个或多个先前版本的内容、一个或多个先前发行的内容等。例如,如果内容创建者正在上载视频游戏的第二发行的第二版本,则重复搜索引擎可以将视频游戏的第二发行的第二版本与与该视频游戏的第一发行相关联的所有版本以及与该视频游戏的第二发行的第一版本进行比较。
在一些实施例中,如果重复搜索引擎发现编译内容中与先前上载的内容匹配的一部分,则重复搜索引擎可以修改编译内容以移除编译内容的该部分,以防止重新上载先前上载的内容(例如,以消除重复信息)。这可以节省时间,并且节省与发布或上载编译内容相关联的资源。
以这种方式,如果一个或多个不同的编译内容包括重复信息,则内容发布平台220可以修改不同编译内容中的一个或多个。
如图4中进一步所示,过程400可以包括将不同的编译内容与许可信息进行比较,以及取回针对不同编译内容的任何必要许可(框460)。例如,内容发布平台220(例如,使用计算资源224、处理器320等)可以将不同的编译内容与许可信息进行比较,并且可以取回针对不同编译内容的任何必要许可。在一些实施例中,内容发布平台220的许可管理器引擎可以取回或接收针对平台的编译内容,并且可以将针对平台的编译内容与数据结构中提供的许可信息进行比较,以确保针对编译内容提供许可。在一些实现中,许可管理器引擎可以将编译内容与许可信息进行比较,以便确定编译内容是否违反任何许可和/或需要任何许可。在一些实现中,如果许可管理器引擎确定编译内容违反许可或需要许可,则许可管理器引擎可以取回或获得许可,并且可以激活许可。
以这种方式,内容发布平台220可以将不同的编译内容与许可信息进行比较,并且可以取回针对不同编译内容的任何必要许可。
如图4中进一步所示,过程400可以包括将不同的编译内容提供给与不同平台相对应的不同客户端设备(框470)。例如,内容发布平台220(例如,使用计算资源224、处理器320等)可以将不同的编译内容提供给与不同平台相对应的不同客户端设备210。在一些实现中,与不同客户端设备210(例如桌面计算机、移动设备、平板计算机、游戏控制台等)相关联的不同用户可以(例如,经由凭证和认证)访问内容发布平台,并且可以请求来自内容发布平台220的由内容创建者提供的内容。在一些实现中,内容发布平台220可以以与不同客户端设备210相关联的不同格式来将内容从托管内容的数据结构提供到不同的客户端设备210,并且不同的客户端设备210可以向不同的用户显示该内容。
以这种方式,内容发布平台220可以将不同的编译内容提供给与不同平台相对应的不同客户端设备210。
尽管图4示出了过程400的示例块,但是在一些实现中,过程400可以包括附加的块、更少的块、不同的块或者与图4中描绘的那些不同地布置的块。附加地或备选地,可以并行执行过程400的两个或更多块。
本文描述的一些实现提供了一种内容发布平台,其针对多个不同计算平台自动配置和编译内容。例如,内容发布平台可以接收内容和将内容发布到多个不同平台(例如计算平台)的请求,并且可以为不同平台配置内容以生成不同的内容配置。内容发布平台可以编译不同的内容配置以为不同平台生成不同的编译内容,并且如果不同的编译内容中的一个或多个包括重复信息(例如,与内容发布平台先前发布的信息相同的信息),则可以修改该不同的编译内容中的一个或多个。内容发布平台可以确定是否为不同的编译内容提供许可,并且可以取回针对不同编译内容的任何必要许可。内容发布平台可以将不同的编译内容提供给与不同平台相对应的不同客户端设备。
前述公开内容提供了说明和描述,但并非旨在穷举或将实现限于所公开的精确形式。鉴于以上公开内容,修改和变化是可能的,或者可以从所述实现的实践中获得。
如本文所使用的,术语“组件”旨在广义地解释为硬件、固件或硬件和软件的组合。
本文已经描述了和/或在附图中示出了某些用户界面。用户界面可以包括图形用户界面、非图形用户界面、基于文本的用户界面等。用户界面可以提供用于显示的信息。在一些实现中,诸如通过经由提供用于显示的用户界面的设备的输入组件提供输入,用户可以与信息交互。在一些实现中,用户界面可以由设备和/或用户配置(例如,用户可以改变用户界面的大小、经由用户界面提供的信息、经由用户界面提供的信息的位置等)。附加地或备选地,用户界面可以被预先配置为标准配置、基于在其上显示用户界面的设备的类型的特定配置、和/或基于与在其上显示用户界面的设备相关联的能力和/或规范的一组配置。
显而易见的是,本文描述的系统和/或方法可以以不同形式的硬件、固件或硬件和软件的组合来实现。用于实现这些系统和/或方法的实际专用控制硬件或软件代码不限制这些实现。因此,本文描述了系统和/或方法的操作和行为,而没有参考特定的软件代码——应该理解,可以将软件和硬件设计为基于本文的描述来实现系统和/或方法。
尽管在权利要求中陈述和/或在说明书中公开了特征的特定组合,但是这些组合并不旨在限制可能实现的公开。实际上,许多这些特征可以以未在权利要求中具体陈述和/或在说明书中公开的方式进行组合。尽管下面列出的每个从属权利要求可以直接仅依赖于一个权利要求,但是可能实现的公开包括每个从属权利要求与权利要求书中的每个其他权利要求的组合。
除非明确地如此描述,否则本文使用的元件、动作或指令不应被解释为是关键或必要的。此外,如本文所使用的,冠词“一(a)”和“一个(an)”旨在包括一个或多个项,并且可以与“一个或多个”互换使用。此外,如本文所使用的,术语“组”旨在包括一个或多个项(例如,相关项、不相关项、相关和不相关项的组合等),并且可以与“一个或多个”互换使用。在仅有一个项的情况下,术语“一个”或类似的语言被使用。此外,如本文所使用的,术语“具有”、“有”等旨在是开放式术语。此外,除非另有明确说明,否则短语“基于”旨在表示“至少部分地基于”。

Claims (20)

1.一种方法,包括:
由设备接收为不同的计算平台配置和编译内容的请求;
由所述设备接收所述内容和与所述内容相关联的内容信息,
所述内容信息包括:
与所述内容相关联的元数据,
与所述内容相关联的发行标识符,以及
与所述内容相关联的版本;
由所述设备促进由内容创建者对一个或多个经标记的信息类别的选择;基于所述请求、所述内容信息和所述一个或多个经标记的信息类别,由所述设备为所述不同的计算平台重新配置所述内容,以生成不同的重新配置的内容;
由所述设备确定所述不同的重新配置的内容是否需要许可的激活;
当所述不同的重新配置的内容需要所述许可的激活时,由所述设备获取所述许可;
由所述设备为所述不同的重新配置的内容激活所述许可;
由所述设备编译所述不同的重新配置的内容,以为所述不同的计算平台生成不同的编译内容,
其中编译所述不同的重新配置的内容包括:
将所述不同的重新配置的内容转换为由所述不同的计算平台理解的编程语言;
由所述设备将所述不同的编译内容存储在数据结构中;
由所述设备从与所述不同的计算平台中的至少一个计算平台相关联的客户端设备接收针对所述内容的请求;以及
由所述设备基于针对所述内容的所述请求向所述客户端设备提供所述不同的编译内容中的至少一项。
2.根据权利要求1所述的方法,还包括:
将所述内容和所述内容信息安全地存储在数据结构中。
3.根据权利要求1所述的方法,其中编译所述不同的重新配置的内容包括:
将所述不同的重新配置的内容转换为中间表示;
对所述中间表示执行优化以生成经优化的中间表示;以及
执行对所述经优化的中间表示的分析,以生成针对所述不同的计算平台的所述不同的编译内容。
4.根据权利要求3所述的方法,其中所述优化包括以下中的一项或多项:
移除所述不同的重新配置的内容中的无用代码,或者
移除所述不同的重新配置的内容中的不可达代码。
5.根据权利要求1所述的方法,还包括:
确定所述不同的编译内容中的至少一项与所述数据结构中的先前存储的内容匹配;以及
在将所述不同的编译内容存储在所述数据结构中之前,从所述不同的编译内容移除所述不同的编译内容中的所述至少一项。
6.根据权利要求1所述的方法,其中重新配置所述内容包括:
防止对所述内容的与平台无关的部分的修改;以及
修改所述内容的与平台功能性相关联的其他部分。
7.根据权利要求1所述的方法,其中所述内容信息还包括:
与所述内容相关联的一个或多个游戏包,以及
针对所述请求的参考标号。
8.一种装置,包括:
一个或多个存储器;以及
一个或多个处理器,被通信地耦合到所述一个或多个存储器以:
接收为不同的计算平台发布内容的请求;
接收待为所述不同的计算平台发布的所述内容;
促进由内容创建者对一个或多个经标记的信息类别的选择;
基于所述一个或多个经标记的信息类别来为所述不同的计算平台重新配置所述内容,以生成不同的重新配置的内容;
基于所述一个或多个经标记的信息类别来编译所述不同的重新配置的内容,以为所述不同的计算平台生成不同的编译内容;
其中在编译所述不同的重新配置的内容时,所述一个或多个处理器用以:
将所述不同的重新配置的内容转换为中间表示;
对所述中间表示执行优化以生成经优化的中间表示;以及
执行对所述经优化的中间表示的分析,以生成针对所述不同的计算平台的所述不同的编译内容,
其中所述优化包括以下中的一项或多项:
移除所述不同的重新配置的内容中的无用代码,或者
移除所述不同的重新配置的内容中的不可达代码化;
将所述不同的编译内容存储在数据结构中;
从与所述不同的计算平台中的至少一个计算平台相关联的客户端设备接收针对所述内容的请求;以及
基于针对所述内容的所述请求,向所述客户端设备提供所述不同的编译内容中的至少一项。
9.根据权利要求8所述的设备,其中所述一个或多个处理器在重新配置所述内容时用以:
为与所述不同的计算平台相关联的硬件和软件修改所述内容。
10.根据权利要求8所述的设备,其中所述一个或多个处理器还用以:
确定所述不同的重新配置的内容需要许可的激活;
基于确定所述不同的重新配置的内容需要所述许可的激活来获取所述许可;以及
为所述不同的重新配置的内容激活所述许可。
11.根据权利要求8所述的设备,其中所述一个或多个处理器还用以:
接收与所述内容相关联的内容信息,
所述内容信息包括:
与所述内容相关联的元数据,
与所述内容相关联的发行标识符,以及
与所述内容相关联的版本;以及
存储所述内容和所述内容信息。
12.根据权利要求8所述的设备,其中所述一个或多个处理器还用以:
确定所述不同的编译内容中的至少一项与所述数据结构中的先前存储的内容匹配;以及
在将所述不同的编译内容存储在所述数据结构中之前从所述不同的编译内容移除所述不同的编译内容中的所述至少一项。
13.根据权利要求8所述的设备,其中在重新配置所述内容时,所述一个或多个处理器用以:
防止对所述内容的与平台无关的部分的修改;以及
修改所述内容的与平台功能性相关联的其他部分。
14.一种存储指令的非暂时性计算机可读介质,所述指令包括:
一个或多个指令,所述一个或多个指令当由一个或多个处理器执行时使所述一个或多个处理器:
接收为不同的计算平台配置和编译内容的请求;
接收所述内容和与所述内容相关联的内容信息,
所述内容信息包括:
与所述内容相关联的元数据,
与所述内容相关联的发行标识符,以及
与所述内容相关联的版本;
安全地存储所述内容和所述内容信息;
促进由内容创建者对一个或多个经标记的信息类别的选择;
基于所述请求、所述内容信息和所述一个或多个经标记的信息类别,为所述不同的计算平台重新配置所述内容,以生成不同的重新配置的内容;
编译所述不同的重新配置的内容,以为所述不同的计算平台生成不同的编译内容,其中使所述一个或多个处理器编译所述不同的重新配置的内容的所述一个或多个指令还使所述一个或多个处理器:
将所述不同的重新配置的内容转换为由所述不同的计算平台理解的编程语言;
将所述不同的编译内容存储在数据结构中;
从与所述不同的计算平台中的至少一个计算平台相关联的客户端设备接收针对所述内容的请求;以及
基于针对所述内容的所述请求,向所述客户端设备提供所述不同的编译内容中的至少一项。
15.根据权利要求14所述的非暂时性计算机可读介质,其中所述指令还包括:
一个或多个指令,所述一个或多个指令当由所述一个或多个处理器执行时使所述一个或多个处理器:
确定所述不同的重新配置的内容是否需要许可的激活;
当所述不同的重新配置的内容需要所述许可的激活时,获取所述许可;以及
为所述不同的重新配置的内容激活所述许可。
16.根据权利要求14所述的非暂时性计算机可读介质,其中使所述一个或多个处理器重新配置所述内容的指令还使所述一个或多个处理器:防止对所述内容的与平台无关的部分的修改;以及
修改所述内容的与平台功能性相关联的其他部分。
17.根据权利要求14所述的非暂时性计算机可读介质,其中所述指令还包括:
一个或多个指令,所述一个或多个指令当由所述一个或多个处理器执行时使所述一个或多个处理器:
确定所述不同的编译内容中的所述至少一项的一部分与所述数据结构中的先前存储的内容匹配;以及
在将所述不同的编译内容存储在所述数据结构中之前,从所述不同的编译内容移除所述不同的编译内容中的所述至少一项的所述一部分。
18.根据权利要求14所述的非暂时性计算机可读介质,其中使所述一个或多个处理器重新配置所述内容的所述一个或多个指令使所述一个或多个处理器:
为与所述不同的计算平台相关联的硬件和软件修改所述内容。
19.根据权利要求14所述的非暂时性计算机可读介质,其中使所述一个或多个处理器编译所述不同的重新配置的内容的所述一个或多个指令使所述一个或多个处理器:
将所述不同的重新配置的内容转换为中间表示;
对所述中间表示执行优化以生成经优化的中间表示;以及
对所述经优化的中间表示执行分析,以为所述不同的计算平台生成所述不同的编译内容。
20.根据权利要求19所述的非暂时性计算机可读介质,其中所述优化包括以下中的一项或多项:
移除所述不同的重新配置的内容中的无用代码,或者
移除所述不同的重新配置的内容中的不可达代码。
CN201910073654.XA 2018-01-26 2019-01-25 跨平台内容管理和分发系统 Active CN110083382B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/881,039 US10402178B2 (en) 2018-01-26 2018-01-26 Cross platform content management and distribution system
US15/881,039 2018-01-26

Publications (2)

Publication Number Publication Date
CN110083382A CN110083382A (zh) 2019-08-02
CN110083382B true CN110083382B (zh) 2023-05-26

Family

ID=65228421

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910073654.XA Active CN110083382B (zh) 2018-01-26 2019-01-25 跨平台内容管理和分发系统

Country Status (3)

Country Link
US (2) US10402178B2 (zh)
EP (1) EP3518098B1 (zh)
CN (1) CN110083382B (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10402178B2 (en) 2018-01-26 2019-09-03 Accenture Global Solutions Limited Cross platform content management and distribution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) * 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10915302B2 (en) * 2018-12-11 2021-02-09 The Mathworks, Inc. Identification and visualization of associations among code generated from a model and sources that affect code generation
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
CN110851353B (zh) * 2019-10-22 2023-03-31 天津大学 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法
CN111090454B (zh) * 2019-11-25 2021-03-23 广州极点三维信息科技有限公司 一种基于odb的自动化处理方法、装置和设备
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
CN112073753B (zh) * 2020-09-18 2021-09-07 北京字节跳动网络技术有限公司 一种多媒体数据的发布方法、装置、设备及介质
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
CN113254827A (zh) * 2021-05-21 2021-08-13 四川金熊猫新媒体有限公司 信息发布处理方法及装置
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN115129323B (zh) * 2022-06-30 2023-04-11 北京新唐思创教育科技有限公司 数据资源包的处理方法、装置、设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890428B2 (en) * 2005-02-04 2011-02-15 Microsoft Corporation Flexible licensing architecture for licensing digital application
US9645814B1 (en) * 2015-05-04 2017-05-09 Amazon Technologies, Inc. Generating and publishing applications for multiple platforms

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065750B2 (en) 1999-02-17 2006-06-20 Elbrus International Method and apparatus for preserving precise exceptions in binary translated code
US20030088639A1 (en) * 2001-04-10 2003-05-08 Lentini Russell P. Method and an apparatus for transforming content from one markup to another markup language non-intrusively using a server load balancer and a reverse proxy transcoding engine
US7200668B2 (en) * 2002-03-05 2007-04-03 Sun Microsystems, Inc. Document conversion with merging
US7346897B2 (en) * 2002-11-20 2008-03-18 Purenative Software Corporation System for translating programming languages
US7584354B2 (en) * 2003-01-31 2009-09-01 Intel Corporation Implementing portable content protection to secure secrets
US20070067569A1 (en) * 2005-09-21 2007-03-22 Cisco Technology, Inc. Method and system for communicating validation information to a web cache
US9712486B2 (en) 2006-09-25 2017-07-18 Weaved, Inc. Techniques for the deployment and management of network connected devices
US9064010B2 (en) * 2006-12-13 2015-06-23 Quickplay Media Inc. Encoding and transcoding for mobile media
US9069599B2 (en) 2008-06-19 2015-06-30 Servicemesh, Inc. System and method for a cloud computing abstraction layer with security zone facilities
US9104738B2 (en) * 2008-06-19 2015-08-11 Tropare, Inc. Leveraging collaborative cloud services to build and share apps
AU2010202034B1 (en) * 2010-04-07 2010-12-23 Limelight Networks, Inc. Partial object distribution in content delivery network
US9043919B2 (en) 2008-10-21 2015-05-26 Lookout, Inc. Crawling multiple markets and correlating
EP2449466A1 (en) 2009-06-30 2012-05-09 Citrix Systems, Inc. Methods and systems for selecting a desktop execution location
EP2553571B1 (en) * 2010-03-31 2020-12-23 Irdeto B.V. A system and method for encapsulating and enabling protection through diverse variations in software libraries
CA2806881C (en) * 2010-07-26 2016-06-14 Invidi Technologies Corporation Universally interactive request for information
US8312173B2 (en) * 2010-10-08 2012-11-13 Lumi Technologies, Inc. Scalable synchronization of events among server and clients with varying lag-times
US20130060767A1 (en) * 2011-06-28 2013-03-07 Redbox Automated Retail, Llc System and method for searching and browsing for directly and indirectly matching media content
US20150074397A1 (en) * 2012-03-13 2015-03-12 Cognilore Inc. Method of distributing digital publications incorporating user generated and encrypted content with unique fingerprints
US9413710B1 (en) * 2012-06-23 2016-08-09 Microstrategy Incorporated Targeted content delivery
US9223550B1 (en) 2013-10-17 2015-12-29 Google Inc. Portable handling of primitives for concurrent execution
US9141365B1 (en) 2013-12-20 2015-09-22 The Mathworks, Inc. Installation of a technical computing environment customized for a target hardware platform
US10747511B2 (en) 2015-04-28 2020-08-18 Microsoft Technology Licensing, Llc Compiler optimization of coroutines
US9549044B1 (en) 2015-11-23 2017-01-17 International Business Machines Corporation Data processing
US10402178B2 (en) 2018-01-26 2019-09-03 Accenture Global Solutions Limited Cross platform content management and distribution system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890428B2 (en) * 2005-02-04 2011-02-15 Microsoft Corporation Flexible licensing architecture for licensing digital application
US9645814B1 (en) * 2015-05-04 2017-05-09 Amazon Technologies, Inc. Generating and publishing applications for multiple platforms

Also Published As

Publication number Publication date
EP3518098B1 (en) 2023-08-02
US20190235848A1 (en) 2019-08-01
US10402178B2 (en) 2019-09-03
US10203941B1 (en) 2019-02-12
EP3518098A1 (en) 2019-07-31
CN110083382A (zh) 2019-08-02

Similar Documents

Publication Publication Date Title
CN110083382B (zh) 跨平台内容管理和分发系统
US11159392B2 (en) Managing service deployment
KR102163501B1 (ko) 애플리케이션 내의 대역외 프레임워크 라이브러리
US9740464B2 (en) Unified intermediate representation
KR102077360B1 (ko) 애플리케이션에 대한 중간 언어 코드로부터 네이티브 코드를 생성하는 기법
US10416972B1 (en) Generating closures from abstract representation of source code
US11816019B2 (en) Testing an application in a production infrastructure temporarily provided by a cloud computing environment
US8938712B2 (en) Cross-platform virtual machine and method
US9733930B2 (en) Logical level difference detection between software revisions
US11406901B2 (en) Addressable assets in software development
CN108351766B (zh) 从移动设备创建和修改应用
US10338892B2 (en) Dynamic provisioning of a set of tools based on project specifications
KR102054980B1 (ko) 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템
JP7410269B2 (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
US20220308956A1 (en) Verifying object file canisters using built-in reverse relocation integrity checking
EP4298504A1 (en) Operating system partitioning of different users for single-user applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant