Hippy is designed for developers to easily build cross-platform and high-performance awesome apps. 👏

Overview

Hippy Cross Platform Framework

Hippy Group license PRs Welcome node Actions Status Codecov GitHub release (latest SemVer)

Homepage

💡 Introduction

Hippy is a cross-platform development framework, that aims to help developers write once, and run on multiple platforms(iOS, Android, Web, and so on). Hippy is quite friendly to Web developers, especially those who are familiar with React or Vue. With Hippy, developers can create the cross-platform app easily.

Hippy is now applied in Tencent major apps such as Mobile QQ, Mobile QQ Browser, Tencent Video App, QQ Music App, and Tencent News, reaching hundreds of millions of ordinary users.

💯 Advantages

  • Designed for Web developers, officially support Web frameworks like React and Vue.
  • Same APIs for different platforms.
  • Excellent performance with JS engine binding communication.
  • Build-in recyclable component with better performance.
  • Smoothly and gracefully migrate to Web browser.
  • Fully supported Flex Layout engine.

🔨 Getting started

Preparing environment

Make sure you have git and npm installed locally.

Run git clone https://github.com/Tencent/Hippy.git and npm install at project root directory.

The Hippy repository applies git-lfs to manage so,gz,otf files, make sure you have installed git-lfs first.

For macOS developers:

homebrew is recommended to install the dependencies.

For Windows developers:

Windows can't run the iOS development environment so far.

Build the iOS simulator with js demo

For iOS, we recommend to use iOS simulator when first try. However, you can change the Xcode configuration to install the app to iPhone if you are an iOS expert.

  1. Run npm run init at root directory.

    This command is combined with npm install && npx lerna bootstrap && npm run build.

    npm install: Install the project build scripts dependencies.

    npx lerna bootstrap: Install dependencies of each npm package.(Hippy uses Lerna to manage multi js packages, if lerna command is not found, execute npm install lerna -g first.)

    npm run build: Build each front-end sdk package.

  2. Choose a demo to build with npm run buildexample [hippy-react-demo|hippy-vue-demo] at root directory.

  3. Start the Xcode and build the iOS app with open examples/ios-demo/HippyDemo.xcodeproj.

If Step 2 throw error, you can cd to examples hippy-react-demo or hippy-vue-demo, and run npm install --legacy-peer-deps to install demo dependencies first.

More details for iOS SDK integration.

Build the Android app with js demo

For Android, we recommend using the real cellphone for better develop experience, because Hippy is using X5 JS engine which can't support x86 simulator, as well as ARM simulator has a low performance.

Before build the android app, please make sure the SDK and NDK is installed, And DO NOT update the build toolchain.

  1. Run npm run init at root directory.

    This command is combined with npm install && npx lerna bootstrap && npm run build.

    npm install: Install the project build scripts dependencies.

    npx lerna bootstrap: Install dependencies of each npm package.(Hippy uses Lerna to manage multi js packages, if lerna command is not found, execute npm install lerna -g first.)

    npm run build: Build each front-end sdk package.

  2. Choose a demo to build with npm run buildexample [hippy-react-demo|hippy-vue-demo] at root directory.

  3. Open Android Project at root directory with Android Studio.

  4. Connect Android phone with USB cable and make sure USB debugging mode is enabled(Run adb devices on the computer terminal to check cellphone connection status).

  5. Open the project with Android Studio, run and install the apk.

If Step 2 throw error, you can cd to examples hippy-react-demo or hippy-vue-demo, and run npm install --legacy-peer-deps to install demo dependencies first.

If you encounter the issue of No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android, here is the solution.

More details for Android SDK integration.

Debug the js demo

  1. Follow Build the iOS simulator with js demo or Build the Android app with js demo first to build the App.
  2. Run npm run init:example [hippy-react-demo|hippy-vue-demo] at root directory.
  3. Run npm run debugexample [hippy-react-demo|hippy-vue-demo] dev at root directory.

Or you can cd to examples/hippy-react-demo or examples/hippy-vue-demo directory to run npm run hippy:dev instead.

On example debug mode, npm packages such as @hippy/react, @hippy/vue are linked to packages > [different package] > dist(not node_modules), so if you have changed js package source code and want to make it take effect in target example, please call npm run build at root directory again.

More details for debugging can be read in Hippy Debug Document.

Build the js production demo

  1. Follow Build the iOS simulator with js demo or Build the Android app with js demo first to build the App.
  2. cd to examples hippy-react-demo or hippy-vue-demo.
  3. Run npm install to install demo js dependencies.
  4. Run npm run hippy:vendor and npm run hippy:build in sequence to build the production vendor.[android|ios].js and index.[android|ios].js.

Hippy demo uses DllPlugin to split the common chunk and app chunk.

How to Integrate

📁 Documentation

To check out hippy examples and visit hippyjs.org.

📅 Changelog

Detailed changes for each release version are documented in the project release notes.

🧱 Project structure

Hippy
├── examples                          # Demo code for frontend or native developer.
│   ├── hippy-react-demo              # hippy-react js demo code.
│   ├── hippy-vue-demo                # hippy-vue js demo code.
│   ├── ios-demo                      # iOS native demo code.
│   └── android-demo                  # Android native demo code.
├── packages                          # npm packages.
│   ├── hippy-react                   # React binding for Hippy.
│   ├── hippy-react-web               # Web adapter for hippy-react.
│   ├── hippy-vue                     # Vue binding for Hippy.
│   ├── hippy-vue-css-loader          # Webpack loader for convert CSS text to JS AST.
│   ├── hippy-vue-loader              # Forked from vue-loader to do some hippy customization.
│   ├── hippy-vue-native-components   # Native components extensions for hippy-vue.
│   └── hippy-vue-router              # Vue router for hippy-vue.
├── ios
│   └── sdk                           # iOS SDK
├── android
│   └── sdk                           # Android SDK.
├── core                              # JS modules implemented by C++, binding to JS engine.
├── docker                            # Native release docker image and build scripts.
├── layout                            # Hippy layout engine.
├── static                            # Global static resources stored directory.
└── scripts                           # Project build script.

🤝 Contribution

Developers are welcome to contribute to Tencent's open source, and we will also give them incentives to acknowledge and thank them. Here we provide an official description of Tencent's open source contribution. Specific contribution rules for each project are formulated by the project team. Developers can choose the appropriate project and participate according to the corresponding rules. The Tencent Project Management Committee will report regularly to qualified contributors and awards will be issued by the official contact. Before making a pull request or issue to Hippy, please make sure to read Contributing Guide.

All the people who already contributed to Hippy can be seen in Contributors and Authors File.

❤️ Stargazers over time

Stargazers over time

📄 License

Hippy is Apache-2.0 licensed.

🔗 Links

Hippy Eco-System

Taitank Layout Engine

Comments
  • feat(hippy-vue-next): support vue3.x

    feat(hippy-vue-next): support vue3.x

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by lxy32167 43
  • Process 'command 'C:\Users\XXX\AppData\Local\Android\Sdk/cmake/3.6.4111459/bin/cmake'' finished with non-zero exit value 1

    Process 'command 'C:\Users\XXX\AppData\Local\Android\Sdk/cmake/3.6.4111459/bin/cmake'' finished with non-zero exit value 1

    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':android-sdk:compileCmake'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:110) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46) at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:74) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:143) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:40) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40) at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24) at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33) at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:355) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:219) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149) at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:154) at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38) at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96) at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74) at org.gradle.tooling.internal.provider.runner.ClientProvidedBuildActionRunner.run(ClientProvidedBuildActionRunner.java:68) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:50) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45) at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51) at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47) at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44) at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30) at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39) at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80) at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62) at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34) at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36) at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25) at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43) at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59) at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59) at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46) at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) at java.lang.Thread.run(Thread.java:748) Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Nelson\AppData\Local\Android\Sdk/cmake/3.6.4111459/bin/cmake'' finished with non-zero exit value 1 at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:395) at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:37) at org.gradle.api.tasks.AbstractExecTask.exec(AbstractExecTask.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:801) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:768) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99) ... 115 more

    stale: 60d 
    opened by fenghpro 42
  • feat(android): add tdf render

    feat(android): add tdf render

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by vimerzhao 36
  • Feat/v8 memory

    Feat/v8 memory

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by linjinze999 33
  • [WIP]Feature/web renderer

    [WIP]Feature/web renderer

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    WIP 
    opened by pba-cra 33
  • feat(devtools): remove base lib and adopt footstone

    feat(devtools): remove base lib and adopt footstone

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by xiaoguo0742 18
  • feat(devtools): add vfs network debugging

    feat(devtools): add vfs network debugging

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by lavnFan 17
  • feat(voltron): add voltron doc

    feat(voltron): add voltron doc

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by henryjin0511 16
  • feat(devtools): support multi jscontext debug

    feat(devtools): support multi jscontext debug

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by lavnFan 15
  • test(voltron): add unit tests for voltron renderer

    test(voltron): add unit tests for voltron renderer

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by BigLiao 14
  • feat(android): add nested scroll support for ListView and ScrollView

    feat(android): add nested scroll support for ListView and ScrollView

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    opened by iPel 12
  • [WIP]feat(layout): replace taitank layout and remove layout directory

    [WIP]feat(layout): replace taitank layout and remove layout directory

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    dom: layout dom: tree size: xl gh: owner 
    opened by ilikethese 1
  • feat(andr): add prod remotedebug, local bundle instead of remote server

    feat(andr): add prod remotedebug, local bundle instead of remote server

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    framework: android doc: example size: s 
    opened by FE-xiaoJiang 2
  • fix(android): text with negative letterSpacing wraps at wrong position

    fix(android): text with negative letterSpacing wraps at wrong position

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    renderer: native size: s 
    opened by iPel 2
  • feat(connector): add tdf renderer connector

    feat(connector): add tdf renderer connector

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    framework: android renderer: native renderer: tdf doc: example size: xl build: gradle 
    opened by canluhuang 2
  • feat(publish): use fat-aar-android to build aar

    feat(publish): use fat-aar-android to build aar

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    framework: android renderer: native doc: example size: l build: gradle 
    opened by siguangli 2
  • fix(android): list may cause IndexOutOfBoundsException

    fix(android): list may cause IndexOutOfBoundsException

    scroll after View removed may cause IndexOutOfBoundsException

    Pre-PR Checklist

    • [x] I added/updated relevant documentation.
    • [x] I followed the Convention Commit guideline with maximum 72 characters to submit commit message.
    • [x] I squashed the repeated code commits.
    • [x] I signed the [CLA].
    • [x] I added/updated test cases to check the change I am making.
    • [x] All existing and new tests are passing.
    framework: android size: xs 
    opened by iPel 1
