WO2022170801A1 - iOS应用程序构建方法及装置、电子设备及存储介质 - Google Patents

iOS应用程序构建方法及装置、电子设备及存储介质 Download PDF

Info

Publication number
WO2022170801A1
WO2022170801A1 PCT/CN2021/130205 CN2021130205W WO2022170801A1 WO 2022170801 A1 WO2022170801 A1 WO 2022170801A1 CN 2021130205 W CN2021130205 W CN 2021130205W WO 2022170801 A1 WO2022170801 A1 WO 2022170801A1
Authority
WO
WIPO (PCT)
Prior art keywords
project
component
target
application
script
Prior art date
Application number
PCT/CN2021/130205
Other languages
English (en)
French (fr)
Inventor
姜苏珈
李坤
Original Assignee
京东方科技集团股份有限公司
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 京东方科技集团股份有限公司 filed Critical 京东方科技集团股份有限公司
Priority to US17/913,884 priority Critical patent/US20230236809A1/en
Publication of WO2022170801A1 publication Critical patent/WO2022170801A1/zh

Links

Images

Classifications

    • 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/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Definitions

  • Embodiments of the present disclosure relate to a method and apparatus for constructing an iOS application program, an electronic device, and a storage medium.
  • At least one embodiment of the present disclosure provides an iOS application construction method, including: configuring project information; based on the project information and at least one target component, using a compilation management service and using a script to configure a preset project to obtain a target project;
  • the target project is packaged by a packaging system to obtain an iOS application corresponding to the target project.
  • the compilation management service is used and the script is used to configure the preset project to obtain the target
  • the project includes: using the compilation management service to transmit the project information to the operating system, and generating the script based on the project information; and executing the script to execute the preset project based on the at least one target component. Configure to obtain the target project.
  • executing the script to configure the preset project based on the at least one target component, so as to obtain the target project includes: executing the script to convert the template into Copy the project to a preset folder to obtain the preset project; execute the script to modify the name of the preset project, the name of the preset folder, the application identification number, the application version number and the application name ; Execute the script to inject the entry configuration code, and bind the entry configuration component to the life cycle management module of the preset project; execute the script to import the application icon and the picture resources of the startup page into the preset project; execute The script configuration depends on a library management project; wherein, the target project is a project obtained after configuring the preset project.
  • the entry configuration code is configured to be executed after being compiled: use the compilation management service to transmit an entry template style to the entry configuration component; transfer the at least one target The components sequentially import the entry configuration component, wherein the target component includes a business component or a functional component; use the entry configuration component to import the entry component and return the entry component to the sub-controller, and the sub-controller Routing controller that leads to the main window.
  • the portal component is introduced by using the portal configuration component, the portal component is returned to the sub-controller, and the sub-controller is directed to the main window
  • the routing controller includes: using the entry configuration component to import the entry template style, the content of the target component, the sequence of the target component, the icon and name corresponding to the target component into the entry component;
  • the portal component returns the sub-controller;
  • the portal configuration component is used to direct the sub-controller to the routing controller of the main window.
  • the routing controller of the main window is a TabBar type.
  • the entry configuration component further introduces a life cycle component, the life cycle component includes a module array, the module array includes the class of the target component, and the life cycle component be configured to receive the life cycle management message from the life cycle management module through the entry configuration component, determine the target component that needs to be notified based on the class of the target component, and forward the life cycle management message to the target that needs to be notified components.
  • configuring the project information includes: configuring the project information by using an information receiving portal provided by an open platform.
  • the item information includes the name of the application, the identification number of the application, the version number of the application, the uniform resource location splicing of the application icon, the splicing of the resource name of the application icon, the At least one of uniform resource location splicing, resource name splicing on startup page, project name, package name, public library name, public library version, private library name splicing, private library address splicing, and private library version splicing.
  • configuring the item information by using the information receiving portal provided by the open platform includes: in response to receiving a click instruction for an application management icon provided by the open platform , jump to the application management interface; in response to receiving the click instruction of the save icon for creating an application tab page for the application management interface, collect the item information input in the dialog box for creating an application tab page, to The configuration of the project information is realized; wherein, the dialog box is the information receiving entry provided by the open platform.
  • using the packaging system to package the target project to obtain the iOS application corresponding to the target project includes: accessing the packaging system, executing the The script is used to modify the packaging theme and packaging mode, and package the target project to obtain the iOS application.
  • the method provided by an embodiment of the present disclosure further includes: uploading the iOS application to an open platform, and generating a download identifier for downloading the iOS application.
  • the download identifier is a two-dimensional code.
  • the method provided by an embodiment of the present disclosure further includes: managing a project component template based on a dependency library, and establishing a private library.
  • the code of the private library is stored in a code repository, and the private library includes multiple business components and multiple functional components.
  • the method provided by an embodiment of the present disclosure further includes: using an integrated development tool to create the template project.
  • the template project includes a content.jason file, and the conten.jason file is configured to instrument the application icon and the picture resources of the startup page.
  • At least one embodiment of the present disclosure further provides an iOS application construction apparatus, including: an information processing unit configured to configure project information; an engineering processing unit configured to use a compilation management service and A script is used to configure a preset project to obtain a target project; a packaging unit is configured to use a packaging system to package the target project to obtain an iOS application corresponding to the target project.
  • an iOS application construction apparatus including: an information processing unit configured to configure project information; an engineering processing unit configured to use a compilation management service and A script is used to configure a preset project to obtain a target project; a packaging unit is configured to use a packaging system to package the target project to obtain an iOS application corresponding to the target project.
  • At least one embodiment of the present disclosure also provides an electronic device comprising: a processor; a memory including one or more computer program modules; wherein the one or more computer program modules are stored in the memory and configured To be executed by the processor, the one or more computer program modules include instructions for implementing the iOS application building method provided by any embodiment of the present disclosure.
  • At least one embodiment of the present disclosure further provides a storage medium for storing non-transitory computer-readable instructions, when the non-transitory computer-readable instructions are executed by a computer, the iOS application provided by any embodiment of the present disclosure can be implemented Program building method.
  • Fig. 1A-1B is the interface schematic diagram of utilizing Xcode to build project
  • FIG. 2 is a schematic flowchart of a method for constructing an iOS application provided by some embodiments of the present disclosure
  • FIG. 3 is a schematic diagram of automatically constructing modified items in the iOS application construction method provided by some embodiments of the present disclosure
  • step S10 in FIG. 2 is a schematic flowchart of step S10 in FIG. 2;
  • FIGS. 5A-5B are interface schematic diagrams of configuring project information in the iOS application construction method provided by some embodiments of the present disclosure.
  • 5C is a schematic interface diagram of selecting components in the iOS application construction method provided by some embodiments of the present disclosure.
  • step S20 in FIG. 2 is a schematic flowchart of step S20 in FIG. 2;
  • FIG. 7 is a schematic flowchart of step S22 in FIG. 6;
  • FIG. 8 is a flow chart of operations executable after the entry configuration code is compiled in the iOS application construction method provided by some embodiments of the present disclosure
  • FIG. 9 is a schematic flowchart of step S73 in FIG. 8;
  • FIG. 10 is a schematic flowchart of an automatic scanning component in a method for constructing an iOS application provided by some embodiments of the present disclosure
  • FIG. 11 is a schematic flowchart of another iOS application construction method provided by some embodiments of the present disclosure.
  • 12A is a schematic interface diagram of creating a component in the iOS application construction method provided by some embodiments of the present disclosure
  • 12B is a schematic interface diagram of a management component in a method for constructing an iOS application provided by some embodiments of the present disclosure
  • FIG. 13 is a schematic flowchart of a method for constructing an iOS application provided by some embodiments of the present disclosure
  • FIG. 14 is a schematic diagram of a system that can be used to implement the iOS application construction method provided by the embodiment of the present disclosure
  • FIG. 15 is a schematic block diagram of an iOS application building apparatus provided by some embodiments of the present disclosure.
  • 16 is a schematic block diagram of an electronic device according to some embodiments of the present disclosure.
  • FIG. 17 is a schematic block diagram of another electronic device provided by some embodiments of the present disclosure.
  • FIG. 18 is a schematic diagram of a storage medium provided by some embodiments of the present disclosure.
  • CocoaPods is one of the package management tools for iOS, which is widely used in iOS application development to manage dependent libraries, such as managing third-party libraries.
  • the root view controller (TabBarController) is a routing controller (routerController) that depends on the main window (window).
  • RouterController a routing controller that depends on the main window (window).
  • the development of the TabBarController can only be carried out within the business project, resulting in a lot of repetitive code every time a new project is created. Increased workload.
  • many business functions are common, and the initialization process may be basically the same, but due to data dependencies, repeated development is caused.
  • Xcode can be used to build projects to develop iOS applications.
  • Xcode is an integrated development tool that runs on the operating system macOS. Using Xcode, you can quickly develop macOS and iOS applications.
  • Xcode has a unified user interface design, and coding, testing, and debugging are all done in a simple window.
  • FIGS. 1A-1B are schematic diagrams of interfaces for building a project using Xcode.
  • Figure 1A-1B when developing an iOS application, you need to use Xcode to build the project. For example, the user first needs to start Xcode and create a new project. Then, manually configure the CocoaPods library in the interface shown in Figure 1A. Next, a series of manual configurations are performed, such as writing code, importing components, and so on. Then, configure the life cycle in the interface shown in FIG. 1B , and manually associate the life cycle of each component with the classes in the project for life cycle management. Next, import the image resources of the app icon and startup page. After the above series of manual configuration, the configured project is packaged and released. For example, several parameters need to be manually configured when packaging and publishing. Once packaged and published, the iOS application can be generated.
  • At least one embodiment of the present disclosure provides an iOS application construction method and apparatus, an electronic device, and a storage medium.
  • the iOS application construction method provides an automated component construction process, which can solve the problem of coupling of the main project, make the main project templated without any business code, and can realize inductive packaging, avoid developers manually configuring projects, and reduce the construction of componentized applications. workload and improve development efficiency.
  • At least one embodiment of the present disclosure provides a method for building an iOS application.
  • the iOS application construction method includes: configuring project information; based on the project information and at least one target component, using a compilation management service and using a script to configure a preset project to obtain a target project; using a packaging system to package the target project to obtain a target project corresponding to Target works for iOS apps.
  • FIG. 2 is a schematic flowchart of a method for constructing an iOS application provided by some embodiments of the present disclosure.
  • the iOS application construction method includes the following operations.
  • Step S10 configure project information
  • Step S20 Based on the project information and at least one target component, use the compilation management service and adopt a script to configure the preset project to obtain the target project;
  • Step S30 using the packaging system to package the target project to obtain an iOS application corresponding to the target project.
  • the project information may include the application name, the application identification number (Bundle ID), the application version number (Build number), the uniform resource location splicing (resource URL splicing) of the application icon (Icon), The resource name splicing of the application icon, the uniform resource location splicing of the launch page (LaunchImage), the resource name splicing of the startup page, the project name, the package name, the public library name, the public library version, the private library name stitching, the private library address stitching, private Library version splices at least one.
  • Cocoapods can be used to manage dependency libraries
  • CocoaPods sources include public sources and private sources.
  • Public sources include public libraries, and public libraries can be any open source third-party libraries.
  • Private sources include private libraries, which can be third-party libraries created by users locally or on the server side that are only used by specific users.
  • the code of the private library can be stored in the git repository, so it is necessary to configure the git address splicing of the private library. When the code of the private library is stored in other code repositories, the address splicing of the private library is also adapted accordingly.
  • splicing of preset fields in the private library can also be configured, and the preset fields can be set by the user to meet the diverse development needs of the user.
  • the "new project name" shown in Figure 3 is the project name in the configured project information
  • the "original project name” shown in Figure 3 is the name of the template project, which is fixed. It will be described in detail later, and will not be repeated here.
  • the package name (that is, the "package name” shown in FIG. 3 ) can be divided into two categories to be set separately, for example, the package name is set separately for the Release version and the Debug version.
  • the project information is not limited to the information listed above, and may also include other types of information, which may be determined according to actual needs, which are not limited in the embodiments of the present disclosure.
  • the above item information may also be referred to as an automatic build modification item, that is, each time the iOS application construction method provided by the embodiments of the present disclosure is executed, the information needs to be changed and configured for the iOS application to be developed.
  • configuring item information may include receiving portal configuration item information using information provided by an open platform.
  • the open platform is a platform for componentized development, and the open platform may be a B/S architecture or a C/S architecture.
  • B/S architecture developers can log in to the web page of the open platform with a browser, and fill in the project information in the web page, the open platform receives the project information to complete the configuration of the project information, and the information provided by the open platform is received at this time.
  • An entry can be a dialog box in a web page for filling in project information.
  • the open platform is C/S architecture, the developer can start the client and fill in the project information in the interface of the client. The open platform receives the project information to complete the configuration of the project information.
  • the information receiving entry provided by the open platform can be A dialog in the client interface for filling in project information.
  • open platforms provide ideas for developers and non-developers to maintain.
  • the maintenance of components and the logic of automatic construction are carried out from the perspective of developers; on the other hand, the functions of automatic packaging and query of existing technologies are provided for non-developers. Therefore, the query time for developers to query the capabilities provided by the existing technology can be saved, and a visual maintenance method can be provided, and at the same time, visual function prediction can be provided for non-developers.
  • receiving portal configuration item information using information provided by an open platform may include the following operations.
  • Step S11 in response to receiving the click instruction for the application management icon provided by the open platform, jump to the application management interface;
  • Step S12 in response to receiving the click instruction for the save icon of the application tab page creation in the application management interface, collect the project information input in the application tab page creation dialog box, so as to realize the configuration of the project information.
  • step S11 the developer clicks the application management icon provided by the open platform after logging in to the web page of the open platform, and the server providing the web page, after receiving the click instruction for the application management icon, jumps to the icon shown in FIG. 5A . displayed application management interface.
  • step S12 the developer inputs project information in a dialog box for creating an application tab of the application management interface.
  • the dialog box is the information receiving entry provided by the open platform.
  • the Create Application tab page provides multiple dialog boxes for the developer to enter various project information, such as "application name”, "application type", "system type” and other information.
  • various project information such as "application name”, "application type", "system type” and other information.
  • FIG. 5B multiple dialog boxes can also be used by developers to configure application icons and startup pages.
  • the server collects the project information input in each dialog box, so as to realize the configuration of the project information.
  • components to be used when configuring project information, you can also select components to be used, such as a reusable code library extracted in advance.
  • components to be used can be selected.
  • Business components can provide an interface and have some or some functions, which can be used as standard modules spliced into application programs.
  • Functional components can provide one or more functions for native applications, such as uploading, downloading, power control, Bluetooth and other functions.
  • FIG. 5C when configuring project information, you can enter the interface for selecting components, and check the components to be used, and the selection of components is completed after confirmation.
  • a component to be used may also be called a target component.
  • step S20 based on the project information and at least one target component, the preset project is configured by using the compilation management service and script to obtain the target project.
  • step S20 may include the following operations.
  • Step S21 use the compilation management service to transmit the project information to the operating system, and generate a script based on the project information;
  • Step S22 Execute a script to configure a preset project based on at least one target component, thereby obtaining a target project.
  • the compilation management service may be Jenkins.
  • the open platform can access the resource server through Jenkins, and transmit the project information to the operating system of the resource server.
  • the resource server runs the macOS system.
  • Jenkins may be deployed on the resource server, or may be deployed on other servers, which may be determined according to actual requirements, which are not limited in the embodiments of the present disclosure.
  • the resource server After receiving the project information, the resource server generates a script based on the project information.
  • the script is an executable file that can be executed by the operating system of the resource server, and the script includes executable commands and project information to be used.
  • the computer used by the developer can only connect to the internal LAN, but not the Internet. Therefore, it is possible to independently apply for permission to fix the IP address, so as to obtain the permission to connect to the external network (Internet), and to provide convenient network dependence for subsequent operations.
  • the open platform can directly access Jenkins and pass parameters to Jenkins.
  • step S22 the operating system of the resource server executes the script, and implements the configuration of the preset project by executing the script, thereby obtaining the target project.
  • the script configuration can be automatically performed.
  • a preset project is a project that needs to be modified and configured, and the preset project is a project obtained by copying a template project.
  • the preset project is configured by executing the script, and the target project can be obtained after the configuration is completed, that is, the target project is the project obtained after configuring the preset project.
  • the above-mentioned step S22 may include the following operations. That is, the specific process of executing the script to configure the preset project is as follows.
  • Step S221 Execute the script to copy the template project to a preset folder to obtain a preset project
  • Step S222 Execute the script to modify the name of the preset project, the name of the preset folder, the application identification number, the application version number and the application name;
  • Step S223 Execute the script to inject the entry configuration code, and bind the entry configuration component to the life cycle management module of the preset project;
  • Step S224 Execute the script to import the application icon and the image resources of the startup page into the preset project
  • Step S225 Execute the script to configure the dependency library management item.
  • steps S221-S225 are all implemented by executing scripts, and manual operations by developers or other users are not required.
  • the script contains executable commands and project information to be used, so the operations of the above steps S221-S225 can be implemented by executing the script.
  • the script is executed to copy the template project to the preset folder to obtain the preset project.
  • the template project is a pre-established project.
  • the template project is copied to the preset folder, and the copied project is the preset project, so as to facilitate the subsequent implementation of the preset project. configuration.
  • template projects can be built using Xcode.
  • the preset folder may be a folder with any path, for example, may be a folder for storing a newly developed project, which is not limited in this embodiment of the present disclosure.
  • step S222 the script is executed to modify the name of the preset project, the name of the preset folder, the application identification number, the application version number, and the application name.
  • executing the script changes the name of the default project to the aforementioned new project name, changes the application identification number to the aforementioned Bundle ID, changes the application version number to the aforementioned Build number, and modifies the application according to the aforementioned application name.
  • name of the program and modify the name of the preset folder.
  • the information has been acquired in step S10 and written into the generated script. For example, when modifying the above information, you can use the xcargs command and the rename command to modify it.
  • step S223 the execution script injects the entry configuration code, and binds the entry configuration component to the life cycle management module of the preset project. It should be noted that since the compilation is not performed at this time, the injected entry configuration code is currently only pseudo code and has not been actually called.
  • the entry configuration code may include the code corresponding to the entry configuration component and the code corresponding to the component selected by the developer (ie, the target component), and may also include the code for implementing the overall logic and flow or other required code, etc.
  • the entry configuration component (which can be called a ConfigEntry component) is mainly used to associate the configuration entry with business components and/or functional components, so as to meet the binding restrictions of the Xcode entry configuration, and bind the routerController of the main window (window) to the Business components and/or functional components.
  • the entry configuration component can be specifically designed for the iOS application to be developed this time, so that a suitable binding method can be provided according to the business requirements of this development.
  • the entry configuration component is equivalent to the template configuration component, which can provide the logic of automatic scanning.
  • the entry configuration component matches the TabBar to fit the classic tabbed layout for wider applicability and compatibility.
  • the embodiments of the present disclosure are not limited to this, and the entry configuration component can also be matched with other types of application layouts, for example, with classic layouts such as list type and matrix type, which can be determined according to actual requirements. The embodiment does not limit this.
  • the entry configuration code is configured to perform the following operations after being compiled.
  • Step S71 use the compilation management service to transfer the entry template style to the entry configuration component
  • Step S72 Import at least one target component into the entry configuration component in sequence
  • Step S73 Import the portal component by using the portal configuration component and return the portal component to the sub-controller, and direct the sub-controller to the routing controller of the main window.
  • the compilation management service may be Jenkins, and in this step, the entry template style is passed to Jenkins, and then passed to the entry configuration component through Jenkins.
  • the entry template style may be a template style pre-selected and determined by the developer.
  • the entry configuration component provides an entry to receive the entry template style.
  • step S72 at least one target component is sequentially imported into the entry configuration component.
  • the target components may include business components or functional components, and the number of target components may be one or more. Since the developer selects the components to be used when configuring the project information, these selected components are the target components, so at this time, at least one previously selected target component can be sequentially imported into the entry configuration component.
  • the entry configuration component provides an entry to receive target components, and then import the target components into the corresponding template according to the order.
  • step S73 the portal component is imported using the portal configuration component and returned to the sub-controller, and the sub-controller is directed to the routing controller of the main window.
  • an entry configuration component will introduce an entry component, which is a fixed functional component, and the entry component is different from the entry configuration component.
  • step S73 may include the following operations.
  • Step S731 import the entry template style, the content of the target component, the sequence of the target component, the icon and name corresponding to the target component into the entry component by using the entry configuration component;
  • Step S732 return the entry component to the sub-controller
  • Step S733 Use the portal configuration component to direct the sub-controller to the routing controller of the main window.
  • step S731 since the entry configuration component introduces the entry component, the entry template style, the content of the target component, the sequence of the target component, the icon and name corresponding to the target component can be imported into the entry component by using the entry configuration component.
  • the entry component is returned to the sub-controller, that is, the entry component returns an entry controller to the entry configuration component.
  • step S733 the sub-controller is directed to the routing controller of the main window by using the portal configuration component, that is, the Controller returned to the portal configuration component is directed to the routerController of the main window through the portal configuration component.
  • the routing controller of the main window is of type TabBar, and in this case, the entry configuration component matches the TabBar.
  • the embodiment of the present disclosure is not limited to this, and the routing controller of the main window can also be of any other type, which can be determined according to actual requirements.
  • FIG. 10 is a schematic flowchart of an automatic scanning component in a method for constructing an iOS application provided by some embodiments of the present disclosure.
  • the entry template style is first selected and passed in through Jenkins.
  • each component is imported according to the order in which the routes are displayed.
  • download the portal icon and name Next, read the Controller according to the route and match it to the corresponding template.
  • the page display is performed. This process is basically the same as the above steps S71-S73, and will not be repeated here.
  • the entry configuration component is bound to the life cycle management module of the preset project.
  • AppDelegate and SceneDelegate of the main project can be found.
  • AppDelegate and SceneDelegate are the above life cycle management modules.
  • AppDelegate is used to manage the application life cycle (App life cycle)
  • SceneDelegate is used to manage the user interaction life cycle (UI life cycle). Then use the sed binding entry to configure the logic related to the UI life cycle and the App life cycle.
  • an entry configuration component introduces a lifecycle component.
  • the life cycle component is a component used to forward and transmit life cycle management messages.
  • the life cycle component not only interfaces with the life cycle management module in Xcode, but also interfaces with various business components or functional components, so as to realize the delivery of the life cycle.
  • a lifecycle component includes an array of modules that contains the classes of the target component.
  • the life cycle component is configured to receive the life cycle management message from the life cycle management module through the entry configuration component, determine the target component that needs to be notified based on the class of the target component, and forward the life cycle management message to the target component that needs to be notified.
  • the module array is all files registered to the AppModulesRegister.plist in the main project, and the module array includes the classes of business components or functional components that need to execute the life cycle.
  • the lifecycle management module ie AppDelegate and SceneDelegate
  • the entry configuration component sends the lifecycle management message to the lifecycle component.
  • the lifecycle component queries the classes registered in AppModulesRegister.plist according to the received lifecycle management messages. Through the query, you can know the class that needs to be delivered, that is, determine the target component that needs to be notified. Then, the class that needs to be delivered will execute the corresponding proxy, and the message will be delivered through the message forwarding mechanism of macOS.
  • Each business component or functional component also introduces a lifecycle component. Thereby, lifecycle management messages can be received.
  • the entry configuration component notifies the life cycle component
  • the life cycle component proxy notifies the target component
  • the target component receives the message to perform further operations.
  • Each business component and functional component maintain its own life cycle, and have no coupling logic with the main project, which is convenient for maintenance and management.
  • step S224 the script is executed to import the application icon and the picture resource of the startup page into the preset project, thereby implementing the instrumentation of the application icon and the picture resource of the startup page.
  • a script is executed to configure the dependency library management item.
  • the dependency library management project can be the CocoaPods library.
  • the CocoaPods library When configuring the CocoaPods library, perform pod init to generate the pod configuration file, enter the source into the Podfile through the script, provide the source addresses of the public library and the private library, and preset the name and version of the public library into the project. Since there is no business code in the main project, the private library will automatically download the public library that the private library depends on, so it is not necessary to configure the public library without adding additional public libraries.
  • the private library may include at least one of a business component library, a basic function dependency library, and a Flutter library stored in git, and may also include other types of libraries, which are not limited in the embodiments of the present disclosure.
  • the CocoaPods library supports the pulling of branches, tags, and commits at the same time, and can be injected into different library nodes according to different scenarios. Since the developer selects the components to be used when configuring the project information, the required components can be pulled by configuring the CocoaPods library.
  • a target project After performing steps S10 and S20 in FIG. 2 , that is, after configuring the project information and executing the script configuration preset project, a target project can be obtained, and the target project corresponds to the iOS application to be developed. Next, package the target project to get an iOS application.
  • step S30 the target project is packaged by the packaging system to obtain an iOS application corresponding to the target project.
  • step S30 may further include: accessing the packaging system, executing a script to modify the packaging theme and packaging mode, and packaging the target project to obtain an iOS application.
  • the iOS application is a file in ipa format, which can be installed in a terminal device running the iOS system.
  • the packaging system is not limited to fastlane, and may also be any applicable packaging system, which may be determined according to actual requirements, and the embodiments of the present disclosure are not limited thereto.
  • the construction of a componentized iOS application can be completed, Get the iOS app you need to develop.
  • configuring project information requires developers to operate, while configuring preset projects, packaging target projects and other operations do not require developers to participate, all are implemented by executing scripts, which can avoid developers manually configuring projects.
  • the process of manually associating the CocoaPods library, modifying the project project, and importing the component library can be omitted, thereby reducing the workload of application construction and improving development efficiency.
  • the iOS application construction method provides an automated component construction process, which can automatically import business components and/or functional components, associate each component with a routing controller, and distribute the life cycle to each component, thereby solving the main project coupling problem, making the main project templated without any business code.
  • the packaging process does not require manual operations by developers, and can achieve sensorless packaging.
  • FIG. 11 is a schematic flowchart of another method for constructing an iOS application provided by some embodiments of the present disclosure. As shown in FIG. 11 , in some embodiments, the iOS application construction method may include the following operations.
  • Step S40 based on the dependency library management project component template, establish a private library
  • Step S50 using an integrated development tool to create a template project
  • Step S10 configure project information
  • Step S20 Based on the project information and at least one target component, use the compilation management service and adopt a script to configure the preset project to obtain the target project;
  • Step S30 using the packaging system to package the target project to obtain an iOS application corresponding to the target project;
  • Step S60 Upload the iOS application to the open platform, and generate a download identifier for downloading the iOS application.
  • steps S10-S30 are basically the same as the steps S10-S30 in the iOS application construction method shown in FIG. 2, and are not repeated here.
  • the component template of the dependency library management project is, for example, a CocoaPods component template
  • a private library may be established based on the CocoaPods component template. For example, first create a CocoaPods component template, import the code that can be extracted into a library into the library, store the code in the Class folder through the entry provided by CocoaPods, and store the library file in the code warehouse (such as the git warehouse by modifying the .podspec index) ), after configuring tags and branches, verify the index through pod lib lint, and then pod trunck it to the library index git.
  • the establishment of the private library is completed.
  • the library When using a private library, the library can be pulled into the required project by introducing the git address and branch of the pod. It should be noted that the method and process of establishing a private library are not limited to the methods and processes described above, and any applicable method and process can be used to establish a private library, which can be determined according to actual needs, and the embodiments of the present disclosure do not limit this. make restrictions.
  • the code of a private library is stored in a code repository, which can be a git repository.
  • a private library can include multiple business components and multiple functional components. For example, after completing the establishment of the private library, by binding the pods index library of the component, the git address of the component, the git version, and choosing whether to configure the component for the entry, you can use the component management system of the open platform to manage the components in the private library (such as business components and functional components) are pulled into the open platform system. When developers build iOS applications, they can choose the business components and functional components to be used in the interface provided by the open platform.
  • FIG. 12A is a schematic interface diagram of creating a component in a method for constructing an iOS application provided by some embodiments of the present disclosure. For example, you can click the component management icon provided by the open platform to jump to the component management interface as shown in FIG. 12A . Then, in the Create Component tab of the component management interface, fill in the relevant information of the component and click the "Submit" icon to create a component in the open platform, that is, pull the corresponding component in the private library to the open platform in the system.
  • FIG. 12B is a schematic interface diagram of a management component in a method for constructing an iOS application provided by some embodiments of the present disclosure.
  • a description detail page for a component can be provided so that developers can easily query the component. Therefore, it is convenient for developers to manage the components and visualize the components.
  • a template project is created by using an integrated development tool.
  • the integrated development tool may be Xcode, or any other applicable development tool, which is not limited in the embodiments of the present disclosure.
  • the template project is used for subsequent copying to generate a preset project, so as to execute the script to configure the preset project.
  • the fixed name when using Xcode, create a new project with a fixed name, the fixed name can be set according to user requirements, and the fixed name is the aforementioned "original project name".
  • the script change entry of the original template can be reserved.
  • a template project can be created, and the template project is stored in the preset storage path.
  • the template project includes the content.jason file, and the conten.jason file is configured as the image resource of the instrumented application icon and startup page.
  • step S60 the iOS application is uploaded to the open platform, and a download identifier for downloading the iOS application is generated.
  • the download identification can be a two-dimensional code.
  • the QR code can be displayed to the user in an installable portal provided by the open platform.
  • the download identifier may be any type of identifier as long as it can be used to download the iOS application.
  • the resource server After the resource server generates an iOS application, it sends the iOS application to the open platform and uploads it to the open platform.
  • the developer or other users need to download the iOS application, they can download the iOS application from the open platform by scanning the download identifier. program, and the iOS application program is installed in a mobile terminal (such as a mobile phone), which is convenient and quick.
  • FIG. 13 is a schematic flowchart of a method for constructing an iOS application provided by some embodiments of the present disclosure.
  • a script is first executed to copy the template project to a fixed folder (eg, a preset folder) to obtain a preset project. Then execute the script to change and configure the preset project. For example, you can change the project name and look for the project.pbxproj file in the project.
  • the project.pbxproj file saves the tree structure, maintains the relationship between the class of the Xcode project and the project, and the association of some configurations. Use regular matching to all Release and Debug fields, and insert the polled ID into the uuid array.
  • Each operation shown in FIG. 13 is implemented by executing scripts, which does not require manual configuration and operation by developers, which reduces the workload of developers and improves development efficiency.
  • the automatic construction of iOS applications can be realized, and the components, project configuration, icons and other information can be automatically delivered to the project project according to the configuration of the developer in the open platform interface, and the one-click packaging can be completed.
  • FIG. 14 is a schematic diagram of a system that can be used to implement the method for constructing an iOS application provided by an embodiment of the present disclosure.
  • the system 100 may include a user terminal 110 , a network 120 , a server 130 and a database 140 .
  • the system 100 can be used to implement the iOS application construction method provided by any embodiment of the present disclosure.
  • the user terminal 110 is, for example, a computer 110-1. It is understood that the user terminal 110 may be any other type of electronic device capable of performing data processing, which may include, but is not limited to, a desktop computer, a notebook computer, a tablet computer, a workstation, and the like. The user terminal 110 may also be any equipment provided with an electronic device. The embodiments of the present disclosure do not limit the hardware configuration or software configuration of the user terminal.
  • the user can use the browser of the user terminal 110 to log in to the web page of the open platform, or enter the interface of the native application program of the user terminal 110, and configure item information in the corresponding web page or interface. Then, the item information is transmitted to the server 130 through the network 120 . Jenkins is deployed on the server 130, and the server 130 runs the macOS operating system. The server 130 executes a script based on the received project information, so as to configure the preset project based on at least one target component, obtain the target project after the configuration is completed, package the target project, and upload the ipa format file of the iOS application generated by packaging. to an open platform.
  • the user terminal 110 may also include a cell phone 110-2.
  • the user scans the two-dimensional code provided by the open platform with the mobile phone 110-2, so as to download the corresponding iOS application.
  • the iOS application construction method provided by the embodiments of the present disclosure can be executed, so that the rapid construction of the iOS application can be realized.
  • Network 120 may be a single network, or a combination of at least two different networks.
  • the network 120 may include, but is not limited to, one or a combination of a local area network, a wide area network, a public network, a private network, and the like.
  • the server 130 may be a single server, or a server group, and each server in the group is connected through a wired or wireless network.
  • a server farm can be centralized, such as a data center, or distributed.
  • Server 130 may be local or remote.
  • the database 140 may generally refer to a device having a storage function.
  • the database 140 is mainly used for storing various data used, generated and output by the user terminal 110 and the server 130 in the work.
  • Database 140 may be local or remote.
  • the database 140 may include various memories, such as Random Access Memory (RAM), Read Only Memory (ROM), and the like.
  • RAM Random Access Memory
  • ROM Read Only Memory
  • the storage devices mentioned above are just some examples, and the storage devices that can be used by the system 100 are not limited thereto.
  • the database 140 may be interconnected or communicated with the server 130 or a portion thereof via the network 120, or directly interconnected or communicated with the server 130, or a combination of both.
  • database 140 may be a stand-alone device. In other examples, the database 140 may also be integrated in at least one of the user terminal 110 and the server 130 . For example, the database 140 may be set on the user terminal 110 or on the server 130 . For another example, the database 140 may also be distributed, a part of which is set on the user terminal 110 and the other part is set on the server 130 .
  • the embodiments of the present disclosure do not limit the type of the database, for example, it may be a relational database or a non-relational database.
  • At least one embodiment of the present disclosure also provides an iOS application building apparatus.
  • the iOS application construction device provides an automated component construction process, which can solve the problem of coupling of the main project, make the main project templated without any business code, and can realize non-inductive packaging, avoid developers manually configuring projects, and reduce componentized application construction. workload and improve development efficiency.
  • FIG. 15 is a schematic block diagram of an apparatus for constructing an iOS application program according to some embodiments of the present disclosure.
  • the iOS application construction device 20 includes an information processing unit 21 , an engineering processing unit 22 and a packaging unit 23 .
  • the iOS application building apparatus 20 may be applied to a user terminal, and may also be applied to any device or system that needs to build an iOS application, which is not limited in the embodiments of the present disclosure.
  • the information processing unit 21 is configured to configure item information.
  • the information processing unit 21 may execute step S10 of the iOS application construction method as shown in FIG. 2 .
  • the project processing unit 22 is configured to, based on the project information and at least one target component, use the compilation management service and use a script to configure a preset project to obtain a target project.
  • the engineering processing unit 22 may execute step S20 of the iOS application construction method as shown in FIG. 2 .
  • the packaging unit 23 is configured to use a packaging system to package the target project to obtain an iOS application corresponding to the target project.
  • the packaging unit 23 may perform step S30 of the iOS application construction method as shown in FIG. 2 .
  • the information processing unit 21, the engineering processing unit 22, and the packaging unit 23 may be hardware, software, firmware, and any feasible combination thereof.
  • the information processing unit 21, the engineering processing unit 22 and the packaging unit 23 may be dedicated or general circuits, chips or devices, etc., or may be a combination of a processor and a memory.
  • the embodiments of the present disclosure do not limit this.
  • each unit of the iOS application building device 20 corresponds to each step of the aforementioned iOS application building method.
  • the specific functions of the iOS application building device 20 please refer to the above iOS The relevant description of the application construction method will not be repeated here.
  • the components and structures of the iOS application building apparatus 20 shown in FIG. 15 are only exemplary and not restrictive, and the iOS application building apparatus 20 may further include other components and structures as required.
  • At least one embodiment of the present disclosure also provides an electronic device including a processor and a memory in which one or more computer program modules are stored and configured to be executed by the processor, one or more computer programs
  • the program module includes instructions for implementing the iOS application construction method provided by any embodiment of the present disclosure.
  • the electronic device provides an automated component construction process, which can solve the problem of coupling of the main project, make the main project templated without any business code, and can realize non-inductive packaging, avoid developers manually configuring projects, and reduce the workload of componentized application construction. , improve development efficiency.
  • FIG. 16 is a schematic block diagram of an electronic device according to some embodiments of the present disclosure.
  • the electronic device 30 includes a processor 31 and a memory 32 .
  • Memory 32 is used to store non-transitory computer readable instructions (eg, one or more computer program modules).
  • the processor 31 is configured to execute non-transitory computer-readable instructions, and when the non-transitory computer-readable instructions are executed by the processor 31, one or more steps in the above-described iOS application construction method can be executed.
  • Memory 32 and processor 31 may be interconnected by a bus system and/or other form of connection mechanism (not shown).
  • the iOS application construction method according to the embodiment of the present disclosure is implemented by an application running in the operating system of the electronic device 30, or by accessing a website provided by a cloud server through a browser installed in the operating system.
  • processor 31 may be a central processing unit (CPU), graphics processing unit (GPU), digital signal processor (DSP), or other form of processing unit with data processing capabilities and/or program execution capabilities, such as field programmable Gate array (FPGA), etc.; for example, the central processing unit (CPU) can be X86 or ARM architecture, etc.
  • the processor 31 may be a general purpose processor or a special purpose processor and may control other components in the electronic device 30 to perform desired functions.
  • memory 32 may include any combination of one or more computer program products, which may include various forms of computer-readable storage media, such as volatile memory and/or nonvolatile memory.
  • Volatile memory may include, for example, random access memory (RAM) and/or cache memory, among others.
  • Non-volatile memory may include, for example, read only memory (ROM), hard disk, erasable programmable read only memory (EPROM), portable compact disk read only memory (CD-ROM), USB memory, flash memory, and the like.
  • One or more computer program modules may be stored on the computer-readable storage medium, and the processor 31 may execute the one or more computer program modules to implement various functions of the electronic device 30 .
  • Various application programs and various data, various data used and/or generated by the application programs, and the like may also be stored in the computer-readable storage medium.
  • FIG. 17 is a schematic block diagram of another electronic device provided by some embodiments of the present disclosure.
  • the electronic device 40 is, for example, suitable for implementing the iOS application construction method provided by the embodiments of the present disclosure.
  • the electronic device 40 may be a terminal device or a server or the like. It should be noted that the electronic device 40 shown in FIG. 17 is only an example, which does not impose any limitation on the function and scope of use of the embodiments of the present disclosure.
  • electronic device 40 may include processing means (eg, central processing unit, graphics processor, etc.) 41 that may be loaded into random access according to a program stored in read only memory (ROM) 42 or from storage means 48 Various appropriate actions and processes are executed by the programs in the memory (RAM) 43 . In the RAM 43, various programs and data required for the operation of the electronic device 40 are also stored.
  • the processing device 41, the ROM 42, and the RAM 43 are connected to each other through a bus 44.
  • An input/output (I/O) interface 45 is also connected to bus 44 .
  • the following devices can be connected to the I/O interface 45: input devices 46 including, for example, a touch screen, touchpad, keyboard, mouse, camera, microphone, accelerometer, gyroscope, etc.; including, for example, a liquid crystal display (LCD), speakers, vibration an output device 47 of a computer, etc.; a storage device 48 including, for example, a magnetic tape, a hard disk, etc.; and a communication device 49 .
  • Communication means 49 may allow electronic device 40 to communicate wirelessly or by wire with other electronic devices to exchange data. While FIG. 17 shows electronic device 40 having various means, it should be understood that not all of the illustrated means are required to be implemented or provided, and electronic device 40 may alternatively implement or have more or less means.
  • the iOS application construction method shown in FIG. 2 may be implemented as a computer software program.
  • embodiments of the present disclosure include a computer program product including a computer program carried on a non-transitory computer-readable medium, the computer program including program code for executing the above-described iOS application building method.
  • the computer program may be downloaded and installed from the network via the communication device 49, or from the storage device 48, or from the ROM 42.
  • the processing device 41 When the computer program is executed by the processing device 41, the functions defined in the iOS application construction method provided by the embodiments of the present disclosure can be implemented.
  • At least one embodiment of the present disclosure further provides a storage medium for storing non-transitory computer-readable instructions, when the non-transitory computer-readable instructions are executed by a computer, the iOS application described in any embodiment of the present disclosure can be implemented Program building method.
  • this storage medium it can provide an automated component construction process, solve the problem of coupling of the main project, make the main project templated without any business code, and realize non-inductive packaging, avoid developers manually configuring projects, and reduce the work of componentized application construction. quantity and improve development efficiency.
  • FIG. 18 is a schematic diagram of a storage medium provided by some embodiments of the present disclosure.
  • storage medium 50 is used to store non-transitory computer readable instructions 51 .
  • the non-transitory computer readable instructions 51 may perform one or more of the steps in the iOS application building method according to the above description when executed by a computer.
  • the storage medium 50 can be applied to the above-mentioned electronic devices.
  • the storage medium 50 may be the memory 32 in the electronic device 30 shown in FIG. 16 .
  • the relevant description of the storage medium 50 reference may be made to the corresponding description of the memory 32 in the electronic device 30 shown in FIG. 16, and details are not repeated here.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

一种iOS应用程序构建方法及装置、电子设备及存储介质,该iOS应用程序构建方法包括:配置项目信息;基于项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;利用打包系统对目标工程打包,得到对应于目标工程的iOS应用程序。该iOS应用程序构建方法提供了自动化组件构建流程,可以解决主工程耦合的问题,使主工程模板化且无任何业务代码,可以实现无感打包,避免开发人员手动配置工程,减少组件化应用构建的工作量,提高开发效率。

Description

iOS应用程序构建方法及装置、电子设备及存储介质
本申请要求于2021年2月9日递交的中国专利申请第202110181971.0号的优先权,在此全文引用上述中国专利申请公开的内容以作为本申请的一部分。
技术领域
本公开的实施例涉及一种iOS应用程序构建方法及装置、电子设备及存储介质。
背景技术
在应用程序的开发过程中,随着功能的增加,业务逻辑必然变得越来越复杂。当工程代码较多时,开发人员需要根据不同代码的业务功能进行归类,划分为不同的业务组件,该过程被称作组件化。采用组件化的方式进行开发时,可以把复杂系统拆分成多个组件,从而分离组件边界和责任,便于独立升级和维护,也避免了各个业务之间的相互影响,便于代码复用以及项目管理,由此提高团队的整体开发效率。
发明内容
本公开至少一个实施例提供一种iOS应用程序构建方法,包括:配置项目信息;基于所述项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;利用打包系统对所述目标工程打包,得到对应于所述目标工程的iOS应用程序。
例如,在本公开一实施例提供的方法中,基于所述项目信息和所述至少一个目标组件,利用所述编译管理服务并采用所述脚本对所述预设工程进行配置以得到所述目标工程,包括:利用所述编译管理服务将所述项目信息传递至操作系统,并基于所述项目信息生成所述脚本;执行所述脚本,以基于所述至少一个目标组件对所述预设工程进行配置,从而得到所述目标工程。
例如,在本公开一实施例提供的方法中,执行所述脚本,以基于所述至少一个目标组件对所述预设工程进行配置,从而得到所述目标工程,包括: 执行所述脚本将模板工程复制到预设文件夹,得到所述预设工程;执行所述脚本修改所述预设工程的名称、所述预设文件夹的名称、应用程序识别号、应用程序版本号和应用程序名称;执行所述脚本注入入口配置代码,并将入口配置组件绑定到所述预设工程的生命周期管理模块;执行所述脚本将应用图标和启动页的图片资源导入所述预设工程;执行所述脚本配置依赖库管理项目;其中,所述目标工程为对所述预设工程进行配置后所得到的工程。
例如,在本公开一实施例提供的方法中,所述入口配置代码配置为在被编译后执行:利用所述编译管理服务将入口模板样式传递至所述入口配置组件;将所述至少一个目标组件依序导入所述入口配置组件,其中,所述目标组件包括业务组件或功能组件;利用所述入口配置组件引入入口组件并使所述入口组件返回子控制器,并且将所述子控制器导向主窗口的路由控制器。
例如,在本公开一实施例提供的方法中,利用所述入口配置组件引入所述入口组件并使所述入口组件返回所述子控制器,并且将所述子控制器导向所述主窗口的路由控制器,包括:利用所述入口配置组件将所述入口模板样式、所述目标组件的内容、所述目标组件的顺序、所述目标组件对应的图标和名称导入所述入口组件;使所述入口组件返回所述子控制器;利用所述入口配置组件将所述子控制器导向所述主窗口的路由控制器。
例如,在本公开一实施例提供的方法中,所述主窗口的路由控制器为TabBar类型。
例如,在本公开一实施例提供的方法中,所述入口配置组件还引入生命周期组件,所述生命周期组件包括模块数组,所述模块数组包含所述目标组件的类,所述生命周期组件配置为通过所述入口配置组件接收来自所述生命周期管理模块的生命周期管理消息,基于所述目标组件的类确定需要通知的目标组件,并将所述生命周期管理消息转发到需要通知的目标组件。
例如,在本公开一实施例提供的方法中,配置所述项目信息包括:利用开放平台提供的信息接收入口配置所述项目信息。
例如,在本公开一实施例提供的方法中,所述项目信息包括应用程序名称、应用程序识别号、应用程序版本号、应用图标的统一资源定位拼接、应用图标的资源名称拼接、启动页的统一资源定位拼接、启动页的资源名称拼接、工程名称、打包名称、公有库名称、公有库版本、私有库名称拼接、私有库地址拼接、私有库版本拼接至少之一。
例如,在本公开一实施例提供的方法中,利用所述开放平台提供的所述信息接收入口配置所述项目信息,包括:响应于接收到针对所述开放平台提供的应用管理图标的点击指令,跳转至应用管理界面;响应于接收到针对所述应用管理界面的创建应用标签页的保存图标的点击指令,采集在所述创建应用标签页的对话框中输入的所述项目信息,以实现所述项目信息的配置;其中,所述对话框为所述开放平台提供的所述信息接收入口。
例如,在本公开一实施例提供的方法中,利用所述打包系统对所述目标工程打包,得到对应于所述目标工程的所述iOS应用程序,包括:接入所述打包系统,执行所述脚本以修改打包主题及打包模式,对所述目标工程打包,得到所述iOS应用程序。
例如,本公开一实施例提供的方法还包括:将所述iOS应用程序上传至开放平台,并生成用于下载所述iOS应用程序的下载标识。
例如,在本公开一实施例提供的方法中,所述下载标识为二维码。
例如,本公开一实施例提供的方法还包括:基于依赖库管理项目组件模板,建立私有库。
例如,在本公开一实施例提供的方法中,所述私有库的代码存放在代码仓库中,所述私有库包括多个业务组件和多个功能组件。
例如,本公开一实施例提供的方法还包括:利用集成开发工具建立所述模板工程。
例如,在本公开一实施例提供的方法中,所述模板工程包括content.jason文件,所述conten.jason文件配置为插桩所述应用图标和所述启动页的图片资源。
本公开至少一个实施例还提供一种iOS应用程序构建装置,包括:信息处理单元,配置为配置项目信息;工程处理单元,配置为基于所述项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;打包单元,配置为利用打包系统对所述目标工程打包,得到对应于所述目标工程的iOS应用程序。
本公开至少一个实施例还提供一种电子设备,包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现本公开任一实施例提供的iOS应用程序构建方法的指 令。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的iOS应用程序构建方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A-1B为利用Xcode构建项目的界面示意图;
图2为本公开一些实施例提供的一种iOS应用程序构建方法的流程示意图;
图3为本公开一些实施例提供的iOS应用程序构建方法中自动构建更改项示意图;
图4为图2中步骤S10的流程示意图;
图5A-5B为本公开一些实施例提供的iOS应用程序构建方法中进行项目信息配置的界面示意图;
图5C为本公开一些实施例提供的iOS应用程序构建方法中选择组件的界面示意图;
图6为图2中步骤S20的流程示意图;
图7为图6中步骤S22的流程示意图;
图8为本公开一些实施例提供的iOS应用程序构建方法中入口配置代码被编译后可执行的操作流程图;
图9为图8中步骤S73的流程示意图;
图10为本公开一些实施例提供的iOS应用程序构建方法中自动扫描组件的流程示意图;
图11为本公开一些实施例提供的另一种iOS应用程序构建方法的流程示意图;
图12A为本公开一些实施例提供的iOS应用程序构建方法中创建组件的界面示意图;
图12B为本公开一些实施例提供的iOS应用程序构建方法中管理组件的 界面示意图;
图13为本公开一些实施例提供的一种iOS应用程序构建方法的流程示意图;
图14为一种可用于实施本公开实施例提供的iOS应用程序构建方法的系统示意图;
图15为本公开一些实施例提供的一种iOS应用程序构建装置的示意框图;
图16为本公开一些实施例提供的一种电子设备的示意框图;
图17为本公开一些实施例提供的另一种电子设备的示意框图;以及
图18为本公开一些实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
随着开发需求量的增大,为了便于进行应用程序的开发,可以采用组件化平台。在采用组件化平台进行组件化构建时,需要通过现有业务抽出CocoaPods库,同时将业务代码与组件化库均导入项目中,业务组件通过路由(Router)进行关联。CocoaPods是iOS的包管理工具之一,广泛应用于iOS 应用程序开发中,用于管理依赖库,例如管理第三方库。
然而,通常的组件化构建方式使得主工程与业务代码以及应用程序的生命周期有大量依赖。比如,根视图控制器(TabBarController)是依赖于主窗口(window)的路由控制器(routerController),针对TabBarController的开发只能在业务工程内部进行,导致每次新建项目,都会有大量重复的代码,增加了工作量。实际上,很多业务功能具有通用性,初始化的流程也可能大体上相同,但是由于数据的依赖性,导致重复开发。
通常,可以采用Xcode来构建工程,以开发iOS应用程序。Xcode是运行在操作系统macOS上的集成开发工具。利用Xcode,可以快捷地开发macOS和iOS应用程序。Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。
图1A-1B为利用Xcode构建项目的界面示意图。如图1A-1B所示,在进行iOS应用程序开发时,需要利用Xcode来构建项目。例如,用户首先需要启动Xcode,新建一个工程。然后,在图1A所示的界面中手动配置CocoaPods库。接着,进行一系列手动配置,例如编写代码、导入组件等。然后,在图1B所示的界面中进行生命周期的配置,手动将各个组件的生命周期关联到工程里进行生命周期管理的类。接着,导入应用图标和启动页的图片资源。经过上述一系列手动配置后,对配置完成的工程进行打包和发布。例如,在打包和发布时还需要手动配置多个参数。完成打包和发布后,可以生成iOS应用程序。
每次开发iOS应用程序时,都需要重复上文描述的操作,这增加了很多重复的工作量。在需要升级并维护多个项目并且新项目越来越多的情况下,这种重复的工作会损失大量的开发时间,会给开发人员造成很大的工作压力,不利于提高开发效率。
本公开至少一个实施例提供一种iOS应用程序构建方法及装置、电子设备及存储介质。该iOS应用程序构建方法提供了自动化组件构建流程,可以解决主工程耦合的问题,使主工程模板化且无任何业务代码,可以实现无感打包,避免开发人员手动配置工程,减少组件化应用构建的工作量,提高开发效率。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。
本公开至少一个实施例提供一种iOS应用程序构建方法。该iOS应用程序构建方法包括:配置项目信息;基于项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;利用打包系统对目标工程打包,得到对应于目标工程的iOS应用程序。
图2为本公开一些实施例提供的一种iOS应用程序构建方法的流程示意图。例如,如图2所示,在一些实施例中,该iOS应用程序构建方法包括如下操作。
步骤S10:配置项目信息;
步骤S20:基于项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;
步骤S30:利用打包系统对目标工程打包,得到对应于目标工程的iOS应用程序。
例如,在步骤S10中,针对需要开发的iOS应用程序,需要配置相应的项目信息。例如,如图3所示,项目信息可以包括应用程序名称、应用程序识别号(Bundle ID)、应用程序版本号(Build号)、应用图标(Icon)的统一资源定位拼接(资源URL拼接)、应用图标的资源名称拼接、启动页(LaunchImage)的统一资源定位拼接、启动页的资源名称拼接、工程名称、打包名称、公有库名称、公有库版本、私有库名称拼接、私有库地址拼接、私有库版本拼接至少之一。
例如,可以采用Cocoapods来管理依赖库,CocoaPods源包括公有源和私有源。公有源包括公有库,公有库可以为任意的开源的第三方库。私有源包括私有库,私有库可以为用户在本地或服务器端建立的仅供特定用户使用的第三方库。例如,私有库的代码可以存放在git仓库中,因此需要配置私有库git地址拼接。当私有库的代码存放在其他代码仓库中时,相应地,私有库地址拼接也进行适应性调整。
例如,为了提供灵活性,还可以配置私有库预置字段拼接,该预置字段可以由用户设置,以满足用户多样化的开发需求。例如,图3中示出的“新工程名称”即为配置的项目信息中的工程名称,图3中示出的“原工程名称”为模板工程的名称,该名称是固定的,关于模板工程将在后文详细说明,此处不再赘述。打包名称(也即图3中示出的“包名”)可以分为两类来分别设置,例如为Release版本和Debug版本分别设置包名。
需要说明的是,本公开的实施例中,项目信息不限于上文列举的信息,还可以包括其他类型的信息,这可以根据实际需求而定,本公开的实施例对此不做限制。
上述项目信息也可以称为自动构建更改项,也即是,每次执行本公开实施例提供的iOS应用程序构建方法时,需要针对所要开发的iOS应用程序更改和配置这些信息。
例如,在一些示例中,配置项目信息可以包括:利用开放平台提供的信息接收入口配置项目信息。例如,开放平台为用于进行组件化开发的平台,开放平台可以为B/S架构或C/S架构。当开放平台为B/S架构时,开发人员可以用浏览器登录开放平台的网页,并在网页中填写项目信息,开放平台接收项目信息以完成项目信息的配置,此时开放平台提供的信息接收入口可以为网页中用于填写项目信息的对话框。当开放平台为C/S架构时,开发人员可以启动客户端,并在客户端的界面中填写项目信息,开放平台接收项目信息以完成项目信息的配置,此时开放平台提供的信息接收入口可以为客户端界面中用于填写项目信息的对话框。
例如,开放平台提供开发人员和非开发人员维护的思路。一方面,以开发人员视角进行组件的维护以及自动化构建的逻辑;另一方面,为非开发人员提供自动打包和查询现有技术的功能。由此,可以节省开发人员查询现有技术能够提供能力的查询时间,并且提供可视化的维护方法,同时为非开发人员提供可视化的功能预知。
例如,在一些示例中,如图4所示,利用开放平台提供的信息接收入口配置项目信息可以包括如下操作。
步骤S11:响应于接收到针对开放平台提供的应用管理图标的点击指令,跳转至应用管理界面;
步骤S12:响应于接收到针对应用管理界面的创建应用标签页的保存图标的点击指令,采集在创建应用标签页的对话框中输入的项目信息,以实现项目信息的配置。
例如,以开放平台为B/S架构为例,下面结合图5A-5B所示的界面示意图对上述步骤S11-S12进行说明。
例如,在步骤S11中,开发人员在登录开放平台的网页后,点击开放平台提供的应用管理图标,提供该网页的服务器在接收到针对应用管理图标的 点击指令后,跳转至如图5A所示的应用管理界面。
例如,在步骤S12中,开发人员在应用管理界面的创建应用标签页的对话框中输入项目信息。此时,该对话框为开放平台提供的信息接收入口。例如,如图5A所示,创建应用标签页提供了多个对话框,以供开发人员输入各类项目信息,例如“应用名称”、“应用类型”、“系统类型”以及其他信息。滑动该页面中的垂直滚动条,如图5B所示,多个对话框还可以供开发人员配置应用图标和启动页等。当各类项目信息输入完毕后,如图5B所示,开发人员点击保存图标。服务器接收到针对保存图标的点击指令后,采集在各个对话框中输入的项目信息,从而实现项目信息的配置。
需要说明的是,图5A-5B所示出的界面和界面中的内容仅为示意性的,而非限制性的,根据实际需求,可以利用其他类型的界面来实现项目信息的配置,本公开的实施例对此不做限制。
例如,在配置项目信息时,还可以选择需要使用的组件,组件例如为提前抽离出来的可复用的代码库。例如,可以选择需要使用的业务组件和/或功能组件。业务组件可以提供界面,并具有某种或某些功能,可以单独作为拼接成应用程序的标准模块。功能组件可以为原生应用程序提供某种或某些功能,比如上传、下载、电量控制、蓝牙等功能。例如,如图5C所示,在配置项目信息时,可以进入选择组件的界面,并勾选需要使用的组件,确认后即完成了组件的选择。需要说明的是,在本公开的实施例中,需要使用的组件也可以称为目标组件。
例如,如图2所示,在步骤S20中,基于项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程。
例如,在一些示例中,如图6所示,上述步骤S20可以包括如下操作。
步骤S21:利用编译管理服务将项目信息传递至操作系统,并基于项目信息生成脚本;
步骤S22:执行脚本,以基于至少一个目标组件对预设工程进行配置,从而得到目标工程。
例如,在步骤S21中,编译管理服务可以为Jenkins。当利用开放平台的界面完成项目信息的配置后,开放平台可以通过Jenkins访问资源服务器,并将项目信息传递至资源服务器的操作系统。例如,资源服务器运行macOS系统。例如,Jenkins可以部署在该资源服务器上,也可以部署在其他服务器上, 这可以根据实际需求而定,本公开的实施例对此不做限制。接收到项目信息后,资源服务器基于项目信息生成脚本。该脚本为可以被资源服务器的操作系统执行的可执行文件,该脚本中包括了可执行命令和需要使用的项目信息。
例如,在一些示例中,开发人员所使用的计算机仅能连接内部局域网,无法连接互联网。因此,可以独立申请权限固定ip地址,从而取得连接外网(互联网)的权限,为后续操作提供便利的网络依赖。通过内网(内部局域网)固定ip地址,建立运行macOS的服务器(也即前述的资源服务器),并在该服务器上部署Jenkins。由此,开放平台能够直接访问Jenkins,并且向Jenkins传递参数。
例如,在步骤S22中,资源服务器的操作系统执行该脚本,通过执行脚本来实现对预设工程的配置,从而得到目标工程。在执行脚本的过程中,不需要开发人员或其他用户进行手动操作,通过执行脚本,可以自动进行工程配置。例如,预设工程为需要修改和配置的工程,该预设工程为复制模板工程后所得到的工程。通过执行脚本对预设工程进行配置,完成配置后即可得到目标工程,也即是,目标工程为对预设工程进行配置后所得到的工程。
例如,在一些示例中,如图7所示,上述步骤S22可以包括如下操作。也即是,执行脚本来配置预设工程的具体流程如下。
步骤S221:执行脚本将模板工程复制到预设文件夹,得到预设工程;
步骤S222:执行脚本修改预设工程的名称、预设文件夹的名称、应用程序识别号、应用程序版本号和应用程序名称;
步骤S223:执行脚本注入入口配置代码,并将入口配置组件绑定到预设工程的生命周期管理模块;
步骤S224:执行脚本将应用图标和启动页的图片资源导入预设工程;
步骤S225:执行脚本配置依赖库管理项目。
需要说明的是,上述步骤S221-S225均是通过执行脚本来实现的,不需要开发人员或其他用户进行手动操作。脚本中包含可执行命令和需要使用的项目信息,因此通过执行脚本可以实现上述步骤S221-S225的操作。
例如,在步骤S221中,执行脚本将模板工程复制到预设文件夹,得到预设工程。例如,模板工程为预先建立的工程,每次执行该iOS应用程序构建方法时,将模板工程复制到预设文件夹,复制得到的工程即为预设工程,以便于后续对该预设工程进行配置。例如,在一些示例中,模板工程可以采用 Xcode建立。例如,预设文件夹可以为任意路径的文件夹,例如可以为存储新开发的工程的文件夹,本公开的实施例对此不做限制。通过复制模板工程并对复制后的工程进行配置,可以避免更改模板工程而影响下一次构建应用程序。
例如,在步骤S222中,执行脚本修改预设工程的名称、预设文件夹的名称、应用程序识别号、应用程序版本号和应用程序名称。例如,执行脚本将预设工程的名称修改为前述的新工程名称,将应用程序识别号修改为前述的Bundle ID,将应用程序版本号修改为前述的Build号,依据前述的应用程序名称修改应用程序的名称,并修改预设文件夹的名称。例如,这些信息在步骤S10中已经获取,并被写入生成的脚本中。例如,在修改上述信息时,可以采用xcargs指令和rename指令进行修改。
例如,在步骤S223中,执行脚本注入入口配置代码,并将入口配置组件绑定到预设工程的生命周期管理模块。需要注意的是,由于此时未进行编译,注入的入口配置代码目前只是伪代码,还没有实际调用。
例如,入口配置代码可以包括对应于入口配置组件的代码和对应于开发人员选择的组件(也即目标组件)的代码,还可以包括实现整体逻辑和流程的代码或其他所需要的代码等。
例如,入口配置组件(可称为ConfigEntry组件)主要用于将配置入口与业务组件和/或功能组件进行关联,从而满足Xcode入口配置的绑定限制,将主窗口(window)的routerController绑定上业务组件和/或功能组件。例如,入口配置组件可以是针对本次要开发的iOS应用程序而针对性设计的,从而可以根据本次开发的业务需求,提供相适应的绑定方法。
例如,入口配置组件相当于模板配置组件,可以提供自动扫描的逻辑。例如,在一些示例中,该入口配置组件与TabBar相匹配,从而适用于经典的标签式版式,以提供更广的适用性和兼容性。当然,本公开的实施例不限于此,入口配置组件也可以与其他类型的应用程序版式相匹配,例如与列表式、矩阵式等经典版式相匹配,这可以根据实际需求而定,本公开的实施例对此不做限制。
例如,如图8所示,入口配置代码配置为在被编译后执行如下操作。
步骤S71:利用编译管理服务将入口模板样式传递至入口配置组件;
步骤S72:将至少一个目标组件依序导入入口配置组件;
步骤S73:利用入口配置组件引入入口组件并使入口组件返回子控制器,并且将子控制器导向主窗口的路由控制器。
例如,在步骤S71中,编译管理服务可以为Jenkins,在该步骤中,将入口模板样式传入到Jenkins,然后通过Jenkins传递至入口配置组件。例如,入口模板样式可以是开发人员预先选择和确定的模板样式。例如,入口配置组件提供一个入口接收该入口模板样式。
例如,在步骤S72中,将至少一个目标组件依序导入入口配置组件。目标组件可以包括业务组件或功能组件,目标组件的数量可以为一个或多个。由于在配置项目信息时开发人员选择了要使用的组件,这些被选择的组件即为目标组件,因此此时可以把之前选择的至少一个目标组件依序导入入口配置组件。例如,入口配置组件提供一个入口接收目标组件,然后会根据顺序将目标组件导入到相应的模板。
例如,在步骤S73中,利用入口配置组件引入入口组件并使入口组件返回子控制器,并且将子控制器导向主窗口的路由控制器。例如,入口配置组件会引入一个入口组件,该入口组件为固定的功能组件,该入口组件不同于入口配置组件。
例如,在一些示例中,如图9所示,上述步骤S73可以包括如下操作。
步骤S731:利用入口配置组件将入口模板样式、目标组件的内容、目标组件的顺序、目标组件对应的图标和名称导入入口组件;
步骤S732:使入口组件返回子控制器;
步骤S733:利用入口配置组件将子控制器导向主窗口的路由控制器。
例如,在步骤S731中,由于入口配置组件引入了入口组件,因此可以利用入口配置组件将入口模板样式、目标组件的内容、目标组件的顺序、目标组件对应的图标和名称导入入口组件。在步骤S732中,使入口组件返回子控制器,也即,入口组件给入口配置组件返回一个入口的Controller。在步骤S733中,利用入口配置组件将子控制器导向主窗口的路由控制器,也即是,返回给入口配置组件的Controller通过入口配置组件导向主窗口的routerController。通过上述方式,可以使各个业务组件或功能组件与routerController关联,从而能进行主界面的显示。
例如,在一些示例中,主窗口的路由控制器为TabBar类型,此时,入口配置组件与TabBar相匹配。当然,本公开的实施例不限于此,主窗口的路由 控制器也可以为其他任意类型,这可以根据实际需求而定。
通过上述方式,可以实现自动扫描组件,并将组件与路由控制器关联,将业务需求下发到各个组件内部,从而实现业务界面的自动配置,实现组件化的项目开发,无需在主工程内进行开发,主工程内无实质代码。
图10为本公开一些实施例提供的iOS应用程序构建方法中自动扫描组件的流程示意图。如图10所示,在一些示例中,首先选择入口模板样式并通过Jenkins传入入口模板样式。接着,各个组件根据路由显示顺序导入。然后,下载入口图标与名称。接着,根据路由读取Controller并匹配到相应模板。最后,进行页面展示。该流程与上述步骤S71-S73基本相同,此处不再赘述。
例如,如图7所示,在步骤S223中,注入入口配置代码后,将入口配置组件绑定到预设工程的生命周期管理模块。例如,可以查找到主工程的AppDelegate、SceneDelegate,AppDelegate和SceneDelegate即为上述生命周期管理模块。AppDelegate用于管理应用程序生命周期(App生命周期),SceneDelegate用于管理用户交互生命周期(UI生命周期)。然后利用sed绑定入口配置组件相关的关于UI生命周期、App生命周期的逻辑。
例如,在一些示例中,入口配置组件引入生命周期组件。该生命周期组件为用于转发和传递生命周期管理消息的组件,该生命周期组件不仅与Xcode中的生命周期管理模块对接,还与各个业务组件或功能组件对接,从而实现生命周期的下发。例如,生命周期组件包括模块数组,该模块数组包含目标组件的类。生命周期组件配置为通过入口配置组件接收来自生命周期管理模块的生命周期管理消息,基于目标组件的类确定需要通知的目标组件,并将生命周期管理消息转发到需要通知的目标组件。
例如,模块数组是所有注册到主工程中的AppModulesRegister.plist的文件,模块数组包括需要执行生命周期的业务组件或功能组件的类。在应用程序运行时,当主工程收到系统发来的生命周期变化的通知时,生命周期管理模块(也即AppDelegate和SceneDelegate)会接收该通知,然后将相应的生命周期管理消息发送给入口配置组件,入口配置组件再将生命周期管理消息发送给生命周期组件。然后,生命周期组件根据接收到的生命周期管理消息查询AppModulesRegister.plist里注册的类。通过查询,可以得知需要下发的类,也即,确定需要通知的目标组件。然后,需要下发的类会执行相应的代理,通过macOS的消息转发机制实现消息下发。每个业务组件或功能组件也 会引入生命周期组件。由此,可以接收生命周期管理消息。
通过上述方式,每次生命周期改变时,入口配置组件通知生命周期组件,生命周期组件代理通知目标组件,目标组件接收消息,从而进行进一步的操作。各个业务组件和功能组件各自维护生命周期,与主工程无耦合逻辑,便于维护和管理。
例如,如图7所示,在步骤S224中,执行脚本将应用图标和启动页的图片资源导入预设工程,由此,可以实现应用图标和启动页的图片资源的插桩。
例如,如图7所示,在步骤S225中,执行脚本配置依赖库管理项目。例如,依赖库管理项目可以为CocoaPods库。在配置CocoaPods库时,进行pod init以生成pod配置文件,通过脚本将source打入Podfile,并提供公有库、私有库的源地址,同时将公有库的名称以及版本预置到项目中。由于主工程中没有业务代码,私有库会自动下载私有库所依赖的公有库,所以在不需要额外添加公有库的情形下,可以不进行公有库的配置。私有库可以包括业务组件库、基础功能依赖库和存储于git中的Flutter库这三者至少之一,还可以包括其他类型的库,本公开的实施例对此不做限制。将私有库和/或公有库打包成pods库,直接通过Cocoapods引入。例如,该CocoaPods库同时支持分支(branch)、标签(tag)、提交(commit)的拉取,可以根据不同的场景注入不同的库节点。由于开发人员在配置项目信息时选择了需要使用的组件,通过配置CocoaPods库,可以将拉取所需要的组件。
在执行图2中的步骤S10和S20之后,也即,经过项目信息配置并执行脚本配置预设工程之后,可以得到目标工程,该目标工程对应于需要开发的iOS应用程序。接下来对目标工程进行打包即可得到iOS应用程序。
例如,如图2所示,在步骤S30中,利用打包系统对目标工程打包,得到对应于目标工程的iOS应用程序。例如,步骤S30可以进一步包括:接入打包系统,执行脚本以修改打包主题及打包模式,对目标工程打包,得到iOS应用程序。例如,可以接入fastlane打包系统,然后通过执行脚本来修改打包主题(也即修改scheme)和打包模式,从而可以对目标工程打包,得到对应的iOS应用程序。例如,该iOS应用程序例如为ipa格式的文件,可以安装在运行iOS系统的终端设备中。需要说明的是,打包系统不限于fastlane,也可以为任意适用的打包系统,这可以根据实际需求而定,本公开的实施例不限于此。例如,还可以执行脚本配置一些打包所需要的参数,例如配置通过Safari 浏览器下载的Manifest配置参数等。
在本公开实施例提供的iOS应用程序构建方法中,通过配置项目信息、执行脚本来配置预设工程以得到目标工程、对目标工程进行打包等操作,可以完成组件化的iOS应用程序的构建,得到需要开发的iOS应用程序。在整个操作过程中,仅配置项目信息需要开发人员进行操作,而配置预设工程、对目标工程进行打包等操作不需要开发人员参与,均通过执行脚本来实现,可以避免开发人员手动配置工程,避免开发人员每次新建工程时罗列重复代码,可以省略开发人员手动关联CocoaPods库、修改项目工程、导入组件库的过程,从而减少应用构建的工作量,提高开发效率。而且,配置项目信息的操作也仅需要开发人员填写相关的项目信息即可,不需要进行代码和逻辑的开发,可以减少开发人员的工作量,提高开发效率。该iOS应用程序构建方法提供了自动化组件构建流程,可以自动导入业务组件和/或功能组件,并将各个组件与路由控制器关联,将生命周期下发到各个组件中,从而解决了主工程耦合的问题,使主工程模板化且无任何业务代码。并且,打包过程无需开发人员手动操作,可以实现无感打包。
图11为本公开一些实施例提供的另一种iOS应用程序构建方法的流程示意图。如图11所示,在一些实施例中,该iOS应用程序构建方法可以包括如下操作。
步骤S40:基于依赖库管理项目组件模板,建立私有库;
步骤S50:利用集成开发工具建立模板工程;
步骤S10:配置项目信息;
步骤S20:基于项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;
步骤S30:利用打包系统对目标工程打包,得到对应于目标工程的iOS应用程序;
步骤S60:将iOS应用程序上传至开放平台,并生成用于下载iOS应用程序的下载标识。
例如,上述步骤S10-S30与图2所示的iOS应用程序构建方法中的步骤S10-S30基本相同,此处不再赘述。
例如,在步骤S40中,依赖库管理项目组件模板例如为CocoaPods组件模板,可以基于CocoaPods组件模板建立私有库。例如,首先新建CocoaPods 组件模板,将可抽离成库的代码导入库中,通过CocoaPods提供的入口将代码存放在Class文件夹,通过修改.podspec索引,将库文件存放在代码仓库(例如git仓库)中,在配置好标签(tag)与分支(branch)后,将索引通过pod lib lint进行验证,之后,再pod trunck到库索引git中。由此,完成私有库的建立。在使用私有库时,通过引入pod的git地址、分支即可将库拉取到需要的工程中。需要说明的是,建立私有库的方式和流程不限于上文描述的方式和流程,可以采用任意适用的方式和流程建立私有库,这可以根据实际需求而定,本公开的实施例对此不做限制。
例如,私有库的代码存放在代码仓库中,代码仓库可以为git仓库。私有库可以包括多个业务组件和多个功能组件。例如,完成私有库的建立之后,通过绑定组件的pods索引库、组件的git地址、git版本,以及选择是否为入口配置组件,可以利用开放平台的组件管理系统将私有库中的各个组件(例如业务组件和功能组件)拉取到开放平台的系统中。开发人员在构建iOS应用程序时,可以在开放平台提供的界面中选择需要使用的业务组件和功能组件。
图12A为本公开一些实施例提供的iOS应用程序构建方法中创建组件的界面示意图。例如,可以点击开放平台提供的组件管理图标,跳转至如图12A所示的组件管理界面。然后在组件管理界面的创建组件标签页中,填写组件的相关信息,点击“提交”图标之后,即可以在开放平台中创建组件,也即是,将私有库中对应的组件拉取到开放平台的系统中。
图12B为本公开一些实施例提供的iOS应用程序构建方法中管理组件的界面示意图。如图12B所示,在组件管理界面中,还可以对拉取到系统中的组件进行管理,例如查看组件的信息,对组件进行编辑或删除,申请上架或下架等。例如,可以提供组件的描述详情页面,以方便开发人员查询组件。由此,可以便于开发人员对组件进行管理,且使得组件可视化。
通过上述方式,可以便于用户(例如产品经理、项目经理、测试人员等)查看现有业务逻辑,避免重复设计相同业务的冗余工作量,使得组件管理可视化。
例如,如图11所示,在步骤S50中,利用集成开发工具建立模板工程。集成开发工具可以为Xcode,也可以为其他任意适用的开发工具,本公开的实施例对此不做限制。模板工程用于后续复制生成预设工程,以便于执行脚 本来配置预设工程。
例如,当采用Xcode时,新建一个固定名称的项目,该固定名称可以根据用户需求设置,该固定名称即为前述的“原工程名称”。为了提供更大的兼容性和灵活性,以适用于多种模板的预置,比如接入Flutter、接入RN等,可以预留原始模板的脚本更改入口。给该项目设置固定名称、最低的版本支持、fastlane的配置、Build号的预置。需要注意的是,Build号如果不提前预置,则后续用PlistBuddy修改时,因为查询不到CURRENT_PROJECT_VERSION字段,会导致更新失败。同时,由于修改时不能低于原有版本,因此将Build号的值预置为0。
在该项目的主工程中设置Icon与LaunchImage,在Assets.xcassets下生成了AppIcon.appiconset以及LaunchImage.launchimage这两个资源文件包,这两个资源文件包同时根据不同的硬件设备匹配出content.json文件,可以自动扫描Icon与LaunchImage。为了解决脚本自动覆盖图片的问题,将这两个资源文件包内的content.json文件复制出来,并删除为了生成上述资源文件包所使用的原始图片资源,然后再将复制出的content.json文件放入上述资源文件包中。在后续执行脚本配置预设工程时,可以将图片一一插桩进去,即可自动配置出关于应用图标和启动页的配置。
经过上述操作,即可建立模板工程,模板工程存放在预设存储路径。例如,模板工程包括content.jason文件,conten.jason文件配置为插桩应用图标和启动页的图片资源。
当需要执行脚本配置预设工程时,可以复制模板工程,并将复制得到的模板工程作为预设工程进行配置。由此不会更改原始的模板工程,使得每次构建iOS应用程序时都可以使用该原始的模板工程。
例如,如图11所示,在步骤S60中,将iOS应用程序上传至开放平台,并生成用于下载iOS应用程序的下载标识。例如,该下载标识可以为二维码。例如,该二维码可以在开放平台提供的可安装入口中展示给用户。当然,本公开的实施例不限于此,下载标识可以为任意类型的标识,只要可用于下载该iOS应用程序即可。例如,资源服务器生成iOS应用程序后将iOS应用程序发送到开放平台并上传至开放平台,当开发人员或其他用户需要下载该iOS应用程序时,可以通过扫描该下载标识从开放平台下载该iOS应用程序,并将该iOS应用程序安装在移动终端(例如手机)中,方便快捷。
图13为本公开一些实施例提供的一种iOS应用程序构建方法的流程示意图。在一些示例中,如图13所示,首先执行脚本复制模板工程到固定文件夹(例如预设文件夹),得到预设工程。然后执行脚本更改和配置预设工程。例如,可以更改工程名称,查找项目中的project.pbxproj文件。该project.pbxproj文件保存了树形结构,维护了Xcode项目的类与工程的关系以及一些配置的关联。利用正则匹配所有的Release和Debug字段,将轮询到的ID插入uuid数组。然后查询INPOPLIST_FILE所在字段的uuid,找到所有Targets相应的INFO.PLIST的绝对文件夹路径。解析INFO.PLIST,查找PRODUCT_NAME(AppName,即工程名称)、PRODUCT_BUNDLE_IDENTIFIER(Bundle ID)和CURRENT_PROJECT_VERSION(Build号),然后修改工程名称、Bundle ID和Build号。接着执行脚本注入主工程入口配置代码,将入口配置组件(ConfigEntry)绑定到预设工程的生命周期管理模块(AppDelegate和SceneDelegate)。然后将应用图标(Icon)和启动页(LaunchImage)下载到Assets.xcassets。接着执行Pod库插接逻辑。然后修改fastlane打包主题(scheme),进行打包,生成ipa格式的文件并上传至开放平台。
由此,完成了iOS应用程序的构建,用户可以扫描开放平台提供的二维码来下载相应的iOS应用程序。图13中所示的各个操作均为执行脚本实现的,无需开发人员手动配置和操作,减少了开发人员的工作量,提高了开发效率。
通过上述方式,可以实现iOS应用程序的自动化构建,将组件、工程配置、图标等信息根据开发人员在开放平台的界面中的配置自动下发到项目工程中,并且完成一键打包,同时向用户提供下载安装的二维码,通过扫描二维码即可安装对应的iOS应用程序。
图14为一种可用于实施本公开实施例提供的iOS应用程序构建方法的系统示意图。如图14所示,该系统100可以包括用户终端110、网络120、服务器130以及数据库140。例如,该系统100可以用于实施本公开任一实施例提供的iOS应用程序构建方法。
用户终端110例如为电脑110-1。可以理解的是,用户终端110可以是能够执行数据处理的任何其他类型的电子设备,其可以包括但不限于台式电脑、笔记本电脑、平板电脑、工作站等。用户终端110也可以是设置有电子设备的任何装备。本公开的实施例对于用户终端的硬件配置或软件配置等不作限制。
用户可以利用用户终端110的浏览器登录开放平台的网页,或者进入用户终端110的原生应用程序的界面,并在相应的网页或界面中配置项目信息。然后,项目信息通过网络120传输至服务器130。服务器130上部署有Jenkins,并且服务器130运行macOS操作系统。服务器130基于接收到的项目信息执行脚本,以基于至少一个目标组件对预设工程进行配置,配置完成后得到目标工程,并对目标工程进行打包,将打包生成的iOS应用程序的ipa格式文件上传至开放平台。用户终端110还可以包括手机110-2。用户利用手机110-2扫描开放平台提供的二维码,从而可以下载对应的iOS应用程序。由此,可以执行本公开实施例提供的iOS应用程序构建方法,从而可以实现iOS应用程序的快速构建。
网络120可以是单个网络,或至少两个不同网络的组合。例如,网络120可以包括但不限于局域网、广域网、公用网络、专用网络等中的一种或几种的组合。
服务器130可以是一个单独的服务器,或一个服务器群组,群组内的各个服务器通过有线的或无线的网络进行连接。一个服务器群组可以是集中式的,例如数据中心,也可以是分布式的。服务器130可以是本地的或远程的。
数据库140可以泛指具有存储功能的设备。数据库140主要用于存储用户终端110和服务器130在工作中所利用、产生和输出的各种数据。数据库140可以是本地的或远程的。数据库140可以包括各种存储器、例如随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)等。以上提及的存储设备只是列举了一些例子,该系统100可以使用的存储设备并不局限于此。
数据库140可以经由网络120与服务器130或其一部分相互连接或通信,或直接与服务器130相互连接或通信,或是上述两种方式的结合。
在一些示例中,数据库140可以是独立的设备。在另一些示例中,数据库140也可以集成在用户终端110和服务器130中的至少一个中。例如,数据库140可以设置在用户终端110上,也可以设置在服务器130上。又例如,数据库140也可以是分布式的,其一部分设置在用户终端110上,另一部分设置在服务器130上。本公开的实施例对于数据库的类型不做限制,例如可以为关系型数据库或非关系型数据库等。
本公开至少一个实施例还提供一种iOS应用程序构建装置。该iOS应用 程序构建装置提供了自动化组件构建流程,可以解决主工程耦合的问题,使主工程模板化且无任何业务代码,可以实现无感打包,避免开发人员手动配置工程,减少组件化应用构建的工作量,提高开发效率。
图15为本公开一些实施例提供的一种iOS应用程序构建装置的示意框图。如图15所示,该iOS应用程序构建装置20包括信息处理单元21、工程处理单元22和打包单元23。例如,该iOS应用程序构建装置20可以应用于用户终端中,也可以应用于任意的需要构建iOS应用程序的设备或系统中,本公开的实施例对此不作限制。
信息处理单元21配置为配置项目信息。例如,信息处理单元21可以执行如图2所示的iOS应用程序构建方法的步骤S10。工程处理单元22配置为基于项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程。例如,工程处理单元22可以执行如图2所示的iOS应用程序构建方法的步骤S20。打包单元23配置为利用打包系统对目标工程打包,得到对应于目标工程的iOS应用程序。例如,打包单元23可以执行如图2所示的iOS应用程序构建方法的步骤S30。
例如,信息处理单元21、工程处理单元22和打包单元23可以为硬件、软件、固件以及它们的任意可行的组合。例如,信息处理单元21、工程处理单元22和打包单元23可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于信息处理单元21、工程处理单元22和打包单元23的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,iOS应用程序构建装置20的各个单元与前述的iOS应用程序构建方法的各个步骤对应,关于该iOS应用程序构建装置20的具体功能可以参考上文中iOS应用程序构建方法的相关描述,此处不再赘述。图15所示的iOS应用程序构建装置20的组件和结构只是示例性的,而非限制性的,根据需要,该iOS应用程序构建装置20还可以包括其他组件和结构。
本公开至少一个实施例还提供一种电子设备,该电子设备包括处理器和存储器,一个或多个计算机程序模块被存储在该存储器中并被配置为由该处理器执行,一个或多个计算机程序模块包括用于实现本公开任一实施例提供的iOS应用程序构建方法的指令。该电子设备提供了自动化组件构建流程,可以解决主工程耦合的问题,使主工程模板化且无任何业务代码,可以实现 无感打包,避免开发人员手动配置工程,减少组件化应用构建的工作量,提高开发效率。
图16为本公开一些实施例提供的一种电子设备的示意框图。如图16所示,该电子设备30包括处理器31和存储器32。存储器32用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器31用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器31运行时可以执行上文所述的iOS应用程序构建方法中的一个或多个步骤。存储器32和处理器31可以通过总线系统和/或其它形式的连接机构(未示出)互连。例如,根据本公开实施例的iOS应用程序构建方法通过运行于该电子设备30的操作系统中的应用程序实现,或者通过安装在该操作系统中的浏览器访问云端服务器提供的网站而实现。
例如,处理器31可以是中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器31可以为通用处理器或专用处理器,可以控制电子设备30中的其它组件以执行期望的功能。
例如,存储器32可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器31可以运行一个或多个计算机程序模块,以实现电子设备30的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备30的具体功能和技术效果可以参考上文中关于iOS应用程序构建方法的描述,此处不再赘述。
图17为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备40例如适于用来实施本公开实施例提供的iOS应用程序构建方法。电子设备40可以是终端设备或服务器等。需要注意的是,图17示出的电子设备40仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图17所示,电子设备40可以包括处理装置(例如中央处理器、图形处理器等)41,其可以根据存储在只读存储器(ROM)42中的程序或者从存储装置48加载到随机访问存储器(RAM)43中的程序而执行各种适当的动作和处理。在RAM 43中,还存储有电子设备40操作所需的各种程序和数据。处理装置41、ROM 42以及RAM 43通过总线44彼此相连。输入/输出(I/O)接口45也连接至总线44。
通常,以下装置可以连接至I/O接口45:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置46;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置47;包括例如磁带、硬盘等的存储装置48;以及通信装置49。通信装置49可以允许电子设备40与其他电子设备进行无线或有线通信以交换数据。虽然图17示出了具有各种装置的电子设备40,但应理解的是,并不要求实施或具备所有示出的装置,电子设备40可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,图2所示的iOS应用程序构建方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述iOS应用程序构建方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置49从网络上被下载和安装,或者从存储装置48安装,或者从ROM 42安装。在该计算机程序被处理装置41执行时,可以实现本公开实施例提供的iOS应用程序构建方法中限定的功能。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机可读指令,当该非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例所述的iOS应用程序构建方法。利用该存储介质,可以提供自动化组件构建流程,解决主工程耦合的问题,使主工程模板化且无任何业务代码,可以实现无感打包,避免开发人员手动配置工程,减少组件化应用构建的工作量,提高开发效率。
图18为本公开一些实施例提供的一种存储介质的示意图。如图18所示,存储介质50用于存储非暂时性计算机可读指令51。例如,当非暂时性计算机可读指令51由计算机执行时可以执行根据上文所述的iOS应用程序构建方法中的一个或多个步骤。
例如,该存储介质50可以应用于上述电子设备中。例如,存储介质50 可以为图16所示的电子设备30中的存储器32。例如,关于存储介质50的相关说明可以参考图16所示的电子设备30中的存储器32的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (20)

  1. 一种iOS应用程序构建方法,包括:
    配置项目信息;
    基于所述项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;
    利用打包系统对所述目标工程打包,得到对应于所述目标工程的iOS应用程序。
  2. 根据权利要求1所述的方法,其中,基于所述项目信息和所述至少一个目标组件,利用所述编译管理服务并采用所述脚本对所述预设工程进行配置以得到所述目标工程,包括:
    利用所述编译管理服务将所述项目信息传递至操作系统,并基于所述项目信息生成所述脚本;
    执行所述脚本,以基于所述至少一个目标组件对所述预设工程进行配置,从而得到所述目标工程。
  3. 根据权利要求2所述的方法,其中,执行所述脚本,以基于所述至少一个目标组件对所述预设工程进行配置,从而得到所述目标工程,包括:
    执行所述脚本将模板工程复制到预设文件夹,得到所述预设工程;
    执行所述脚本修改所述预设工程的名称、所述预设文件夹的名称、应用程序识别号、应用程序版本号和应用程序名称;
    执行所述脚本注入入口配置代码,并将入口配置组件绑定到所述预设工程的生命周期管理模块;
    执行所述脚本将应用图标和启动页的图片资源导入所述预设工程;
    执行所述脚本配置依赖库管理项目;
    其中,所述目标工程为对所述预设工程进行配置后所得到的工程。
  4. 根据权利要求3所述的方法,其中,所述入口配置代码配置为在被编译后执行:
    利用所述编译管理服务将入口模板样式传递至所述入口配置组件;
    将所述至少一个目标组件依序导入所述入口配置组件,其中,所述目标组件包括业务组件或功能组件;
    利用所述入口配置组件引入入口组件并使所述入口组件返回子控制器, 并且将所述子控制器导向主窗口的路由控制器。
  5. 根据权利要求4所述的方法,其中,利用所述入口配置组件引入所述入口组件并使所述入口组件返回所述子控制器,并且将所述子控制器导向所述主窗口的路由控制器,包括:
    利用所述入口配置组件将所述入口模板样式、所述目标组件的内容、所述目标组件的顺序、所述目标组件对应的图标和名称导入所述入口组件;
    使所述入口组件返回所述子控制器;
    利用所述入口配置组件将所述子控制器导向所述主窗口的路由控制器。
  6. 根据权利要求5所述的方法,其中,所述主窗口的路由控制器为TabBar类型。
  7. 根据权利要求4-6任一所述的方法,其中,所述入口配置组件还引入生命周期组件,所述生命周期组件包括模块数组,所述模块数组包含所述目标组件的类,
    所述生命周期组件配置为通过所述入口配置组件接收来自所述生命周期管理模块的生命周期管理消息,基于所述目标组件的类确定需要通知的目标组件,并将所述生命周期管理消息转发到需要通知的目标组件。
  8. 根据权利要求1-7任一所述的方法,其中,配置所述项目信息包括:
    利用开放平台提供的信息接收入口配置所述项目信息。
  9. 根据权利要求8所述的方法,其中,所述项目信息包括应用程序名称、应用程序识别号、应用程序版本号、应用图标的统一资源定位拼接、应用图标的资源名称拼接、启动页的统一资源定位拼接、启动页的资源名称拼接、工程名称、打包名称、公有库名称、公有库版本、私有库名称拼接、私有库地址拼接、私有库版本拼接至少之一。
  10. 根据权利要求8或9所述的方法,其中,利用所述开放平台提供的所述信息接收入口配置所述项目信息,包括:
    响应于接收到针对所述开放平台提供的应用管理图标的点击指令,跳转至应用管理界面;
    响应于接收到针对所述应用管理界面的创建应用标签页的保存图标的点击指令,采集在所述创建应用标签页的对话框中输入的所述项目信息,以实现所述项目信息的配置;
    其中,所述对话框为所述开放平台提供的所述信息接收入口。
  11. 根据权利要求1-10任一所述的方法,其中,利用所述打包系统对所述目标工程打包,得到对应于所述目标工程的所述iOS应用程序,包括:
    接入所述打包系统,执行所述脚本以修改打包主题及打包模式,对所述目标工程打包,得到所述iOS应用程序。
  12. 根据权利要求1-11任一所述的方法,还包括:
    将所述iOS应用程序上传至开放平台,并生成用于下载所述iOS应用程序的下载标识。
  13. 根据权利要求12所述的方法,其中,所述下载标识为二维码。
  14. 根据权利要求1-11任一所述的方法,还包括:
    基于依赖库管理项目组件模板,建立私有库。
  15. 根据权利要求14所述的方法,其中,所述私有库的代码存放在代码仓库中,所述私有库包括多个业务组件和多个功能组件。
  16. 根据权利要求3-7任一所述的方法,还包括:
    利用集成开发工具建立所述模板工程。
  17. 根据权利要求16所述的方法,其中,所述模板工程包括content.jason文件,所述conten.jason文件配置为插桩所述应用图标和所述启动页的图片资源。
  18. 一种iOS应用程序构建装置,包括:
    信息处理单元,配置为配置项目信息;
    工程处理单元,配置为基于所述项目信息和至少一个目标组件,利用编译管理服务并采用脚本对预设工程进行配置以得到目标工程;
    打包单元,配置为利用打包系统对所述目标工程打包,得到对应于所述目标工程的iOS应用程序。
  19. 一种电子设备,包括:
    处理器;
    存储器,包括一个或多个计算机程序模块;
    其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现权利要求1-17任一所述的iOS应用程序构建方法的指令。
  20. 一种存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求1-17任一所述的iOS应 用程序构建方法。
PCT/CN2021/130205 2021-02-09 2021-11-12 iOS应用程序构建方法及装置、电子设备及存储介质 WO2022170801A1 (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/913,884 US20230236809A1 (en) 2021-02-09 2021-11-12 Ios application program construction method and apparatus, electronic device, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110181971.0 2021-02-09
CN202110181971.0A CN112882700B (zh) 2021-02-09 2021-02-09 iOS应用程序构建方法及装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
WO2022170801A1 true WO2022170801A1 (zh) 2022-08-18

Family

ID=76056403

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/130205 WO2022170801A1 (zh) 2021-02-09 2021-11-12 iOS应用程序构建方法及装置、电子设备及存储介质

Country Status (3)

Country Link
US (1) US20230236809A1 (zh)
CN (1) CN112882700B (zh)
WO (1) WO2022170801A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509607A (zh) * 2022-11-23 2022-12-23 易方信息科技股份有限公司 一种iOS端打包工程向打包脚本跨环境传递指令的方法
CN116382703A (zh) * 2023-06-07 2023-07-04 建信金融科技有限责任公司 软件包生成方法、代码开发方法及装置、电子设备和介质
CN116450622A (zh) * 2023-06-16 2023-07-18 建信金融科技有限责任公司 数据入库的方法、装置、设备和计算机可读介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112882700B (zh) * 2021-02-09 2024-04-23 京东方科技集团股份有限公司 iOS应用程序构建方法及装置、电子设备及存储介质
CN113312030A (zh) * 2021-06-15 2021-08-27 京东数科海益信息科技有限公司 构建应用程序的方法、电子设备及存储介质
CN113448591A (zh) * 2021-07-17 2021-09-28 绿漫科技有限公司 一种基于python快速创建iOS工程的方法
CN113703754A (zh) * 2021-07-20 2021-11-26 青岛海尔科技有限公司 项目工程结构动态构建方法、装置、存储介质及电子装置
CN114153480A (zh) * 2021-12-06 2022-03-08 北京金堤科技有限公司 代码同步、组件发布方法及其装置、计算机存储介质
CN114518867A (zh) * 2022-02-15 2022-05-20 中国农业银行股份有限公司 应用程序的构建方法、装置、设备及介质
CN115421781A (zh) * 2022-11-04 2022-12-02 易方信息科技股份有限公司 一种基于shell脚本的IOS端项目自动化打包方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092179A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation High performant ios template based application build system
US20160196120A1 (en) * 2013-09-05 2016-07-07 Peking University Founder Group Co., Ltd. iOS APPLICATION AUTOMATIC COMPILATION METHOD AND SYSTEM
CN107832057A (zh) * 2017-10-31 2018-03-23 福建天泉教育科技有限公司 一种iOS应用的构建方法及终端
CN110795078A (zh) * 2019-09-28 2020-02-14 同程网络科技股份有限公司 基于ios系统下的app工程运作系统的架构方法
CN110851135A (zh) * 2019-09-12 2020-02-28 中国平安财产保险股份有限公司 应用程序自动构建上传方法、装置及计算机设备、存储介质
CN111399810A (zh) * 2020-03-11 2020-07-10 杭州涂鸦信息技术有限公司 一种iOS应用程序动态组件化开发方法及其系统和设备
CN112882700A (zh) * 2021-02-09 2021-06-01 京东方科技集团股份有限公司 iOS应用程序构建方法及装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020156668A1 (en) * 2001-02-16 2002-10-24 Morrow Martin E. Remote project development method and system
US20030233631A1 (en) * 2002-06-13 2003-12-18 Ambrose Curry Web services development method
US9766953B2 (en) * 2004-12-16 2017-09-19 Openspan, Inc. System and method for non-programmatically constructing software solutions
WO2008103608A2 (en) * 2007-02-19 2008-08-28 Ondeego, Inc. Methods and system to create applications and distribute applications to a remote device
US9632770B2 (en) * 2015-04-28 2017-04-25 Google Inc. Infrastructure for hosting and publishing software packages
US11593075B2 (en) * 2015-11-03 2023-02-28 Open Text Sa Ulc Streamlined fast and efficient application building and customization systems and methods
US20180181378A1 (en) * 2016-02-28 2018-06-28 Alex Bakman Method, system and apparatus for generating, editing, and deploying native mobile apps
CN107741844B (zh) * 2016-08-22 2020-12-01 腾讯科技(深圳)有限公司 一种应用安装包的生成方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160196120A1 (en) * 2013-09-05 2016-07-07 Peking University Founder Group Co., Ltd. iOS APPLICATION AUTOMATIC COMPILATION METHOD AND SYSTEM
US20160092179A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation High performant ios template based application build system
CN107832057A (zh) * 2017-10-31 2018-03-23 福建天泉教育科技有限公司 一种iOS应用的构建方法及终端
CN110851135A (zh) * 2019-09-12 2020-02-28 中国平安财产保险股份有限公司 应用程序自动构建上传方法、装置及计算机设备、存储介质
CN110795078A (zh) * 2019-09-28 2020-02-14 同程网络科技股份有限公司 基于ios系统下的app工程运作系统的架构方法
CN111399810A (zh) * 2020-03-11 2020-07-10 杭州涂鸦信息技术有限公司 一种iOS应用程序动态组件化开发方法及其系统和设备
CN112882700A (zh) * 2021-02-09 2021-06-01 京东方科技集团股份有限公司 iOS应用程序构建方法及装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MU RONG; LIU XIN; WANG XIAOLU: "Design of Automatic Build Server of WPS for iOS Based on Jenkins", SCIENCE AND TECHNOLOGY & INNOVATION, no. 18, 27 September 2017 (2017-09-27), pages 117 - 118, XP055957812, ISSN: 2095-6835, DOI: 10.15913/j.cnki.kjycx.2017.18.117 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115509607A (zh) * 2022-11-23 2022-12-23 易方信息科技股份有限公司 一种iOS端打包工程向打包脚本跨环境传递指令的方法
CN116382703A (zh) * 2023-06-07 2023-07-04 建信金融科技有限责任公司 软件包生成方法、代码开发方法及装置、电子设备和介质
CN116382703B (zh) * 2023-06-07 2023-08-22 建信金融科技有限责任公司 软件包生成方法、代码开发方法及装置、电子设备和介质
CN116450622A (zh) * 2023-06-16 2023-07-18 建信金融科技有限责任公司 数据入库的方法、装置、设备和计算机可读介质
CN116450622B (zh) * 2023-06-16 2023-09-22 建信金融科技有限责任公司 数据入库的方法、装置、设备和计算机可读介质

Also Published As

Publication number Publication date
US20230236809A1 (en) 2023-07-27
CN112882700B (zh) 2024-04-23
CN112882700A (zh) 2021-06-01

Similar Documents

Publication Publication Date Title
WO2022170801A1 (zh) iOS应用程序构建方法及装置、电子设备及存储介质
US10379846B1 (en) Systems and methods for real time version control for integrating updated web-based components with a native application
CN106559438B (zh) 一种基于目标网络平台的程序上传方法和装置
US10572249B2 (en) Software kit release management
US9454363B1 (en) Mobile application development system and method
US11635974B2 (en) Providing a different configuration of added functionality for each of the stages of predeployment, deployment, and post deployment using a layer of abstraction
US10296298B1 (en) Systems and methods for cross platform information exchange mechanism for integrating web-based components with a native application
WO2018036342A1 (zh) 基于csar的模型文件的可视化设计方法及装置
US10296309B1 (en) Systems and methods for automatic API generation for bi-directional communication between native and web-based components of a mobile application
CN113064630B (zh) 移动端app自动打包方法、系统、电子设备及存储介质
US10733013B2 (en) Information-technology workflows using executable tiles distributed between workflow instances
CN113835713B (zh) 源码包下载方法、装置、计算机设备和存储介质
CN110727575B (zh) 一种信息处理方法、系统、装置、以及存储介质
US20200097260A1 (en) Software application developer tools platform
CN115113850A (zh) 一种跨平台应用的构建、运行方法、服务器、终端和系统
CN108287720A (zh) 软件编译方法、装置、设备及存储介质
CN113805877A (zh) 基于idea插件的项目工程的构建方法及装置
CN112685051A (zh) 自动执行shell脚本的方法、装置、平台及存储介质
Stoneman Docker on Windows: From 101 to production with Docker on Windows
Bhattacharjee et al. Cloudcamp: A model-driven generative approach for automating cloud application deployment and management
CN114726848B (zh) Windows平台的客户端自动化打包和exe分发方法及装置
US20240086157A1 (en) Visual generation of software deployment pipelines using recommendations of development and operations blueprints
US20240192974A1 (en) Simulation of one or more pipeline jobs in a software deployment pipeline
US20210271458A1 (en) Managing an app method and system
Adamski Hands-On Cloud Development with WildFly: Develop, deploy, and configure cloud-based, enterprise Java applications with WildFly Swarm and OpenShift

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21925448

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 231123)