Delphi automatically installs and runs your app for you, but sometimes it is nice to do manually from the command-line. Here are the commands you need. These all assume adb (Android Debug Bridge) is on your system path and you only have one Android device (or emulator) attached. They should work on both Mac and Windows.
See the end for notes on multiple devices or if you are running both an emulator and device.
First to install your app:
adb install path\ProjectName.apk
In this example path\ProjectName.apk is the full relative path to the apk. The apk usually has the same name as the project. If your apk is already installed, then use the following command to “reinstall” it, leaving the data intact:
adb install -r path\ProjectName.apk
The great thing about the -r is it works even if it wasn’t already installed.
Now if you want to uninstall your apk you can do that too:
adb shell pm uninstall -k com.embarcadero.ProjectName
Again, com.embarcadero.ProjectName is the default name of the package. If you changed it under Project Options -> Version Info -> Package, then use that value instead. BTW, the pm in there is the Android Package Manager.
One note, when Delphi deploys your app to run it, it performs an uninstall first. This results in all the data being cleaned out, which can be useful during development to be sure you don’t leave anything behind from the previous run. When a user updates an app from the App store, or installs it via most any other means, then it performs a reinstall, which leaves the data intact.
Now if you want to run it, things get a little more interesting. Now we use the Android Activity Manager (AM).
adb shell am start -n com.embarcadero.ProjectName/com.embarcadero.firemonkey.FMXNativeActivity
There are two parts to this. Before the slash is the package name, just like for uninstalling it. After the slash is the name of the Main Activity, which unless you’ve edited your AndroidManifest.template.xml (and some other fundamentals of your app) is always com.embarcadero.firemonkey.FMXNativeActivity. If you are trying to start an app written with another tool, then consult the AndroidManifest, but it is common for most tools to use MainActivity, so you can launch it like:
adb shell am start -n com.other.ProjectName/.MainActivity
If you want to stop your app after it is running, you just need the name of the package and the following:
adb shell am force-stop com.embarcadero.ProjectName
This can be useful to test what your app behaves like from a fresh restart, vs. just returning from the background.
The Android adb tool is very powerful. Most of these are using the shell command which actually allow you to pass commands to the modified Linux shell that runs inside Android. You can actually use “adb shell” to open a shell prompt and navigate your device like a remote machine.
If you have both an emulator running and a device attached then you can use the switch -d like
adb -d shell
and it directs it to the only device. If you use -e then it goes to the emulator.
When you have multiple devices then use -s and the device ID which can be obtained via the adb devices command.
There are so many other useful things you can do with adb. Check out the documentation.
One reply on “Installing and Running Android Apps From Command-Line”
how can I do from my application which is running on android and written by delphi?