Releases(2.15.5)
  • 2.15.5(Dec 7, 2022)

  • 2.15.4(Dec 5, 2022)

  • 2.15.3(Nov 25, 2022)

    Notable Changes 重要更新

    • Android/iOS add getBoundingClientRect method. React DEMO | Vue DEMO

      增加 getBoundingClientRect 方法,取代原有 measureInWindow 和 measureInAppWindow。React DEMO | Vue DEMO

    • Android/iOS add load result param for webView's onLoadEnd api.

      Android/iOS 增加 WebView onLoadEnd API 参数。

    • Android add performance api for new x5 v8.

      Android 增加 X5 V8 performance api。

    • Android waterfall banner not affected by parent horizontal padding.

      Android 消除瀑布流 banner 受父组件 padding 的影响。

    • Android fix V8 OOM crash when inspector enable the js debugger.

      Android 修复 V8 调试断点时 OOM 问题。

    • Android fix horizontal scroll view smoothScrollToPage crash.

      Android 修复水平滚动的 ScrollView smoothScrollToPage 崩溃问题。

    • iOS correct hittest when view has animation

      iOS 修正带有动画的 View hittest 时的问题。

    • iOS fix subviews of animated view cannot be clicked.

      iOS 修正带有动画 View 的子 View 不能点击问题

    • hippy-vue add whitespace handler config.

      hippy-vue 增加文本空格处理配置。

    • hippy-vue ignore to append existed node to improve router performance.

      hippy-vue 忽略添加已有节点来提升 router 切换性能。

    Bug Fixes

    • android: edit getBoundingClientRect callback format (080afd4)
    • android: horizontal scroll view smoothScrollToPage crash (e965de7)
    • android: waterfall banner not affected by parent honrizon padding; (f6d6f30)
    • ios: correct hittest when view has animation (779d813)
    • iOS: delete tmp log (9174cad)
    • ios: edit getBoundingClientRect callback format (60e5d98)
    • ios: need to extern as C if cpp is defined (3c8b4dc)
    • iOS: refresh header not rebound automatically (9815a23)
    • ios: subviews of animated view cannot be clicked (99379c3)
    • react,vue: change measureInAppWindow error return value (2a96aaf)
    • react,vue: fix getBoundingClientRect errMsg syntax (8348fef)
    • v8: fix V8 OOM crash when inspector enable the js debugger (f052977)
    • vue-css-loader: update loader-utils to safe version (aca8175)
    • workflow: fix CodeQL exception when default run (615600b)
    • workflows: fix backtrace parsing incorrect problem in crash report (af4b1cc)
    • workflows: fix CodeQL languages detection bug on PR request (fe2446d)

    Features

    • android,ios,js: add getBoundingClientRect method (#2651) (92ab25b), closes #4
    • ci: implement iOS project artifact compare (bb2c868)
    • core: adapt to different v8 versions (5a9723f)
    • core: add performance api for new x5 v8 (991f4fe)
    • ios,android,vue: add load result param for webView's onLoadEnd api (#2667) (bbdd9ae)
    • v8: heap limit increases considering the old generation capacity (6ddecf8)
    • vue: add whitespace handler config (8a65d23)
    • workflows: XCode project adaptation (219b532)
    • workflows: add project code line exclude files support (d104760)
    • workflows: change XCode project scheme name (1100b8d)
    • workflows: iOS build tests add different configurations (36f624b)
    • workflows: remove unnecessary Cocoapods installation step (4682c3c)

    Performance Improvements

    • vue: ignore to append existed node to improve router performance (cc24c27)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-demo.apk(8.74 MB)
    hippy-vue-demo.apk(8.74 MB)
    hippy-vue-next-demo.apk(8.74 MB)
  • 2.15.2(Nov 7, 2022)

    Notable Changes 重要更新

    • hippy-vue support to merge styles on root element of child component.

      hippy-vue 支持子组件根节点样式合并。

    • Android fix pull header not showing for horizontal list.

      Android 修复 PullHeader 在水平 ListView不显示问题。

    • Android fix setTextColor not working.

      Android 修复 setTextColor 不生效问题。

    • iOS need to callback when url loading error.

      iOS 修复在url 加载错误时 callback 没调用问题。

    Bug Fixes

    • android: add copyright header for ClipboardModule (d82ba9b)
    • android: fix setTextColor not working (a533c22)
    • android: pull header not showing for horizontal list (3496fe4)
    • android: remove redundant getPrimaryClip (4b3ff38)
    • iOS: jsi convert Chinese string error (321f738)
    • ios: need to callback when url loading error (d140593)
    • iOS: retain cycle with vc and bridge (#2591) (ecafb62)

    Features

    • vue: support to merge styles on root element of child component (efea081)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.74 MB)
    hippy-vue-debug.apk(8.74 MB)
    hippy-vue-next-debug.apk(8.74 MB)
  • 2.14.9(Nov 7, 2022)

  • 2.14.8(Nov 7, 2022)

  • 2.15.1(Oct 26, 2022)

    Notable Changes 重要更新

    • hippy-vue support deep selector & fix attribute selector issue.

      hippy-vue 支持 deep 深度选择器 并修复属性选择器问题。

    • Android fix sticky item incorrect height after refresh.

      Android 修复 ListView Sticky 元素刷新后高度异常问题。

    • iOS avoid CTTelephony's occasional crash

      iOS 修复 CTTelephony 偶然 crash 问题。

    • iOS avoid a thread race for image component

      iOS 修复图片组件线程竞争问题。

    • DevTools add report parameters.

      DevTools 增加上报字段。

    • android: sticky item has incorrect height after refresh (76694c5)
    • homepage: fix Bad HTML filtering regexp (2575799)
    • ios: avoid a thread race for image component (8541e28)
    • ios: avoid CTTelephony's occasional crash (c2536f3)
    • ios: fix image view dangling pointer (60b17db)
    • ios: no animation for frame reset (ba43d47)
    • ios: virtual nodes need to be flushed (be96c20)

    Features

    • devtools: devtools report (#2556) (37eb1c2)
    • vue: fix attribute selector & support deep selector (87ce13e)

    Performance Improvements

    • react: assign initialListSize if not undefined (8634501)
    • vue: refer native script source code to reduce number of loops (#2571) (21900d0)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.87 MB)
    hippy-vue-debug.apk(8.87 MB)
    hippy-vue-next-debug.apk(8.87 MB)
  • 2.15.0(Oct 14, 2022)

    Notable Changes 重要更新

    • hippy-vue support Vue3.x

      hippy-vue 支持 Vue3.x。

    • hippy-vue support scoped style.

      hippy-vue 支持 scoped 样式

    • hippy-vue perf first screen attributes node update

      hippy-vue 优化首屏节点属性更新频次。

    • hippy-react add EventBus to listen global events.

      hippy-react 增加全新 EventBus 来监听全局事件

    • Android support v8 version to 10.6.194

      Android 升级 v8 引擎版本到 10.6.194。

    • Export v8 related methods to java

      暴露 v8 相关方法给 Java 侧调用。

    • Support JS call v8 performance memory API.

      支持 JS 调用 v8 performance memory API。

    • Android provide sdk version information

      Android 增加获取 SDK 版本 API。

    • Android add expandPullHeader method for ListView

      Android 增加 ListView expandPullHeader 方法。

    • Android support Waterfall banner

      Android 支持瀑布流 Banner 设置。

    Bug Fixes

    • android: onPageScroll event gives wrong value (8850523)
    • android: empty text node height compatibility (700697f)
    • android: implement preloadItemNumber for ListView (c978c85)
    • android: prevent LIBRARY_VERSION inlining (472404c)
    • android: WebView backgroundColor not working (07e4dd2)
    • core: compatible with lower version v8 for memory feature (7d3b773)
    • core: fix inspector crash (806f240)
    • core: revert hippy1.x compatible code (4722e88)
    • debug-server: fix wepback & node md4 hash not campatible (e4753e5)
    • docs, android: expandPullHeader method for ListView (#2494) (08d38dc)
    • hippy-react: support to emit multi parameters for HippyEvent (0b84e88)
    • ios: add assert for url creation failure (26ef050)
    • ios: fix memory leaks in network module (0c172a9)
    • ios: fix touch gesture no touch.view (9378959)
    • ios: needs to reset showing state when cell prepares for reusing (a5e9e00)
    • ios: scrollview: scrollToWithDuration not trigger OnScroll (7a8b9e7)
    • script: fix build script error (d219a12)
    • vue-next: add missing modules & perf docs (6046d2c)
    • vue-next: fix syntax errors (93faab4)
    • vue: fix web-renderer script (34cc959)
    • vue: set id for root view to fix style missed (2dc9db5)
    • workflows: fix workflow file syntax exception (1ed405e)

    Features

    • android: add v8 memory(heap) to performance (7b03a60)
    • android: provide sdk version information (8f0cfe6)
    • android: provide sdk version information (a9a9f40)
    • android: serialization support version 15 data (270775c)
    • android: support v8 version to 10.6.194 (e345701)
    • android: update docs and demo for android waterfall banner render; (#2412) (5fe65e9)
    • android: update to use C++17 standard (250a4aa)
    • core: export v8 method to java (9a577ab)
    • hippy-react: add HippyEvent to listen global events (93a291a)
    • hippy-vue-next: support vue3.x (#2357) (0445c4e)
    • ios: listview stick cell wrong offset while refreshing (#2523) (e246165)
    • vue-css-loader: change dist file name to be parsed by vue-loader (b5d94e4)
    • vue-next: add web-renderer script (1be39dc)
    • vue-next: refactor type definition files place (#2542) (202dccb)
    • vue: add getElemCss scoped judgement (e9ea3f8)
    • vue: perf first screen attributes node update (dcd7459)
    • vue: support scoped & attribute selector (772a698)

    Performance Improvements

    • ios: use respondsToSelector instead of conformsToProtocol (cb2b2b8)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.82 MB)
    hippy-vue-debug.apk(8.82 MB)
    hippy-vue-next-debug.apk(8.91 MB)
  • 2.14.7(Sep 9, 2022)

  • 2.14.6(Aug 26, 2022)

  • 2.14.5(Sep 9, 2022)

    Notable Changes 重要更新

    • Android add visibility style support.

      Android 增加 visibility 样式支持。

    • Android set init complete after bridge ready to fix jsbundle loading sequence error.

      Android 在 bridge 初始化完成增加 complete 标记,修复加载执行 jsbundle 潜在的时序问题。

    • Android fix borderRadius not working and radius scale issue in gif image.

      Android 修复 borderRadius 和 radius scale 在 gif 图不生效问题。

    • iOS fix textInput isFocused not working issue.

      iOS 修复 textInput isFocused 特定场景不生效问题。

    • iOS fix turbo runtime not released in js thread.

      iOS 修复 turbo runtime 在 js 线程不释放问题。

    • iOS fix padding not working on text's subview.

      iOS 修复 Text 嵌套 subview 时 padding 不生效问题。

    Bug Fixes

    • android, ios: the final onScroll may be dropped (#2377) (963992b)
    • android: add try-catch for NetInfoModule (258f9ac)
    • android: gif borderRadius not working and radius scale issue (bb84fcd)
    • android: handleRequestCookie error (2ff9388)
    • android: set init complete after bridge ready (04c8bdc)
    • core: fix code lint warnings (7f60759)
    • devtools: remove v8 inspector flag for ios (f431ab5)
    • homepage: fix secure problem for homepage redirect (a7b552f)
    • ios: fix refresh component bug (36559b1)
    • ios: fix scroll rtl for content view (2c7da42)
    • ios: hippy-vue textInput isFocused not working (623b117)
    • ios: padding not working on text's subview (65676f0)
    • ios: turbo runtime must release in js thread (5f96fae)
    • vue: fix regular expressions catastrophic backtracking (510a587)
    • vue: revert a catastrophic backtracking fix (2fbb0d9)

    Features

    • android: add visibility style (8b7a81e)
    • android: update AGP version to 7.2.2 (d9b6ccd)
    • android: update NDK and CMake versions (2b7282f)
    • hippy-vue: perf attribute update (e5c181f)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.11 MB)
    hippy-vue-debug.apk(8.07 MB)
  • 2.14.4(Aug 10, 2022)

    Bug Fixes

    • android: fix LLVM linker version script not taking effect (5c535c9)
    • core: add android native2js promsie reject condition (daa484b)
    • ios: set thread priority explictly to avoid priority revertion (d38105f)
    • workflows: CodeQL analysis checkout using LFS (c004cc0)

    Features

    • hippy-vue: support once modifier (58f4d10)
    • workflows: add github actions for project artifact release (40dbc91)
    • workflows: artifact release action always compress symbols (66852f5)
    • workflows: CodeQL analysis runs at every night (55cd140)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.64 MB)
    hippy-vue-debug.apk(8.64 MB)
  • 2.14.3(Aug 3, 2022)

  • 2.14.2(Aug 1, 2022)

    Notable Changes 重要更新

    • Android support breakStrategy prop for Text and TextInput.

      Android Text 和 TextInput 组件支持 breakStrategy 换行特性。

    • DevTools support multi jscontext debug.

      DevTools 支持多 jscontext 调试。

    • Android/iOS fix ListView can not be used inside other ListView.

      Android/iOS 修复 ListView 嵌套在其他 ListView 中的使用问题。

    • Android fix horizontal ScrollView cannot scroll in other scrollable component.

      Android 修复水平 ScrollView 在其他可滚动组件中不能滚动的问题。

    Bug Fixes

    • android: horizontal ScrollView cannot scroll in other scrollable (724d4af)
    • android: listview can not scroll inside other listview (d92ac95)
    • buildcore: fix buildcore script (4bce58c)
    • image: fix image border path not reset (cfb800d)
    • ios: direction is for shadow view ,not view (63189f7)
    • ios: fix a potential null pointer when waterfallview cell resuse (e50fc40)
    • ios: fix HippyDevLoadingView shows in release environment (37faba6)
    • ios: nested listview may not get rendered (bb12159)
    • ios: radius must be smaller than half of component's length (0e97ad0)
    • ios: roottag property should not be updated (34ca26f)
    • ios: try to avoid cases where result is NAN (7989dbe)

    Features

    • android: add breakStrategy prop for Text and TextInput (#2285) (8dd4c03)
    • devtools: support multi jscontext debug (#2189) (3e18e89)
    • hippy-vue: support breakStrategy (d5309c2)
    • ios: add method to get key window in ios13 (6a625b6)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(9.83 MB)
    hippy-vue-debug.apk(9.83 MB)
  • 2.14.1(Jul 25, 2022)

    Notable Changes 重要更新

    • Android/iOS add isFocused method for TextInput.

      安卓/iOS 增加 TextInput 组件 isFocused 方法来判断聚焦状态。

    • Android Text component support more ellipsizeMode prop.

      安卓 Text 组件支持更多 ellipsizeMode 模式。

    • Android specify the V8 version used.

      安卓指定 V8 版本使用。

    • Android RecyclerView support horizontal PullHeader & PullFooter.

      安卓 RecyclerView 支持水平方向 ListView 使用 PullHeader 和 PullFooter。

    • Android set image default background color to TRANSPARENT.

      安卓设置图片默认背景色为透明。

    • Android fix collapsable check at attribute.

      安卓修复 collapsable 不能在 attribute 上设置的问题。

    • Android set mini sdk version to 21.

      安卓设置最低 SDK 版本到 21。

    • iOS support skew animation.

      iOS 支持 skew 动画。

    • iOS add promise unhandledrejection event support.

      iOS 支持 promise unhandledrejection 事件。

    • iOS fix memory leaks for block usage.

      iOS 修复 block 使用上的内存泄漏。

    • DevTools will disconnect websocket when closed.

      DevTools 在关闭时断开 WebSocket 链接。

    • hippy-react-web fix browser does not support addRule.

      hippy-react-web 修复浏览器不支持 addRule 的问题。

    • hippy-react-web fix image onClick event does not emit.

      hippy-react-web 修复图片组件不能绑定 onClick 事件。

    • hippy-react-web support ListView PullFooter.

      hippy-react-web 支持 ListView PullFooter 组件。

    • hippy-vue perf attributes & style update performance.

      hippy-vue 优化属性和样式更新性能。

    • hippy-vue-css-loader support letter-spacing.

      hippy-vue-css-loader 支持 letter-spacing 解析。

    • hippy-vue-css-loader fixed collapsable boolean convert error.

      hippy-vue-css-loader 修复 collapsable 布尔值转换错误。

    Bug Fixes

    • android: add on error call back for get image (17e1481)
    • android: call function callback reuse (03e5931)
    • android: check collapsable at attribute (46a7d80)
    • android: fix the skipCmakeAndNinja flag does not take effect (a293fdc)
    • android: fix websocket frame for ping and close (016cda1)
    • Android: hippypager layout and pageselect event (efbdd38)
    • android: implicit narrowing conversion in compound assignment (133a8d4)
    • android: re implementation progress long value switch to int (cd1071e)
    • android: remove unnecessary dir form git ignore (c06e14e)
    • android: reset hippy view group clip children to true (6e98859)
    • android: set default background color to TRANSPARENT (c6822da)
    • android: set mini sdk version to 21 (6fc5871)
    • android: viewpager scrollEnabled (252089f)
    • Android: web socket client boolean to AtomicBoolean (c267f9e)
    • core: fix CreateJSCString bug (1a463ec)
    • devtools: disconnect ws when close (c827e8c)
    • devtools: fix elements reload and update bug (#2272) (f6912ed)
    • devtools: fix mini scale for screen cast (c0e837e)
    • example: change webrenderer version (d6af3b5)
    • hippy-react-web: add unhandleRejection event handler (145364b)
    • hippy-react-web: fix borwser does not support addRule (1b30755)
    • hippy-react-web: fix error handler (d289f39)
    • hippy-react-web: fix img onClick envet does not emit (2d4d57b)
    • hippy-react-web: support ListView renderPullFooter (#2166) (95fc4c5)
    • hippy-vue-css-loader: support to parse letter-spacing (7b404f5)
    • ios: async image load to avoid downsampling stuck (9dc36a1)
    • iOS: async runloop to main thread (c5638e7)
    • ios: check weak self status (6c64f41)
    • ios: fix a dead lock (a6cf131)
    • ios: fix memory leaks for block usage (a1fd07b)
    • ios: fix potential crash due to dangling pointer (25af245)
    • ios: fix potentian crash due to dangling pointer (74ea629)
    • ios: fix undo crash for uitextfiled component (0f5bb91)
    • ios: no more ceiling item height (76421c1)
    • ios: reset properties if value is null (de6482d)
    • ios: try to avoid destroying variables in use (ac705fb)
    • ios: use smart pointer instead of non-smart pointer (d648eda)
    • npm: update got from vulnerable to safe version (0987946)
    • npm: update lerna to fix vulernable npm package (6dcdd9c)
    • npm: update vulnerable npm packages (a06bae2)
    • react: add ref null judgement for getElementFromFiberRef (eb55f3e)
    • vue-css-loader: fixed collapsable boolean convert error (e49d3b5)
    • workflows: fix CodeQL analysis failure problem (177b81b)
    • workflows: fix CodeQL not working as expected (4ff2e82)
    • workflows: fix the problem that CodeQL results are not generated (41fed9b)

    Features

    • android: add ellipsizeMode prop support for Text componment (#2221) (2ec6c70)
    • android: change compiler options based on LLVM 12 (deebf6f)
    • android: merge TVHippySdk to master (31c4cf5)
    • android: modify the V8_COMPONENT to specify the V8 version (eacfde3)
    • android: remove useless override method (9466a2e)
    • android: set hippy view group clip children to false (54485b0)
    • android: specify the V8 version used (3452763)
    • android: support horizontal PullHeader & PullFooter (#2268) (d6b662a)
    • core: add isFocused method for TextInput (c84a566)
    • core: update docs (3527693)
    • core: update docs (864810e)
    • core: update docs and demo (b4d7e12)
    • devtools: remove ios inspector instance (f9ca23e)
    • hippy-react-web: fix web style issues (#2087) (e6d0416)
    • hippy-react: support horizontal PullHeader & PullFooter (f9541f2)
    • hippy-vue: perf attribute & style update performance (10945d7)
    • ios: allows the access party to customize filter attributes (19938bd)
    • ios: remove uncall codes (b53bc03)
    • ios: set magnificationFilter as kCAFilterNearest by default (bd1642d)
    • ios: support skew animation (eb6042b)
    • js: add iOS promise unhandledrejection (c11766d)
    • web-renderer: add web-renderer demo & docs (#2234) (ca39aea)
    • workflows: optimize for speed when CodeQL is not required (ae34106)
    • workflows: optimize logic to reduce misjudgment (f7065eb)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(33.94 MB)
    hippy-vue-debug.apk(33.94 MB)
  • 2.13.13(Jul 20, 2022)

  • 2.13.12(Jul 13, 2022)

  • 2.14.0(Jun 21, 2022)

    Notable Changes

    • Android replace old ListView with androidX RecyclerView .

    • Android upgrade recommend v8 version to 9.8-lkgr.

    • Android support Flex wrap-reverse and space-evenly.

    • Android support synchronous restoreInstanceState.

    • Android support to customize default font family.

    • Android support getNativeParams from HippyEngineContext.

    • iOS add TextInput keyboard height changed event.

    • iOS support border style for ListViewItem.

    • iOS fix border bottom color display error.

    • Android/iOS support fetch request parameters with other customized options.

    • Android/iOS support cookies clear ability and fix wrong getCookies returned value if cookies expire. HippyReact | HippyVue

    • hippy-react-web publish breaking changes version with all new components and modules.

    • hippy-react/vue improve attributes update performance.

    • hippy-react/vue support collapsePullHeader with time delay options. HippyReact | HippyVue

    • hippy-vue add animation actionsDidUpdate callback hook.

    • hippy-vue remove compatible process for ListView(<ul>) endReached & loadMore event.

    • Devtools support react-devtools.

    • CI add Hippy Infra Packages(HIP) related workflows and replace Android local v8.

    • Homepage add English documents.

    Bug Fixes

    • android: add RecyclerView extra class name (b124434)
    • android: crash of sticky item view (f2c78d1)
    • android: fix v8 inspector does not work (a0e65b8)
    • android: fix v8 inspector does not work (f53df58)
    • android: fix java lint warnings (bbff285)
    • android: fix occasional crash when jsi convert (ff7e298)
    • android: handle ACTION_CANCEL in scroll view onTouchEvent (2b847db)
    • android: pull foot and header can exist at same time (b435496)
    • android: should catch exception from CookieManager.getInstance() (7b8fda3)
    • ci: fix android build tests workflow throw gradle not found error (2a0fb62)
    • ci: fix front-end bypass jobs event issue (e962e61)
    • cmake: disable outline atomics on android (d7a5a43)
    • cmake: fix core.modules not automatically registered problem (463a5d5)
    • cmake: fix typo problems (723a6d1)
    • core: add ios dimensions getter & setter and combine logic (255500d)
    • devtools: support node 17 for md4 hash (41a4695)
    • docker: use 2.7 version of get-pip.py instead (41655ed)
    • docs: add debug access introduction (11ddb53)
    • docs: update debug for android debug mode (f2e41b3)
    • hippy-react-web: fix hippy-react-web some issues (#1850) (43b785b)
    • hippy-vue: update hippy-vue node test (14d2242)
    • ios: adjust text layout (fe4a6f7)
    • ios: check cookie availabity before commit (b902ad8)
    • ios: fix a crash caused by thread race (b63148e)
    • ios: fix a crash caused by thread race (5291ab6)
    • ios: fix border bottom color display error (1f342b2)
    • ios: fix crash due to null pointer (5df3cfb)
    • ios: fix memory leaks (ae4be6b)
    • ios: fix refresh bug for header refresh and footer refresh (9fb451f)
    • ios: fix refresh component delay reset bug (0157ebe)
    • ios: fix zpoistion error for indicator and header view (8a045d8)
    • ios: modify cookie setting logic (e4a8c87)
    • workflows: add accessible permission to avoid error (0f17bdc)

    Features

    • android: add gradlew script execute permission (7a45c0e)
    • android: add initialContentOffset support for recycle view (63f7ef4)
    • android: change one byte string encoding (d55d214)
    • android: fix and provide gradlew command support (4608ea1)
    • android: modify the V8 inspector macro definition (dc4df92)
    • android: remove unused cmake variable (3790d47)
    • android: remove unused visual studio project (2b99eac)
    • android: remove useless jni third_party (a65fbb1)
    • android: restructure pull header and footer (bd5b6ea)
    • android: support getNativeParams from HippyEngineContext (91a8b8e)
    • android: support HippyHttpRequest get NativeParams (69898bb)
    • android: support host customize default font family (#1839) (c14e06a)
    • android: support sync restoreInstanceState (79f3307)
    • android: support wrap-reverse and space-evenly (#742) (27e7bad)
    • android: upgrade recommend v8 version to 9.8-lkgr (58402df)
    • android: use androidX recyclerView (3ad6355)
    • android: use HIP(hippy-infa-packages) to replace local v8 (0ed2f79)
    • cmake: add unified compiler toolchain (7713364)
    • cmake: do not overwrite original value (cd7df69)
    • core: support other options for fetch request (762494a)
    • devtools: support devtools connect after disconnect (462d121)
    • devtools: support devtools reload and update context (b9ea0be)
    • devtools: support react-devtools (5a7bdf7)
    • hippy-react-web: perfect hippy-react-web components (#1427) (f6a6c01)
    • hippy-react-web: support tree-sharking & fix issues (#2069) (75ece3b)
    • hippy-react: add callUIFunction debug log (5944182)
    • hippy-vue: add animation actionsDidUpdate hook (f61b48e)
    • hippy-vue: merge vue updating attribute operation (ac36f8f)
    • hippy-vue: refactor vue animation events (e98a0d7)
    • hippy-vue: rm compatible process for endReached & loadMore event (d320eb1)
    • hippy-vue: support to remove event & merge alias event registered (b34d7ef)
    • ios: add textinput keyboard height changed event (aed4a15)
    • ios: make item view be a subclass of hippyview (f2d685d)
    • react,vue: add collapsePullHeaderWithOptions api (af0129a)
    • react: change updateNode to batch operation & perf event binding (fdae46a)
    • workflows: add Hippy Infra Packages(HIP) related workflows (f01a845)
    • workflows: support for getting artifact tags (0d9e1e4)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(9.66 MB)
    hippy-vue-debug.apk(9.66 MB)
  • 2.13.11(Jun 8, 2022)

  • 2.12.7(Jun 8, 2022)

  • 2.13.10(May 25, 2022)

    Bug Fixes

    • android: call engine context method NullPointerException (0c34965)
    • android: mBridgeCallback leaked in fetchResourceWithUri (6ae7813)
    • core: fix deadlock bug (f08708f)
    • core: fix iOS warning (018f529)
    • core: fix memory leak in multi-context mode (c5447e1)
    • hippy-react-web: change rmc-list-view to hippy domain (c9e28f4)
    • ios: fix hippy view reuse bug (253fe78)
    • ios: reduce GPU usage by reducing off-screen rendering (#1902) (4f5a0b2)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.51 MB)
    hippy-vue-debug.apk(8.51 MB)
  • 2.13.8(May 12, 2022)

    Bug Fixes

    • android: fix remote url debug not contains version (3005622)
    • android: reset pull header position on scroll back (301f631)
    • android: reset recycle view stick view item type (f79b73d)
    • core: fix convert bug (f43988f)
    • core: fix jni pending exception crash (5273ba5)
    • core: fix turbomodule crash (6d08242)
    • hippy-vue: fix hmr for root App component (2c2ef45)
    • ios: remove an unused macro check (7f2b7f7)

    Features

    • devtools: change the screenshot canvas background to white (00445d5)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.51 MB)
    hippy-vue-debug.apk(8.51 MB)
  • 2.13.7(Apr 27, 2022)

    Notable Changes

    • Devtools support vue-devtools.

    • Devtools fix alpha screencast.

    • Core fix JNI detach crash.

    • Core change log level.

    • Android add call native and promise callback monitor.

    • iOS add method invoking interceptor.

    • iOS fix strange shaped text render bug.

    • hippy-react,hippy-vue add position absolute for modal default style.

    • hippy-vue fix textInput value filter issue.

    Bug Fixes

    • android: elements page screencast at first msg (f9059d1)
    • android: fix 'mControllers' may be accessed by multi-threads (460ad50)
    • android: post to dom thread do save (0ccb13a)
    • android: remove build modal from user agent (4d0d376)
    • android: reset pull header position for recycler view (42ef3c9)
    • android: should call onInterceptPromiseCallBack first (484d6c6)
    • core: fix jni detach crash (785edb3)
    • core: fix log macro conflict for iOS (5654164)
    • debug-server: update vulerable pacakage (bd4653f)
    • devtools: fix alpha screencast (8604f1a)
    • hippy-vue: fixed vue text update filter (c127669)
    • ios: fix image display crash (c9a39fc)
    • ios: fix list scroll event throttle bug (44b8aed)
    • ios: fix strange shaped text render bug (d77df3b)
    • ios: fix touch handler conflict (6ae38ca)
    • ios: fix value fetch error (e0edfae)

    Features

    • android: add call native and promise callback monitor (301562c)
    • android: add method 'addApiProviders' in HippyEngineContext (50dbe8a)
    • android: support vue-devtools debugClientId (c09e751)
    • core: change log level (12022fb)
    • devtools: support vue-devtools (e0cf765)
    • ios: add clientId and fix empty port (#1737) (aea12a3)
    • ios: localstorage can handle error (2426a8e)
    • ios: method invoke interceptor (#1774) (1ae54c6)
    • ios: unified client id generation logic (#1743) (1c2359c)
    • react,vue: add position absolute for modal default style (7bbed56)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(8.51 MB)
    hippy-vue-debug.apk(8.51 MB)
  • 2.13.6(Apr 18, 2022)

  • 2.12.6(Apr 17, 2022)

  • 2.13.5(Apr 1, 2022)

  • 2.13.4(Mar 29, 2022)

    Notable Changes

    • DevTools support debug multiple project at the same time.

    • HippyVue input support placeholder-text-color, underline-color-android.

    • Core fix log delegate crash.

    • Android add RecyclerView.

    • iOS fix image load progress error.

    • iOS fix image tint color bug

    • iOS fix JSI crash on some devices.

    Bug Fixes

    • android: fix nested sub-tag serialization issue (7fe73ca)
    • android: merge recyclerview to master (8e2038c)
    • android: packagingOptions of ARMEABI (f051421)
    • android: remove final of bundleName (d284fa1)
    • android: use getResources DisplayMetrics (ad455b3)
    • core: fix jni local ref bug (83348e2)
    • core: fix log delegate crash (249f9e4)
    • hippy-react-demo: fix backAndroid routes error (d11fd9a)
    • ios: fix crash caused by multi-thread race (513c9d6)
    • ios: fix image blurry error (83281ca)
    • ios: fix image load progress error (618eeda)
    • ios: fix image tint color bug (3884b0d)
    • ios: fix jsi crash on some devices (e8fb942)
    • ios: fix some issues (#1679) (8a88f0a)
    • react,vue: add TextInput color parser (f9f0e2b)
    • vue: update vulerable packages (3e15f5c)

    Features

    • android: js -> native support use js value (fddfaae)
    • android: support debug context name display (e134723)
    • devtools: support debug multiple project at the same time (8213ff6)
    • vue-demo, react-demo: remote debug, load remote bundle (1b12953)
    Source code(tar.gz)
    Source code(zip)
    hippy-react-debug.apk(12.86 MB)
    hippy-vue-debug.apk(12.92 MB)
  • 2.13.3(Mar 9, 2022)

  • 2.12.5(Mar 9, 2022)

Humans is designed for mobile and desktop for human users, To help developer to build UI quickly

Humans is designed for mobile and desktop for human users. And it is vue-based implementation. To help developer to build UI quickly.

freshes 14 Aug 9, 2021
Customization-first, performance-oriented and elegant UI framework for eCommerce (and not only) based on Vue.js and Google Retail UX Playbook.

Storefront UI Current status: Stable beta! Customization-first, performance-oriented and elegant UI framework for eCommerce (and not only) based on Vu

Vue Storefront 2k Dec 30, 2022
Use EasyVueUI ui components to build web page easily (vue3 project)

EasyVueUI Use EasyVueUI ui components to build web page easily (vue3 project) This template should help get you started developing with Vue 3 in Vite.

null 4 Sep 7, 2022
🎉 A high quality component library built on Vue.js 2.0

dao-style A high quality component library built on Vue.js. English | 简体中文 Docs latest Who's using dao-style DaoCloud DaoVoice If you are also using d

DaoCloud.io 116 Aug 31, 2022
Vue3 ready components library built with love and care designed to integrate beautifully with Bulma CSS

Vue3-ui Vue3 ready components library built with love and care designed to integrate beautifully with Bulma CSS Documentation The full documentation f

null 50 Dec 7, 2022
Modern UI Library that is beautifully designed and ready to use.

Jenika-UI Modern UI Library that is beautifully designed and build projects on top of that. Installation Install from your favourite package managers.

Anbuselvan Rocky 3 Sep 16, 2022
Vue.js components implementation of Fundamental Library Styles guidelines. The library is aiming to provide a Vue.js implementation of the components designed in Fundamental Library Styles.

Fundamental Vue Description The fundamental-vue library is a set of Vue.js components built using Fundamental Library Styles. Fundamental Library for

SAP 188 Jan 1, 2023
Inkline is the customizable Vue.js UI/UX Library designed for creating flawless responsive websites.

Inkline Inkline is the customizable Vue.js UI/UX Library designed for creating flawless responsive websites. Inkline is written and maintained by @ale

Inkline 1.1k Jan 2, 2023
Inkline is the customizable Vue.js UI/UX Library designed for creating flawless responsive websites.

Inkline Inkline is the customizable Vue.js UI/UX Library designed for creating flawless responsive websites. Inkline is written and maintained by @ale

Inkline 1.1k Dec 30, 2022
A set of completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.

Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.

Tailwind Labs 18.4k Jan 7, 2023
⚡️ Build scalable and accessible Vue.js applications with ease.

Build scalable and accessible Vue.js applications with ease. @chakra-ui/vue gives you a set of accessible and composable Vue components that you can u

Chakra UI 1.7k Jan 6, 2023
Tailwind CSS UI components build for Vue.js / Nuxt.js

mijin Tailwind CSS UI components build for Vue.js 2.x / Nuxt.js 2.x ?? Documentation Features ?? Component style relying uniquely on Tailwind CSS pres

Léonard Lecouey 181 Dec 30, 2022
Build material design interfaces in record time... without stress for devs... 🍺💛

Beercss Build material design interfaces in record time... ...without stress for devs ?? ?? Cheers, www.beercss.com Why? It's based on latest material

beercss 359 Jan 3, 2023
:diamonds: A modular and customizable UI library based on Material Design and Vue

BalmUI Next Generation Material UI for Vue.js Introduction BalmUI is a modular and customizable Material Design UI library for Vue.js. ?? NOW, balm-ui

BalmJS 428 Jan 4, 2023
BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.

With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive impl

BootstrapVue 14.2k Dec 31, 2022
🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜

Ant Design Vue An enterprise-class UI components based on Ant Design and Vue. English | 简体中文 Features An enterprise-class UI design system for desktop

vueComponent 17.6k Jan 4, 2023
🌟Shards Vue is a free, beautiful and modern Vue.js UI kit based on Shards.

Shards Vue is a free, beautiful and modern Vue.js UI kit based on Shards. Documentation & Demo • Official Page Getting Started Getting started with Sh

DesignRevision 396 Dec 16, 2022
Fast, Responsive, Multi Language, Both Direction Support and Configurable UI Framework based on Vue.js.

Framevuerk Fast, Responsive, Without Dependencies, Both Direction Support and Configurable UI Framework based on Vue.js. Setup First of all, you shoul

null 267 Nov 14, 2022