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
随机推荐
- SQL SERVER 触发器介绍
什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:upda ...
- gtk+学习笔记(五)
今天继续做的是昨天那个界面对的优化,直接贴下代码, void click_radio(GtkWidget *widget,gpointer *data) { 3 GtkWidget *dialog; ...
- 2016-2017-2 20155309南皓芯《java程序设计》第七周学习总结
教材学习内容总结 Lambda 一种匿名方法 表达式构成 括号以及括号里用逗号分隔的参数列表 仅有一个参数的可以省略括号 ->符号 花括号以及花括号里的语句 仅有一条语句时可以省略花括号,并且这 ...
- N皇后问题的实现
N皇后问题是一个经典的问题,是回溯算法的典型案例.它是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的八皇后问题延伸而来的,具体要求如下:在N*N的方格棋盘放置N个皇后,使她们彼此不相互攻击,即任意2 ...
- 动态页面技术JSP/EL/JSTL
本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...
- Centos6.5安装步骤(U盘安装)
https://blog.csdn.net/hochoy/article/details/80697454
- awk调用shell命令的两种方法:system与print
from:http://www.oklinux.cn/html/developer/shell/20070626/31550.htmlawk中使用的shell命令,有2种方法: 一.使用所以syste ...
- React + Reflux 渲染性能优化原理
作者:ManfredHu 链接:http://www.manfredhu.com/2016/11/08/23-reactRenderingPrinciple 声明:版权所有,转载请保留本段信息,否则请 ...
- 牛客练习赛3 E - 绝对半径2051
链接:https://www.nowcoder.net/acm/contest/13/E来源:牛客网 题目描述
- NCPC 2016 October 8,2016 Artwork
Problem A Artwork Problem ID: artwork Time limit: 4 seconds A template for an artwork is a white gri ...