https://github.com/getsentry/launchpad
https://github.com/getsentry/launchpad
tag-production
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/getsentry/launchpad
- Owner: getsentry
- License: other
- Created: 2025-06-05T00:27:41.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-08-04T21:45:19.000Z (2 months ago)
- Last Synced: 2025-08-04T21:46:19.579Z (2 months ago)
- Topics: tag-production
- Language: Python
- Size: 39.2 MB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Launchpad
A microservice for analyzing iOS and Android apps.
[](https://codecov.io/gh/getsentry/launchpad)
## Installation
### Development Setup
```bash
git clone https://github.com/getsentry/launchpad.git
cd launchpad
devenv sync
```If you don't have devenv installed, [follow these instructions](https://github.com/getsentry/devenv#install).
### Using devservices
[devservices](https://github.com/getsentry/devservices) provides shared Kafka infrastructure used by multiple Sentry services:
```bash
# Start shared dependencies (Kafka)
devservices up# In another terminal, start the service
launchpad serve# Or run integration tests
make test-service-integration# Stop shared dependencies
devservices down
```## Usage
### Analyze an Android App
```bash
# Analyze an apk with a custom output location
```### Testing Kafka Integration
- `GET /health` - Basic health check
- `GET /ready` - Readiness check### Testing Kafka Integration
```bash
# Send a test message to Kafka
make test-kafka-message# Send multiple test messages
make test-kafka-multiple
```### CLI Analysis (Development)
```bash
# Direct iOS analysis
launchpad size path/to/app.xcarchive.zip# Analyze an APK, AAB or Zip containing a single APK or AAB
launchpad size path/to/app.apk
launchpad size path/to/app.aab
launchpad size path/to/zipped_aab.zip# Skip time-consuming analysis for faster results
launchpad size path/to/app.xcarchive.zip --skip-swift-metadata --skip-symbols# Custom output location
launchpad size path/to/app.xcarchive.zip -o my-report.json
launchpad size app.apk -o detailed-report.json
```### Usage
```
$ launchpad size --help
Usage: launchpad size [OPTIONS] INPUT_PATHAnalyze provided artifact and generate a size report.
Options:
-o, --output FILENAME Output path for the analysis. [default: -]
-v, --verbose Enable verbose logging output.
-q, --quiet Suppress all output except errors.
--format [json|table] Output format for results. [default: json]
--working-dir PATH Working directory for temporary files (default:
system temp).
--skip-swift-metadata Skip Swift metadata parsing for faster analysis.
--skip-symbols Skip symbol extraction and analysis.
--skip-component-analysis Skip detailed binary component analysis for
faster processing.
--skip-treemap Skip treemap generation for hierarchical size
analysis.
--help Show this message and exit.
```## Development
### Service Development
```bash
# Development with shared infrastructure
devservices up # Start Kafka via devservices
launchpad serve
```### Testing
```bash
# All tests (unit + integration)
make test# Unit tests only
make test-unit# Integration tests only
make test-integration# Integration test with devservices
make test-service-integration
```### Code Quality
```bash
# Run all quality checks (check-format + check-lint + check-types)
make check# Autofix as many checks as possible.
make fix# Full CI pipeline
make ci
```## License
See [License](./LICENSE) for information about Sentry's licensing.
This project also uses compiled binaries for `strip` and `ld`. The source code of these is available at [https://github.com/tpoechtrager/cctools-port](https://github.com/tpoechtrager/cctools-port) and falls under the Apple Public Source License Version 2.0.
This project uses FFmpeg for audio and video processing. FFmpeg is licensed under the LGPL v2.1+ license. We do not distribute or modify FFmpeg; it is installed as a system dependency via package managers. For more information about FFmpeg licensing, see [https://ffmpeg.org/legal.html](https://ffmpeg.org/legal.html).