Android 脚本设计之 SL4A
SL4A的全称为Scripting Layer for Android, 顾名思义就是Android的脚本架构层,它的目的就是可以用熟知的脚本开发语言来开发Android应用程序。其工作原理基于RPC远程调用,通过本地的脚本解析器和远端的原生态Android Server层的APK进行信息交互,即实现一个远程代理,把本地脚本的函数调用通过json格式的封装,传递给远程原生态Server APK进行实际的android系统函数呼叫,最后将操作的执行结果反馈给本地脚本解析器,然后再在终端显示出运行结果。
SL4A适用场景
- RAD programming,即 rapid application development,快速原型开发,进行工程项目的可行性分析
- 编写测试脚本,通常代码量都比较小,可方便实现
- 开发工具软件包,来实现一些快捷的功能
http://www.pythoncentral.io/python-for-android-the-scripting-layer-sl4a/
The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.
It's is really easy to install and it works on any stock Android device, so you don't need to be root or anything like that.
Currently, the Scripting Layer supports Python, Perl, Ruby, Lua, BeanShell, JavaScript and Tcl. It also provides access to the Android system shell, which is actually just a minimal Linux shell.
You can find out more about the SL4A project from their website.
Why Android's SL4A is Different
There are a couple of other options for running Python on Android, and some are very good, but none offer the flexibility and features of the Scripting Layer. The alternatives really focus on enabling you to create and package a native app using some otherwise unsupported language, and some do that really well. For example, with Kivy, you can create an app in Python that'll run across many popular operating systems, desktop and smartphone, including Android. However because it's multi-platform, you don't have any way of directly accessing the Android API, so you can't use many of the features that make smartphones so interesting.
SL4A was designed around the Android OS: It requires Android to be useful, but allows much closer integration with the operating system.
With SL4A, you can still package your apps, and you can publish them to app stores like Play if you like, but it's just an option. One advantage to having packaging as an option, rather than as a purpose, is that most Python scripts, in practice, are not actually published through app stores anyway. They're meant to be used as regular Python programs. You'll normally just want to write a bit of code, save it, then run it, and keep iterating. Having to keep building the app is just tedious.
With the Scripting Layer, you can start hacking away like you would on any other system, just editing and executing files.
This series focuses on Python, and Python is the most popular and well supported language on SL4A, but the other languages have features which can be really useful. For example, BeanShell, which is a very high level language that compiles to Java, has the ability to side-step the Scripting Layer API and access the Android Java API directly. The Scripting Layer's Ruby and JavaScript interpreters, JRuby and Rhino, also run on the JVM, so these languages can do this too. It's nice to have an environment with these kinds of features available.
The Plunge: Getting Things Set Up
SL4A is really easy to install. The application is distributed as an APK, the standard format for Android apps, so it can be installed in the same way. However, before installing apps from 'unknown sources', you need to allow that on your device. If you haven't already, open your device's main Settings menu, open the Security menu, then "allow installation of non-Market apps" by checking the Unknown Sources option. Now you're ready to install the Scripting Layer.
The Scripting Layer (SL4A)
If you go to the SL4A project's home page, you can download a copy of the Scripting Layer APK to your device by just scanning the barcode on that page and confirming the download when prompted. If you don't have a barcode scanner on your device, there's always a bunch of gratis scanners available from any app store.
Once you've downloaded the APK, you should be able to install it from directly within your device's notifications panel, where the download will appear. You device may differ slightly, but it will be obvious how you install the APK, as long as you've enabled installation from unknown sources.
Once you've installed the Scripting Layer, you'll be able to open it, create and edit little shell scripts with the built-in editor and run them. It very easy to get started.
Whenever you first open SL4A, you'll see the contents of your scripts directory, which lives at/sdcard/sl4a/scripts
. This is where you'll normally put your own scripts for easy access. You can create directories in here to help keep things sane if you want to build more complex applications, or just to organise simple scripts if you have a lot of them.
The SL4A Interpreters
SL4A only includes the shell as standard, but installing other interpreters is easy to do from within the app. If you open SL4A, then hit your devices main menu button, and the SL4A menu will pop up. If you press View, you'll see a menu with three options, Interpreters, Triggers and Logcat. Selecting Interpreters will move your view from the scripts directory to the interpreters list. Hitting the device's main menu button in this view will open a new menu with an option to add interpreters. From here you can select which interpreter you want to install, which will open your browser and download the APK for that interpreter. Install this APK in the same way that you installed SL4A.
Each interpreter exists as a separate Android app and will appear as an app in the device's menus. The Python Interpreter's app is called Python for Android, or just PY4A. Each interpreter's app has, at least, the ability to install or uninstall the interpreter. PY4A can also manage .egg files, which gives you an easy way to install Python C modules on the Scripting Layer, where you can otherwise only use pure Python. Any Python C modules must first be cross-compiled for ARM cores, which is an involved process, but some useful packages are available pre-compiled from the Python for Android project pages, along with instructions on how to compile others.
If you haven't already, open the Python for Android app and hit the Install button. Your Scripting Layer now supports Python.
The Python Library on SL4A
If you'd like to add new modules to extend the device's Python library, you have to do things a bit differently to what you're probably used to. Without root, you can't directly modify the system files, so the Scripting Layer has its own directory for packages that lives on your sdcard at/sdcard/com.googlecode.pythonforandroid/extras/python
. You can always import from this directory and similar directories exist for each language you have installed.
The Python extras directory comes preloaded with a ton of useful modules, and you can chuck any pure Python modules you like in here.
If you add a module to the extras directory, make sure it's the importable Python module itself. When you grab a library from a repository, it'll normally be structured so that the app's root directory contains a bunch of stuff like READMEs, docs, tests and setup files, as well as the actual module you need, which may be a file or a directory. Remember, it must be pure Python and you will have to resolve any dependencies.
Note: If you don't have a decent file browser on your device, grab one immediately. I normally use ES File Explorer which is free on Play. If you want to get seriously into hacking Androids, it's a good idea to install the Android SDK on a dev box sooner rather than later too. It includes tools that make light work of some common tasks. It's a fairly complex bit of kit, but guides for each OS are readily available online, and you'll need it to package apps.
Android's SL4A Hello World: Your First Script and the API
You have a bunch of example scripts installed automatically in the scripts directory whenever you add a new interpreter. These are a good place to start looking for code examples, and you can safely delete them once you're done.
Using SL4A in Python is really simple. Most scripts start with the following two lines:
......
Android 脚本设计之 SL4A的更多相关文章
- 详解 “Android UI”设计官方教程
我们曾经给大家一个<MeeGo移动终端设备开发UI设计基础教程>,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Andr ...
- Robot Framework测试框架用例脚本设计方法
Robot Framework介绍 Robot Framework是一个通用的关键字驱动自动化测试框架.测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储.通过测试库中实现的关键字驱动 ...
- (转载)Android UI设计之AlertDialog弹窗控件
Android UI设计之AlertDialog弹窗控件 作者:qq_27630169 字体:[增加 减小] 类型:转载 时间:2016-08-18我要评论 这篇文章主要为大家详细介绍了Android ...
- android 界面设计基本知识Ⅲ
本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...
- 安卓app设计规范整理和Android APP设计篇(转)
随着安卓智能手机不停的更新换代.安卓手机系统越来越完美,屏幕尺寸也越来越大啦!比如最近小米的miui 6的发布和魅族手机系统的更新等等. 以小米MIUI6的安卓手机来说,MIUI6进行了全新设计,坚持 ...
- Android动画设计源码地址
Android动画设计源码地址 http://blog.csdn.net/shanghaibao123/article/details/45223825
- LoadRunner脚本设计、场景设计和结果分析
本次笔记主要记录LoadRunner脚本设计.场景设计和结果分析 1. 脚本设计 录制模式 手工模式:插入步骤.手动编写 1.1 脚本增强: ...
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
[Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...
- Eclipse+Selenium自动化测试脚本设计V1.0
Eclipse+Selenium自动化测试脚本设计V1.0 http://www.docin.com/p-803032251.html
随机推荐
- Bootstrap FileInput 多图上传插件 文档属性说明
Bootstrap FileInput 多图上传插件 原文链接:http://blog.csdn.net/misterwho/article/details/72886248?utm_source ...
- python进阶学习之匿名函数lambda
定义: lambda 参数列表:return(表达式) 匿名函数的表达式,只允许有一个. 匿名函数一般用于较简单的情况. 实例1: 实例2,配合高阶函数filter()使用: filter()函数是 ...
- 使用html+css+js实现计算器
使用html+css+js实现计算器,开启你的计算之旅吧 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html lang="en"> ...
- DevExpress CxGrid 隐藏 Drag a column header to group by that column
- Centos简介
Centos作为主流的一种Linux操作系统,以后项目中,比如后期Redis,以及部署一些项目,会把Centos作为服务器操作系统,我们选用Centos,主要是免费,以及稳定. Centos详细介绍, ...
- xcode7 调用相册权限无提示
1) 打开工程的Info.pilst: 2) 把 Bundle name 和 Bundle display name 的 value值 ,改成跟项目app名一致: 这样系统才能正确地接收到调用请求
- php单双引号嵌套解决方案
代码如下: <?php $path = "./"; function show_files($path){ //下面是单双引号嵌套解决方案 //echo "< ...
- Android Studio 升级为3.1 踩到的坑
原文:https://blog.csdn.net/xiariluoxue/article/details/80050700 AndroidStudio.gradle.buildToolsVersion ...
- 虚拟机zookeeper和hbase集群搭建
集群zookeeper dataDir=/usr/local/zookeeper/dataDir dataLogDir=/usr/local/zookeeper/dataLogDir # the po ...
- ajax异步请求模式
什么是异步请求 我们知道,在同步请求模型中,浏览器是直接向服务器发送请求,并直接接收.处理服务器响应的数据的.这就导致了浏览器发送完一个请求后,就只能干等着服务器那边处理请求,响应请求,在这期间其它事 ...