| Scripting Layer For Android |
| ============================= |
| |
| ### Introduction |
| Originally authored by Damon Kohler, Scripting Layer for Android, SL4A, is an automation toolset |
| for calling Android APIs in a platform-independent manner. It supports both remote automation via |
| ADB as well as execution of scripts from on-device via a series of lightweight translation layers. |
| |
| ### Build Instructions |
| Due to its inclusion in AOSP as a privileged app, building SL4A requires a system build. |
| |
| For the initial build of Android: |
| |
| cd <ANDROID_SOURCE_ROOT> |
| source build/envsetup.sh |
| lunch aosp_<TARGET> |
| make [-j15] |
| |
| *where `<ANDROID_SOURCE_ROOT>` is the root directory of the android tree and `<TARGET>` is the lunch |
| target name* |
| |
| Then Build SL4A: |
| |
| cd <ANDROID_SOURCE_ROOT>/external/sl4a |
| mm [-j15] |
| |
| ### Adding SL4A Builds to Android Builds by Default |
| 1) If you are not using a custom buildspec, create one as follows: |
| |
| cp <ANDROID_SOURCE_ROOT>/build/buildspec.mk.default <ANDROID_SOURCE_ROOT>/buildspec.mk |
| |
| 2) Modify the buildspec to build SL4A as a custom module by editing |
| the line '#CUSTOM_MODULES:=' to 'CUSTOM_MODULES:=sl4a': |
| |
| sed -i 's/#CUSTOM_MODULES:=/CUSTOM_MODULES:=sl4a/' <ANDROID_SOURCE_ROOT>/buildspec.mk |
| |
| ### Install Instructions |
| Run the following command: |
| |
| adb install -r <ANDROID_SOURCE_ROOT>/out/target/product/<TARGET>/testcases/sl4a/arm64/sl4a.apk |
| |
| ### Run Instructions |
| a) SL4A may be launched from Android as a normal App; or |
| b) To enable RPC access from the command prompt: |
| |
| adb forward tcp:<HOST_PORT_NUM> tcp:<DEVICE_PORT_NUM> |
| adb shell "am start -a com.googlecode.android_scripting.action.LAUNCH_SERVER \ |
| --ei com.googlecode.android_scripting.extra.USE_SERVICE_PORT <DEVICE_PORT_NUM> \ |
| com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher" |
| *where `<HOST_PORT_NUM>` and `<DEVICE_PORT_NUM>` are the tcp ports on the host computer and device.* |
| |
| ### Generate the API Documentation |
| From SL4A source directory run this command: |
| |
| python Docs/generate_api_reference_md.py |
| |
| In the Docs directory there should now be an ApiReference.md file that |
| contains which RPC functions are available in SL4A as well as documentation |
| for the RPC functions. |
| |