Necesitan jailbreak y iOS 5,no lo he probado en iOS 4 o 3 pero creo que también funciona :D
Solo les tengo malas noticias,este lenguaje usado en iOS esta dedicado al scripting,ya que no esta(no he encontrado) UICaboodle para perl y crear interfaces graficas basadas en UIApliction :(.
Osea que solo lo podremos usar en scripts como es el caso de ruby,no como python que si incluye UICaboodle por ejemplo esta es la app de python que se instala con python(hello word) y lo que hace es importar los contactos y mostralos en GUI:
# Special thanks goes to Dave Arter (dave@minus-zero.org)
# for actually writing most of this sample application!!
# While I managed to get PyObjC working, I didn't actually
# know any Python to go with it ;P. - Jay Freeman (saurik)
import sys
import objc
from _uicaboodle import UIApplicationMain
from objc import YES, NO, NULL
from sqlite3 import dbapi2 as sqlite
objc.loadBundle("UIKit", globals(), "/System/Library/Frameworks/UIKit.framework")
class PYApplication(UIApplication):
def getName(self, contact):
name = contact["first"]
if contact["last"] is not None:
name += " " + contact["last"]
return name
@objc.signature("i@:@")
def numberOfSectionsInSectionList_(self, list):
return len(self.sections_)
@objc.signature("@@:@i")
def sectionList_titleForSection_(self, list, section):
return self.sections_[section]["title"]
@objc.signature("i@:@i")
def sectionList_rowForSection_(self, list, section):
return self.sections_[section]["row"]
@objc.signature("i@:@")
def numberOfRowsInTable_(self, table):
return len(self.contacts_)
@objc.signature("@@:@i@@")
def table_cellForRow_column_reusing_(self, table, row, col, reusing):
contact = self.contacts_[row]
if reusing is not None:
cell = reusing
else:
cell = UIImageAndTextTableCell.alloc().init()
cell.setTitle_(self.getName(contact))
return cell
@objc.signature("c@:@i")
def table_canSelectRow_(self, table, row):
return NO
@objc.signature("v@:@")
def applicationDidFinishLaunching_(self, unused):
self.contacts_ = []
self.sections_ = []
db = sqlite.connect(self.userHomeDirectory() + "/Library/AddressBook/AddressBook.sqlitedb")
cursor = db.cursor()
cursor.execute("select first, last from ABPerson where first is not null order by first")
for first, last in cursor.fetchall():
self.contacts_.append({"first": first, "last": last})
cursor.close()
db.close()
outer = UIHardware.fullScreenApplicationContentRect()
self.window = UIWindow.alloc().initWithFrame_(outer)
self.window.orderFront_(self)
self.window.makeKey_(self)
self.window.setHidden_(NO)
inner = self.window.bounds()
navsize = UINavigationBar.defaultSize()
navrect = ((0, 0), (inner[1][0], navsize[1]))
self.view = UIView.alloc().initWithFrame_(self.window.bounds())
self.window.setContentView_(self.view)
self.navbar = UINavigationBar.alloc().initWithFrame_(navrect);
self.view.addSubview_(self.navbar)
self.navbar.setBarStyle_(1)
navitem = UINavigationItem.alloc().initWithTitle_("Contact List")
self.navbar.pushNavigationItem_(navitem)
i = 0
letter = u""
for contact in self.contacts_:
name = self.getName(contact)
now = unicode(name[0])
if letter != now:
letter = now
self.sections_.append({"row": i, "title": now})
i += 1
lower = ((0, navsize[1]), (inner[1][0], inner[1][1] - navsize[1]));
self.list = UISectionList.alloc().initWithFrame_(lower)
self.view.addSubview_(self.list)
col = UITableColumn.alloc().initWithTitle_identifier_width_("Name", "name", 320)
table = self.list.table();
table.setSeparatorStyle_(1)
table.addTableColumn_(col)
table.setReusesTableCells_(YES)
self.list.setDataSource_(self)
self.list.reloadData()
UIApplicationMain(sys.argv, PYApplication)
Y se ejecuta con un script en bash:
#!/bin/bash
exec "$(dirname "$0")"/Python "$(dirname "$0")"/HelloPython.py
Así se podría hacer en Perl,pero no hay nada de documentación y tampoco encuentro UICaboodle para perl,para por lo menos traducir las aplicaciones de Python a Perl y crear algunas apps sencillas para que sirvan de ejemplo.
Pero bueno,de todas formas en cydia nos dan muchos módulos muchos para usarlos en scripting desde terminal,que se encuentran en CPAN.
Tutorial
1.Necesitamos ya tener el jailbreak pero también necesitamos instalar de cydia:
openssh
APT 0.7 HTTPS Method
wget
sbsettings y el toogle de ssh
Y por ultimo Terminal
Solo entran a cydia,los buscan y instalan
2.Ahora en nuestro sistema de escrtitorio necesitamos un cliente ssh,en mi caso Archlinux instale openssh
sudo pacman -S openssh
Y nos conectamos por ssh
Encendemos el ssh del iphone y en la Pc/Mac
ssh root@ip_del_iphone
La ip del iphone esta en mismo sbsettings
3.Descargamos el .pub
wget http://coredev.nl/cydia/coredev.pub
Lo añadimos
apt-key add coredev.pub
Usamos un pipe para mandarlo a sources
echo 'deb http://coredev.nl/cydia iphone main' > /etc/apt/sources.list.d/coredev.nl.list
Recargamos los repos
apt-get update
4.Y instalamos
No probé
apt-get install perl
Pero puede que funcione ya que así instale python
Pero para mas seguro:
Salimos del ssh
exit
Entramos a Cydia >> Manejar >> Fuentes y estará una repo con el camello :D
Entramos y buscamos Perl
Instalamos
Hacemos un respring.
5.Creamos Hola Mundo
Abrimos terminal y escribimos:
echo '#!/usr/bin/local/perl' > hola.pl && echo 'print "Hola Mundo!!!\n"' >> hola.pl
Pueden por ssh,o por con un editor como el de iFile
Y listo
Eso es todo si quieren módulos busquen en la repo hay muchos :D
Referencias:
No hay comentarios.:
Publicar un comentario
Los comentarios serán revisados antes de ser publicados.