Skip to content

HapticX/happyx-native

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HappyX Native

macro-oriented web-framework compiles to native

API Reference

Install

nimble install happyx-native

or via GitHub:

nimble install https://github.com/HapticX/happyx-native

Features

  • Support for Chrome/Yandex/Edge browsers;
  • Support for Android;

Project Initialization

To init project you should use this command:

hpx-native init --name ProjectName

This command will automatically initialize your project.

It also fetches ANDROID_SDK_ROOT from environment (need for android compilation).

Building

To build your project you should move into project folder

cd ProjectName

and just build it!

hpx-native build

This automatically builds your project for your OS as target platform.

Cross-Compilation

To compile for other OS use

hpx-native build --target linux

Possible values:

OS value aliases
Windows windows win
Linux linux unix
MacOS macosx mac, macos
Android android -

Android compilation

You should have:

  • Android Studio with SDK and NDK;
  • Gradle >= 7.5;
  • Nim >= 2.0.0;

By default hpx-native build --target android supports all android architectures. If you want to disable some architectures then use:

hpx-native build --target android --no-x86_64

Possible architectures

Architecture Disable Argument
x86 --no-x86
x86_64 --no-x86_64
armeabi-v7a --no-armeabi-v7a
arm64-v8a --no-arm64-v8a

If you doesn't want to use gradle building then use

hpx-native build --target android --no-gradle

This command will build only .so libraries.

Building Assets

HappyX Native supports "building" assets - all resources from app directory (by default /assets) and all subdirectories are "sewn" into executable file.

This way you can distribute your application over the network with only one executable file.

This option can be disabled via --no-build-assets

Browsers

If you want choose other browser instead of default - use these flags:

browser flag
Default browser uses by default
Chrome -d:chrome
Edge -d:edge
Yandex -d:yandex