Installing inside Iran
Install the Abrova Trace SDKs and their dependencies with Iranian package mirrors, so builds keep working when the international internet is slow or cut.
The Abrova SDKs install from Abrova Center, which is inside Iran. Each SDK also needs a few common packages (for example AndroidX, OkHttp or http for Dart). Those come from the public registries, and some of them refuse Iranian addresses or stop answering when the international internet is cut. This page shows how to get them from mirrors inside Iran.
Every address on this page was checked from a server inside Iran on 27 October 2026, with the exact packages the Abrova SDKs need. The mirrors are run by other Iranian companies, not by Abrova, so their addresses can change.
| Platform | Abrova SDK | Its dependencies, inside Iran |
|---|---|---|
| Android | Abrova Center | Myket Maven mirror: Google and Maven Central packages, and the Android Gradle plugin |
| iOS | Abrova Center | None needed: the SDK has no other dependencies |
| Node.js, Next.js, CLI | Abrova Center | Runflare npm mirror |
| Flutter | Abrova Center | No mirror inside Iran: pub.dev refuses Iranian addresses (see below) |
| Laravel / PHP | Abrova Center | No mirror inside Iran: Packagist works from Iran today |
Android (Gradle)#
In settings.gradle, list the Iranian mirror before Google and Maven Central, for both plugins and libraries:
pluginManagement {
repositories {
maven { url "https://maven.myket.ir" }
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositories {
maven { url "https://center.abrova.ir/api/packages/abrova/maven" }
maven { url "https://maven.myket.ir" }
google()
mavenCentral()
}
}Gradle tries the repositories in this order, so google() and mavenCentral() are only used for a package the mirror does not have.
Gradle itself is downloaded once per version from services.gradle.org (the distributionUrl in gradle/wrapper/gradle-wrapper.properties). Keep that download on your machine, or put the file on a server you control and point distributionUrl at it.
iOS#
Nothing extra: the iOS SDK installs from Abrova Center and brings everything it needs. See iOS SDK for the Swift Package Manager and CocoaPods lines.
Node.js, Next.js and the CLI#
In the project's .npmrc, use the Iranian npm mirror for everything and Abrova Center for the Abrova packages:
registry=https://mirror-npm.runflare.com/ @abrova-trace:registry=https://center.abrova.ir/api/packages/abrova/npm/
Then install as usual (npm install, pnpm install or yarn).
Flutter#
The Abrova Flutter package comes from Abrova Center. Its dependencies (http, path_provider, device_info_plus and a few more) come from pub.dev, and pub.dev refuses Iranian addresses. We found no pub mirror inside Iran. What works:
- Run
flutter pub getonce through a connection that reaches pub.dev. The packages stay in your pub cache, and later builds work without pub.dev. - Commit
pubspec.lock, so every machine and your CI resolve the same versions from that cache. - Or set
PUB_HOSTED_URL=https://pub.flutter-io.cn(a public mirror run by the Flutter community in China). It answers from Iran, but it is outside Iran, so it stops working when the international internet is cut.
Laravel and PHP#
The Abrova package comes from Abrova Center. Its dependencies (guzzlehttp/guzzle, illuminate/*) come from Packagist, which answers from Iran today; we found no Packagist mirror inside Iran. Composer keeps what it downloads in its cache, and composer.lock pins the versions.
When the international internet is cut#
- Keeps working: Abrova Center, the Myket and Runflare mirrors, and everything already in your local caches.
- Stops: pub.dev, Packagist, CocoaPods trunk, GitHub and
services.gradle.org.
Keep your lock files (pubspec.lock, package-lock.json, composer.lock, Package.resolved, Podfile.lock) in git, so a fresh checkout needs as few downloads as possible.