Skip to content

Development

Levin Li edited this page Oct 8, 2023 · 18 revisions

Celestia is open source on all platforms. You can get the code, make modification and run it all by yourself!

Android

Only tested on Mac and Linux. Not working on Windows!

Fetch code

Clone the following repos with git in the same folder.

  1. https://github.com/celestiamobile/Celestia (Official Celestia repository with additional localization)
  2. https://github.com/CelestiaProject/CelestiaContent (Data)
  3. https://github.com/celestiamobile/AndroidCelestia (Android frontend code)
  4. https://github.com/celestiamobile/CelestiaLocalization (Localization)

Download pre-built libraries

Download built artifacts for third-party libraries from https://dev.azure.com/CelestiaProject/Celestia/_build?definitionId=7 and extract to AndroidCelestia/Celestia/src/main/cpp/dependency/android so that the path has this structure:

├── include
│   ├── angle
│   ├── breakpad
│   ├── cspice
│   ├── eigen3
│   ├── fmt
│   ├── freetype
│   ├── gettext
│   ├── icu
│   ├── jpeg
│   ├── json
│   ├── libepoxy
│   ├── libpng
│   ├── lua
│   └── meshoptimizer
└── libs
    ├── arm64-v8a
    ├── armeabi-v7a
    └── x86_64

Copy the dependencies for breakpad to AndroidCelestia/app/src/main/cpp/crash so that the path has this structure:

├── CMakeLists.txt
├── CrashHandler.cpp
├── include
│   └── breakpad
└── libs
    ├── arm64-v8a
    ├── armeabi-v7a
    └── x86_64

Install dependencies

Building on macOS:

brew install gettext gperf

Building on Linux, please use the package manager that comes with your system.

Prepare sources

Run these commands from the parent directory of the cloned repositories to ensure source files are generated properly.

sh AndroidCelestia/app/run_gperf.sh Celestia

Compile and run

Open AndroidCelestia folder in Android Studio and run it as you would for any other Android applications.

iOS / Mac Catalyst

Fetch code

Clone the following repos with git in the same folder.

  1. https://github.com/celestiamobile/Celestia (Official Celestia repository with additional localization)
  2. https://github.com/celestiamobile/CelestiaCore (Celestia shim framework for iOS/macOS)
  3. https://github.com/CelestiaProject/CelestiaContent (Data)
  4. https://github.com/celestiamobile/MobileCelestia (iOS/Mac Catalyst frontend code)
  5. https://github.com/celestiamobile/CelestiaLocalization (Localization)

Download pre-built libraries

Download built artifacts for third-party libraries from https://dev.azure.com/CelestiaProject/Celestia/_build?definitionId=7 and extract to libs/dependency/$YOUR_PLATFORM ($YOUR_PLATFORM could be catalyst/ios/iossim) so that the path has this structure:

├── include
│   ├── angle
│   ├── cspice
│   ├── eigen3
│   ├── fmt
│   ├── freetype
│   ├── gettext
│   ├── icu
│   ├── jpeg
│   ├── libepoxy
│   ├── libpng
│   ├── lua
│   └── meshoptimizer
└── libs
    ├── cspice.a
    ├── libGL.a
    ├── libfmt.a
    ├── libfreetype.a
    ├── libicudata.a
    ├── libicui18n.a
    ├── libicuuc.a
    ├── libintl.a
    ├── libjpeg.a
    ├── liblua.a
    ├── libmeshoptimizer.a
    └── libpng16.a

Install dependencies

brew install gettext gperf

Prepare sources

Run these commands from the parent directory of the cloned repositories to ensure source files are generated properly.

sh CelestiaCore/run_gperf.sh Celestia

Compile and run

Open MobileCelestia.xcworkspace in MobileCelestia folder with Xcode and run it as you would for any other iOS/Mac Catalyst applications.

macOS

macOS (AppKit) frontend is no longer supported. Please try to build for Mac Catalyst. See iOS / Mac Catalyst.

Fetch code

Clone the following repos with git in the same folder.

  1. https://github.com/celestiamobile/Celestia (Official Celestia repository with additional localization)
  2. https://github.com/celestiamobile/CelestiaCore (Celestia shim framework for iOS/macOS)
  3. https://github.com/CelestiaProject/CelestiaContent (Data)
  4. https://github.com/celestiamobile/CelestiaApp (macOS frontend code)
  5. https://github.com/celestiamobile/CelestiaLocalization (Localization)

Fetch submodules in Celestia and CelestiaCore

cd CelestiaCore
git submodule update --init

Install dependencies

brew install gettext

Compile and run

Open CelestiaApp.xcworkspace in CelestiaApp folder with Xcode and run it as you would for any other macOS applications.

Windows

Fetch code

Clone the following repos with git in the same folder.

  1. https://github.com/celestiamobile/Celestia (Official Celestia repository with additional localization)
  2. https://github.com/CelestiaProject/CelestiaContent (Data)
  3. https://github.com/celestiamobile/CelestiaUWP (Windows frontend code)
  4. https://github.com/celestiamobile/CelestiaLocalization (Localization)

Cherry-pick the ANGLE compatibility commit

cd Celestia
git cherry-pick origin/angle-main

Install dependencies

vcpkg --triplet=TRIPLET install --recurse libpng libjpeg-turbo gettext lua fmt libepoxy eigen3 freetype cspice meshoptimizer

TRIPLET can be x86-uwp, x64-uwp, arm-uwp, or arm64-uwp.

Prepare sources and resources

Run these commands from the parent directory of the cloned repositories to ensure source files and resources are generated properly.

call CelestiaUWP\CelestiaUWP\copy_general_data.bat %cd%\CelestiaUWP %cd%\CelestiaUWP\CelestiaUWP\Resources
call CelestiaUWP\CelestiaUWP\convert_po.bat %cd%\CelestiaUWP %cd%\CelestiaUWP\CelestiaUWP\Resources
call CelestiaUWP\CelestiaUWP\run_gperf.bat %cd%\CelestiaUWP

Compile and run

Open CelestiaUWP.sln in CelestiaUWP folder with Visual Studio and run it as you would for any other UWP applications.