android: run the React packager when running from AS
When running the app from Android Studio the React packager is not automatically started. In vanilla RN projects this is done by the "react-native run-android" command, but often times it is desired to run from Android Studio. This fixes that by starting the packager from Gradle.
This commit is contained in:
parent
c91880859b
commit
e32336b96f
|
@ -116,6 +116,41 @@ gradle.projectsEvaluated {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Run React packager
|
||||||
|
android.applicationVariants.all { variant ->
|
||||||
|
def targetName = variant.name.capitalize()
|
||||||
|
|
||||||
|
def currentRunPackagerTask = tasks.create(
|
||||||
|
name: "run${targetName}ReactPackager",
|
||||||
|
type: Exec) {
|
||||||
|
group = "react"
|
||||||
|
description = "Run the React packager."
|
||||||
|
|
||||||
|
doFirst {
|
||||||
|
println "Starting the React packager..."
|
||||||
|
|
||||||
|
def androidRoot = file("${projectDir}/../")
|
||||||
|
|
||||||
|
// Set up the call to the script
|
||||||
|
workingDir androidRoot
|
||||||
|
|
||||||
|
// Run the packager
|
||||||
|
commandLine("scripts/run-packager.sh")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up dev mode
|
||||||
|
def devEnabled = !targetName.toLowerCase().contains("release")
|
||||||
|
|
||||||
|
// Only enable for dev builds
|
||||||
|
enabled devEnabled
|
||||||
|
}
|
||||||
|
|
||||||
|
def packageTask = variant.packageApplicationProvider.get()
|
||||||
|
|
||||||
|
packageTask.dependsOn(currentRunPackagerTask)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (googleServicesEnabled) {
|
if (googleServicesEnabled) {
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script is executed bt Gradle to start the React packager for Debug
|
||||||
|
# targets.
|
||||||
|
|
||||||
|
THIS_DIR=$(cd -P "$(dirname "$(readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}")")" && pwd)
|
||||||
|
|
||||||
|
export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
|
||||||
|
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${THIS_DIR}/../../node_modules/react-native/scripts/.packager.env"
|
||||||
|
|
||||||
|
if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
|
||||||
|
if ! curl -s "http://localhost:${RCT_METRO_PORT}/status" | grep -q "packager-status:running" ; then
|
||||||
|
echo "Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
CMD="${THIS_DIR}/../../node_modules/react-native/scripts/launchPackager.command"
|
||||||
|
if [[ `uname` == "Darwin" ]]; then
|
||||||
|
open -g "${CMD}" || echo "Can't start packager automatically"
|
||||||
|
else
|
||||||
|
xdg-open "${CMD}" || echo "Can't start packager automatically"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue