@rebox/android
v5.0.0
Published
Set of helpers to deal with React Native applications on Android
Downloads
26
Readme
@rebox/android
Set of helpers to deal with React Native applications on Android.
Install
$ yarn add @rebox/android
Setup
macOS
brew update
brew tap homebrew/cask-versions
brew install --cask adoptopenjdk8
brew install --cask android-sdk
brew install --cask intel-haxm
export ANDROID_HOME=$(brew --prefix)/share/android-sdk
export PATH=$ANDROID_HOME/tools:$PATH
export PATH=$ANDROID_HOME/emulator:$PATH
export PATH=$ANDROID_HOME/platform-tools:$PATH
exec $SHELL -l
mkdir $HOME/.android/
touch $HOME/.android/repositories.cfg
yes | sdkmanager --licenses
sdkmanager "platform-tools" "platforms;android-29" "build-tools;29.0.3" "emulator" "extras;android;m2repository" "system-images;android-29;google_apis;x86"
API
type TLinkAndroidDependencyOptions = {
projectPath: string,
dependencyName: string
}
const linkAndroidDependency: (options: TLinkAndroidDependencyOptions) => Promise<void>
type TBuildAndroidAppDebugOptions = {
projectPath: string,
appName: string,
appId: string
}
const buildAndroidAppDebug: (options: TBuildAndroidAppDebugOptions) => Promise<void>
type TInstallAndroidAppOptions = {
appPath: string,
deviceId?: string
}
const installAndroidApp: (options: TInstallAndroidAppOptions) => Promise<void>
type TUninstallAndroidAppOptions = {
appId: string,
deviceId?: string // booted one by default
}
const uninstallAndroidApp: (options: TUninstallAndroidAppOptions) => Promise<void>
type TRunAndroidEmulatorOptions = {
portsToForward: number[],
isHeadless?: boolean // false by default
}
const runAndroidEmulator: (options: TRunAndroidEmulatorOptions) => Promise<() => void>
type TLaunchAndroidAppOptions = {
appId: string,
deviceId?: string // booted one by default
}
const launchAndroidApp: (options: TLaunchAndroidAppOptions) => Promise<void>
type TRunAndroidAppOptions = {
appName: string,
appId: string,
entryPointPath: string,
portsToForward?: number[], // additional ports to forward from host to emulator's VM
fontsDir?: string, // directory with `.ttf` or `.otf` files
dependencyNames?: string[], // installed NPM package names
isHeadless?: boolean, // false by default
logMessage?: (msg: string) => void
}
const runAndroidApp: (options: TRunAndroidAppOptions) => Promise<() => void
Usage
// App.tsx
import { FC } from 'react'
import { Svg, Circle } from 'react-native-svg'
export const App: FC<{}> = () => (
<Svg height={100} width={100} viewBox="0 0 100 100">
<Circle
cx="50"
cy="50"
r="45"
stroke="blue"
strokeWidth="2.5"
fill="green"
/>
</Svg>
)
// run.ts
import { runAndroidApp } from '@rebox/android'
await runAndroidApp({
appName: 'Test',
appId: 'org.nextools.test',
entryPointPath: './App.tsx',
dependencyNames: ['react-native-svg'],
logMessage: console.log
})