分享

纯技术,使用simple语言开发android程序

 quasiceo 2014-02-02
本帖最后由 aslamic 于 2010-4-10 15:06 编辑 6 o1 B$ z4 m6 t2 s

本菜鸟技术有限,特开此贴和大家共同讨论。1 R- H% h  ^5 D8 W, q4 E
首先,simple是基于basic语言的,想要用simple来开发,最好具备点vb的基础,qb太老了,很多地方会让你感觉头大。) I# M9 B' o: P" P6 l; L3 i% T1 l, Y* t
————————————————————————————————————————————————————————
开发环境篇/ W7 |# |5 W0 i1 E
————————————————————————————————————————————————————————
首先,从code.google.com/p/simple下下载windows版的simple和程序示例,开别人的代码是学习的最好途径。  M/ J; j( E* C0 q: K9 U, R: y
安装JDK1.6或以上,下载androidsdk1.5或以上,然后打开我的电脑,属性,高级,环境变量,添加如下环境变量:+ U/ @; j7 V$ e$ Y% e/ ^) R+ ~6 z! W
JAVA_HOME ——JDK或者JRE的安装目录1 W9 @; t% t9 T' Z- p
ANDROID_HOME ——androidSDK的安装目录
SIMPLE_HOME ——保存simple的目录
完了以后就可以开始创建工程了。. y& o3 c- t- p/ R" l+ A
————————————————————————————————————————————————————————1 v4 p7 P6 K; X+ T- A
工程创建篇
————————————————————————————————————————————————————————  L8 Y2 \7 I1 d
打开cmd,通过cd命令进入你想要保存工程的地方,以下按照创建Helloworld为例。) _7 G  d! p- E
newsimpleproject com.aslamic.Helloworld
程序会自动创建Helloworld文件夹,包含asserts、simpleproject、src文件夹,熟悉汉化的友友都会很熟悉这些东西。
今天主要讨论src下的文件,进去之后会看到Helloworld.simple2 f! I: a& A5 z/ ?6 a4 p* q
————————————————————————————————————————————————————————
实战篇
————————————————————————————————————————————————————————
以下是今天的样本:
1.PNG 2.PNG
可以看到界面很粗糙,毕竟,simple不是主流的android开发途径。
使用utf-8编码的源文件,没有办法正常支持中文,所以没有使用中文来写这个程序,不过每句英文前面都加上了TRANS_标记,后面会说明用途。% P5 F! W4 T6 i. w8 p; o
simple的教程很少,用的人也不多,至今没有看到像样的解说,所以一下内容多为自己摸索,限于本人水平,无法保证正确性,所以请轻拍。+ Z( H* A7 R0 C# Z- d
simple写的程序用户界面没有办法使用androiddraw这样的软件来辅助设计,全部靠代码,所以很不方便,基本的结构是:, U3 ~  T* i3 J5 y% h
form包含其余框架元素,如panel等,panel可以包含其他的元素,同样form也可以直接包含其他元素,元素可以在$Properties里面定义,也可以在程序运行中定义,今天的helloworld包括了两种方式。) w! M# @# a% }8 ^9 R6 ~
4 P8 Q# Z0 K1 `: @' G
废话不多说,从源码上向各位解说:
注定会让各位看得很纠结。
, V: F+ M; J0 X- [: a
Dim x As Integer 我就直接在基础上进行解说了,不是注释的形式,源代码从后面下载就可以了,不用复制,挑一些不好明白的东西给大家说说
Dim y As Integer( O2 H9 q* O$ L9 J2 |5 v4 G; \' o; i
Event Helloworld.Initialize() helloworld是一个窗体,窗体(form)的初始化时间,就是程序打开的时候- {0 c! I$ A+ ]1 [
y=y+1   这句话是用来避免重复添加menuitem的,不晓得为什么,我的程序会有两个quit,可能是sdk是1.6但是用的机器是1.5的关系吧
Dim Label1 As Label      这里开始在运行的时候创建标签label7 {/ v4 j# ^  m8 [2 g$ h2 Q+ O' z5 X
Label1 = New Label On Panel1  这里定义标签的位置,表示是从属于panel1的,也可以是 new label on helloworld
Label1.Row = 3  
Label1.Column = 32 f& ~" w2 j* P& `" W
Label1.Text = "TRANS_hello world"$ V+ P( G* J7 A( q( D* K
If y = 1 Then
AddMenuItem("QUIT")      这里添加了一个菜单项,quit
End If
End Event
Event Helloworld.MenuSelected(caption As String)    这个事件是菜单选择,以菜单的caption来区分
If caption = "QUIT" Then Finish()- w& B+ z( V0 e) i5 p# Q( E* I
End Event
Event Btn1.Click()    这个事件是按钮点击" X! h% T3 ]' [( c
x = x + 1. S3 ?/ U- X8 {! w7 W) E& d
Dim Label3 As Label. i6 |" V8 e3 O* f. t) e
Label3 = New Label On Panel1( s, }& x1 O) [0 N# v4 J. g
Label3.Row = x* D, L2 j2 s9 W( j
Label3.Column = 2
Label3.BackgroundColor = Component.COLOR_RED' `- {' I1 o) O$ S
Label3.TextColor = Component.COLOR_GREEN
Label3.Text = "TRANS_you pushed me!"
End Event% I8 R* U6 X( H: Z
$Properties    从这里开始是定义程序界面,不晓得是不是我没搞好,就算是在tablelayout下,也没有办法正确地把元素放到规定的位置
$Source $Form+ t, ]: G. I% [9 I4 f
$Define Helloworld $As Form  定义的原则是包含嵌套,类似于if语句,使用$Define和$End $Define来表示一个元素的定义,里面如果包含定义,则表示从属关系,如本例使用的2 Z" g( @# o9 T8 h% _
Layout = 1                            Form和label、button的关系。& C. N8 c  L  ?5 @3 j
Layout.Orientation = 1
Title = "TRANS_hello"; Q. I7 v' Q1 \5 o+ F  \3 ?2 M
$Define Panel1 $As Panel
Layout = Component.LAYOUT_TABLE+ j+ x7 j; `1 H/ X
Layout.Columns = 24
Layout.Rows = 24& K* `) E% Z6 I& Z* A
BackgroundColor = Component.COLOR_YELLOW# u4 i4 q6 p& Z0 ?2 [" O7 {7 _$ \
Height = 3205 i1 v& h, g7 k* `
Width = 320
$Define Label2 $As Label
Row = 3
Column = 3' O3 `) D2 b7 W
BackgroundColor = Component.COLOR_BLUE7 i4 ~% J* u) E3 Q
Text = "TRANS_Hi there~") X8 N, N2 \2 [% }, D( e9 W1 Q, |
$End $Define
$Define Btn1 $As Button1 f" v, F4 z+ B" i
Column = 4
Row = 3
Text = "TRANS_PUSH ME"( l2 E( d: v" u7 Z5 `9 p& a8 M! [
$End $Define1 u# s+ c% w1 I% `4 j- o5 e$ \
$End $Define
$End $Define
$End $Properties

基本上就是这样1 M5 V/ n0 N3 U* u% Q& \: I) @: h
————————————————————————————————————————————————————————5 _  |+ z, F5 ^0 O: X# |# c
编译篇; I; c+ ]3 J' z( N
————————————————————————————————————————————————————————# ~/ n+ Q% L" G' u
写好程序以后,需要编译,所生成的文件夹下包含simpleproject文件夹,编译就要用到这个
同样在命令行,输入:% W+ P' ?; r( k( h# k( G7 L4 {
simplec Helloworld\simpleproject\project.properties7 K; _8 c  t% f
如果无误,就会编译生成apk,在build\deploy下( `" c- s; ]/ _, a2 L1 k
————————————————————————————————————————————————————————
中文化, l7 e! E7 f9 P0 O# M/ ]) H$ E
————————————————————————————————————————————————————————
还是中文比较亲切,如图:* t" B6 C7 v6 p5 h) O9 Q
3.PNG 4.PNG ; F6 B6 S) w2 r) u. V- u
这里要用到一个叫apktool的程序,汉化的友友肯定知道是什么,用apktool来反编译dex,然后通过汉化的手段来使程序中文化,比较笨,如果哪位能找到让编译器支持中文的方法可一定要分享。/ g2 U/ ^; Q5 O: @$ S5 B) ~0 V: ?
首先,将helloworld复制到apktool文件夹下,cmd到apktool的文件夹下,解包apk
apktool d Helloworld.apk hello4 ~: V+ e' ~' a0 T, z3 Q! B7 D
得到的hello文件夹里面,包含smali\com\aslamic文件夹,里面有个Helloworld.smali文件,用ue32打开,编码选择utf-8,搜索TRANS,就可以方便地找到要翻译的地方,( ]. p( r" Q+ n2 v6 i& t
如图:
3.jpg 2 V7 |$ e! l3 _2 T7 G. Z
二话不说,译之' J' A. h7 R% W* n9 N  N% A4 |6 z
然后打包
apktool b hello
在hello的dist里面可以找到文件
————————————————————————————————————————————————————1 `. }& F' h; k) ]% S, m
签名篇5 ]+ V$ O" u& ]9 I* ~
————————————————————————————————————————————————————6 _' V, |( j5 F" `- r, w% x, d6 g/ j
我对java一无所知,所以我用的签名方式可能很菜,误导了大家真是不好意思,但是确实可用。
首先生成密匙  |9 R! v; o6 D
keytool -genkey -alias android123.keystore -keyalg RSA -validity 20000 -keystore android123.keystore$ L3 s( t& Q& o6 x; e) f6 \, r5 K
按照提示完成即可,密码不建议太长,麻烦/ P) r( w) F8 B
然后完成签名2 j$ Y8 a1 Y3 @% W" i
jarsigner -verbose -keystore android123.keystore -signedjar android_signed.apk Helloworld.apk android123.keystore
输入密码的时候光标不会动,所以仔细点吧' Q  M5 p, w0 `% i: V
注意各文件的位置。+ y2 `% `$ f0 k9 Y! g1 z& V

可以安装测试了,怎么样,ni不nice?
android_signed.apk (60.24 KB, 下载次数: 47 )
Helloworld.rar (582 Bytes, 下载次数: 48 ) # T0 v) D/ u+ w8 T
simple提供了对部分硬件的访问,包括电话(仅拨打和震动),GPS,重力感应,加速度感应器等,同时用了一种我认为很囧的方式来支持文件访问,通过image可以设计出漂亮的界面,不仅仅是今天这种山寨的感觉,所以,对这个感兴趣的友友如果一起来研究的话,simple也可以做很多事情,欢迎大家邮件交流,yourdds520@163.com
7 ]4 ]* D( k0 w$ H! }2 h
官方教程:
Simple_Component_Writer_s_Guide.pdf (74.37 KB, 下载次数: 113 ) Simple_Runtime_Reference.pdf (278.27 KB, 下载次数: 113 ) Simple语法规则.pdf (519.57 KB, 下载次数: 181 )

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多