精品中文版b4a新手指南第4章开发环境_第1页
精品中文版b4a新手指南第4章开发环境_第2页
精品中文版b4a新手指南第4章开发环境_第3页
精品中文版b4a新手指南第4章开发环境_第4页
精品中文版b4a新手指南第4章开发环境_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、新手指南最后更新:2013.05.18Copyright2011,2012,2013 AnywhereSoftwareEdition 2.5第四章 开发环境本章节由 B4A 开发群(群号 227825693 )网友刺漁()友情翻译IDE 基础开发环境英文 Theegrated Development Environmen当您运行 IDE,你会看到界面 ,如下图例如:Example: SecondProgram.b4a你可以看到四个主区域:Code area Module listSubroutine list代码编辑区域包含所有模块的名称列表在当前模块的子程序列表点击其中一个名字,直接跳到程序

2、内容Tabs功能选项页4.1 菜单和工具条4.1.1 工具条生成一个新的空项目加载一个工程保存当前工程将选中的文本到剪贴板剪切选中的文本到剪贴板在光标处粘贴剪贴板中的文本撤消上一个操作重做以前的操作激活“查找和替换功能所选的代码,具体见 4.2.6取消所选代码的向后导航向前导航增加一个书签,具体见 4.2.7取消一个书签回到以前的书签前进到下一个书签自动补齐功能 Ctrl + space 具体见 4.2.9左缩进具体见 4.2.8右缩进运行编译器编译器选项列表,当前是 debug 调试状态显示的当前操作的函数4.1.2 File 菜单New 创建一个新工程 Open Source加载工程Sav

3、e保存当前工程Export As Zip把工程保存成 zip 文件Page Setup页面设置打印PrPreview打印预览Pr Exit打印关闭B4A 最后加载的程序列表4.1.3 Edit 菜单CutCut Line Copy剪切选中的文本到剪贴板剪切当前行将选中的文本到剪贴板在光标处粘贴剪贴板中的文本撤消上一个操作重做以前的操作激活“查找和替换功能Undo Redo FindBlock Comment所选的代码,具体见取消所选代码的4.2.6BlockmentRemove All Bookmarks 去掉全部书签RemoveAll Breakpos去掉全部断点Outlining代码段展开

4、闭合控制4.1.4Project 菜单增加新的 module增加外部 module更改 module 名称删除当前的 module隐藏当前的 module给程序选择一个图标更改包的名称运行 Manifest 编辑器 不要覆盖 Manifest 文件测试编译,因为 b4a V 2.70 的新功能4.1.4.1 增加一个新的module窗体 模块类 模块 代码模块服务模块4.1.5工具菜单下面是 IDE 的选项文件夹下无效的文件工程运行 AVD 管理器配置路径更改 Tab 键缩进的长短更改字体,但是不自动换行自动保存显示提示保存时尝试自动编译4.1.5.1自动换行没有自动换行的时候,这一行的后半部

5、分是被遮挡的。有自动换行,就会自动到下一行。4.1.5.2 自动保存当你运行工程时自动保存该工程。4.1.5.3 编码时显示提示框检测显示出提示框未检测显示出提示框4.1.5.4保存时尝试自动编译执行编译测试自动保存程序,详情看4.1.5.5 截图4.3.3.1测试运行/警告这个功能可以在以下情况被使用:IDE 处于编辑模式,在工具菜单下使用IDE 处于调试模式,在调试菜单下使用点击示这个窗体将显点击将显示虚拟机或者真机屏幕的缩略图。你可以通过点击来保存一个 PNG 文件你可以改变的角度。4.1.5.6文件夹下无效的文件删除无效文件(不会删除任何程序布局的许取消操作)文件),显示一个无效文件列

6、表(允4.1.5.7工程删除所有生成编译期间生成的文件。4.2 代码区域选择的模板的代码显示的区域,此区域可以编辑。以下的例子是 SecondProgram 的代码。4.2.1 代码顶部是工程和窗体属性Basic4Android2.5 版本以后再代码最上方增加了常规设置。这些设置在以前的版本中 basic4android 项目菜单中。4.2.1.1 工程属性只显示在整个工程的 Maodule.中,整个工程有效。#Region Projectributes#ApplicationLabel: B4A Example#Ver#VerCode: 1Name:SupportedOrienportrai

7、t. #SupportedOrienionssible values: unspecified,landscorions: unspecified#CanInstallToExternalStorage: False#End Region4.2.1.2 窗体属性当前窗体有效。#Region Activity Attributes #FullScreen: False #IncludeTitle: True#End Region当你 b4a 头以前的版本加载已经保存的项目时,代码头部将看起来像这样:#Region Module Attributes#FullScreen: False #Incl

8、udeTitle: True#ApplicationLabel: MyProgram#Ver#VerCode: 1Name:#SupportedOrienions: unspecified#CanInstallToExternalStorage: False #End Region当你新增一个新的窗体,你会发现窗体属性出现在代码区域顶部。#Region Activity Attributes #FullScreen: False #IncludeTitle: True#End Region当你新增一个新的服务,你会发现服务属性出现在代码区域顶部。#Region Service Attribut

9、es#StarBoot: False#End Region当你想增加属性,你只需要输入#,将会显示全部的属性。4.2.2 取消和重做开发工具运行取消或者重做当前操作。取消点击,重做点击4.2.3 折叠代码块开发工具里的代码块可以被折叠成一行。下面的 btnAction_Click 是展开状态。点击左侧小正方形可以折叠代码块。下面的 btnAction_Click 是折叠状态光标停留在折叠的代码块时会显示其内容。4.2.4 折叠区域在代码区你可以定义并折叠他们。实例:#Region 开始设置一个区域GPS #End Region 结束位置你可以增加两个代码块在其中。点击折叠折叠后光标停留在 GP

10、S 上,显示代码的开始部分,不会显示全部的代码4.2.5 折叠全部的代码在编辑菜单下有三个功能:-Toggle All展开折叠的代码,折叠展开的代码。- Expands All展开真个工程内的代码-Collapse All折叠整个工程内的代码整代码区域被折叠的状态。鼠标停留上面将展现部分开始的代码。4.2.6和取消讲选中的代码区域或者恢复正常。原代码选中代码 , 点击被了。如果要恢复正常,选中代码,点击4.2.7你可以在代码的任何地方设置,中向前或者向后跳转。在光标新增, 点击将会出现在左边区域,去掉标签,点击点击跳转到下一个。点击条状到上一个。在菜单中,你可以移除全部的4.2.8缩进代码缩进

11、是一个好的。例如,程序块,循环,结构等。此代码是难以阅读,因为的代码结构不明显此代码更容易阅读,代码的结构是明显的2 次缩进是很有效果的。例如缩进 4就我个人而言,我更喜欢一个值 2。整片选中的代码可以向前或者向后整体缩进原代码选中代码,点击整片代码整体右移了整体可以点击缩进值可以在 Tools 菜单更改输入值,点击4.2.9 代码自动补全代码自动补全是一个非常有用的功能实例:输入 lblN按下 Ctrl + Space 或者点击所有的变量、视图和属性的名称将会显示在弹出框中,选中会出现联机提示。选中 lblNumber1 点击返回。选择 lblnumber2 按下箭头并按回车。选中的名称已经

12、补全了输入“.”在提示框中会显示全部的属性和方法。当选择一个项目,其显示内部的帮助按压向上/向下箭头选择上一个或下一个项目的帮助每次输入提示都会随之改变最好的学习方式就是练自动补全功能运行创建子程序遍。输入 Sub 然后 空格。输入 Tab选择类型,下面以 Button 为例.在的例子中点击选择类型自动生成子程序框架。在的实例中修改 Button 按钮的“EventName”4.2.10 内置文件basic4android V2.00 以后新内置文档功能是可用的。以下代码块的解释,如:将自动出现在弹出窗口:如果你想添加的代码示例可以使用代码:Parsesa raw ThentsDirmessa

13、ge and returns a Message objectraw textAtta-Attaentswillbesavedhis folder Example: Dim m As mParsMessage=arseMail(Content-Type:text/plain; charset= & QUOTE & utf-8"E,File.DirRootExter nal)Log(m)代码将语法:4.2.11 跳转到子程序有时从子程序的调用跳转到子程序的定义是很有用的。你可以很容易做到这点:选择子程序的名称右键选择子程序的名称右键点击 Goto Sub Declaration(F12)

14、跳转到代码定义的地方。4.2.12凸显关键字当选中关键字的时候,代码和右侧的滚动条上会蓝色可以通过滚动条你可以向上或向下定位到代码。显示。断点也是一样的4.2.13 调试首先你的 IDE 要在调试模式。如果选中此选项,然后编译代码将包含调试代码。运行时调试代码允许 IDE 连接到程序。当程序启动时,它会等待 DE 连接 10 秒,一般 IDE 马上就能连上。你的程序在上运行时你会看到等待提示。已编译的 apk 文件的名称将以_debug.apk 结束。不建议你发布这个 apk,文件中包含调试代码,增加了一个显着的资源消耗,如果要发布,不能选择 Debug 选项。当你的程序在 Debug 状态运

15、行时,IDE 将会显示Debug 模块在屏幕的底部。调试的注意事项:-在下面的断点将被忽略:Globals,,Pros_Globals 和 Activity_Pause-Servi-在调用 startService 时断点将被忽略。断点在 service_create 和 service_start 将暂停程序到一个特定的时间(大约 12 秒)。这是为了避免操作系统结束该服务。-程序的断点被执行到的时候事件将会被暂停。在事件代码断点将被忽略(只有当项目已经暂停)。-从设备到 IDE 发送数据的大小是有限的。长字符串可能被截断。-当调试器运行,IDE 是只读的。用户不能更改任何的程序文本。用于调

16、试的两大重点:断点:通过按压灰域线的左边,你可以设置的代码行断点。该程序将暂停,当它到达一个断点,将允许你检查当前的状态。日志:IDE 右侧的日志页是非常有用的。显示组件的生命周期并显示关键信息。请注意,有一个 Filter 复选框。选中时你只会看到你的程序相关的信息。如果没有选中 Filter 你将看到程序运行时的系统信息。如果你遇到了一个错误不能在日志中看到任何有关的错误消息,这时取消 Filter 选项并查找错误消息。注意,日志是设备的信息,当你连接设备的时候,你可能看到以前的信息。为了发布工程,你必须先编译:-发布版本程序中不包含调试信息。-发布版本()程序中不包含调试信息,代码将会被

17、。Basic4android v1.8 增加了功能。在编译 basic4android 生成 Java 代码,然后用 Java 编写编译和转换(Android Dalvik 字节码格式)。用工具允许 Dalvik 字节代码反编译成 Java 代码。模糊处理的目的是使反编译的代码不可读,难于理解和使它更难提取字符串像开发商帐户密钥。了解如何是很重要的。做了两件事:字符串任何写在 pros_globals 子字符串(仅在这个代码块中)将是的,使它更很难提取重要的。字符串在运行时反编译后的。注意包名、版本名称和版本代码将会在运行期间被。在 manifest 编辑器中修改这些值将破坏反编译过程。变量重

18、命名全局变量名称程序将会转换为无意义的字符串。局部变量丢失不会影响编译。以下标识符不改名:-标识符包含下划线(事件处理需要下划线)。-出现在 callsub 语句中的子程序。子程序名字作为一个静态字符串被保存为标识符。-设计器视图名称。提示:如果,因为某些原因,你需要防止可以通过添加下划线来重命名该标识符名称。将在文件夹创建名为 ObfuscatorMap.txt 的文件。这个文件原来的标识符名称和的名称。该文件有助于分析错误。激活功能basic4android1.8 版本选择编译模式使它变的更简单。4.2.14 断点单击行左边添加一个断点。当程序运行时它会停在第一个断点处。在 Globals

19、, Pro和 Activity_Pause 中的断点将会被忽略。s_Globals运行程序,该程序在断点处停止在 IDE 中看起来像下面。断点线是用黄色突出显示的。在 IDE 的底部你会找到其他信息。调试器连接。双击断开调试器。这个例程的程序停止的函数名字。在 52 行的新的程序。调用程序的新方法。在 24 行 activity_create 例程。点击这些跳转光标到制定行。继续执行代码 相当于 F5。继续执行,到底或下一个断点。移到下一行相当于 F8。继续执行下一行,在调试过程中看到的真正的程序流程和变量值的变化过程。立即暂停代码停止当前程序 相当于 F11.在模拟器中也能停止程序。在模拟器

20、中正在停止的程序在 IDE 不会停止!全局变量显示程序中全局对象和变量的值和属性。例如:btnAction: Type = Button Left = 190 Top = 0 Width = 115 Height = 55 Tag = empty Text = OKNumber1 = 6局部变量。 在这个例子中没有鼠标停留在变量上方会显示他的值。悬停鼠标在一个视图中显示其属性列表中。让一步一步运行程序:设置一个断点在 50 行。点击运行该程序,或按 F5。程序停在 50 行。全局变量窗口中显示2 个numbers 的值。简化显示 2 个 numbers 的值。点击 F8 程序将会执行下一行。N

21、umber1 变了!点击 F8 程序将会执行下一行。Number2 变了!4.3页有 4 个在右下角的 IDE 显示下列信息。4.3.1模块程序在 IDE 的右侧显示该项目的所有模块程序模块的选择列。模块列表点击一个模块在代码区显示其代码。查找程序功能 (Ctrl + E)查找选中(F7)所选择的模块子程序。点击一个子程序,显示出它的代码区的中间位置。在 IDE 中,在右下角。4.3.1.1 查找程序功能 (Ctrl + E)这是一个搜索引擎找到与一个给定的名称或一个给定的名称的一部分子程序或者按下 Ctls + E 你下面的屏幕显示的列表如果你点击子程序根据输入的文本框中的文本。如果没有输入

22、文本,选择模块的第一 10 例程显示MyProgram.代码为例。点击一个项目显示所选的程序代码。另一个模块的事件。在文本框中输入 Act在所有模块的所有例程中含有在他们的名字“Act”将被显示。4.3.1.2 查找选中(F7)这是一个搜索引擎找到给定对象的所有(视图,变量)。或按 F7 你下面的屏幕显示的所有代码列表如果你点击与选定的参考或在当前行的第一个对象行。MyProgram.代码为例选中代码中 49 行 Number1.点击你被下面的列表中包含的所有选定的代码行对象。在 IDE 的编码区中列表点击一行显示.4.3.2 文件此窗口列出所有的文件已被添加到项目中这些文件被保存在 file

23、s.dirassets 文件夹。这些可以是任何类型的文件:layouts, images, texts, etc.点击添加文件到列表。在该文件夹中可以的文件 file.dirassets.在 IDE 中,在右下角。使用检查一个或多个文件是否可用。点击此按钮删除从选定的文件列表,从项目文件的文件夹如果你想从文件夹删除文件。Oui = 同意= 不同意Annuler = 取消确保删除一个的文件,从文件夹中删除文件,而不是转移到回收站,如果你没有备份,这意味着他们将被彻底删除。4.3.3 日志它正在运行时显示程序所生成的日志.把在 SecondProgram 中添加 51 和 53 这两行。行数可能与

24、你的不同。运行程序。点击连接日志器。在窗口中看到下面的程序。Activity (main) Create, is truelog message Second log message Activity (main) Resume=在 IDE 中,在右下角当过 Filter被选中,你只会看到你程序的相关信息。当 Filter未被选中,你可以看到运行的系统信息。如果你遇到了一个错误,日志中看不到任何消息,取消 Filter 显示错误信息将是值得的。点击用来这个日志窗体。如果调试器仍在运行,选择从 IDE 菜单停止调试,按 F11 键或点击这样的代码可以被编辑。4.3.3.1 测试编译/从 basi

25、c4android V2.70 开始,Basic4android 加入了是尽快找到潜在的设计错误。对的目的运行在:-你编译程序时-在中点击-当你保存程序时。编译时警告出现在日志和代码本身时,光标停留在代码行上面。代码行的关注是强调这样的警告点击列表中的警告将带您到相关的代码处。忽略警告你作为开发者,可以选择忽略任何警告。添加一个“忽略”的对于特定的行的所有警告。将删除您还可以禁用在项目属性或模块属性的区域的属性。从模块中的一个特定类型的加入# ignorewarning例如:禁用#10 和#12 行的#Region Projectributes#ApplicationLabel: Warnin

26、gs#Ver#VerCode: 1Name:SupportedOrien portrait.#SupportedOrienionssible values: unspecified, landscorions: unspecified#CanInstallToExternalStorage: False#IgnoreWarnings: 10, 12#End Region运行时的警告一些警告只有在运行时检查。这些警告会出现在常规日志。在调试模式检测运行时的警告。警告列:1: Unreachable code detected.2: Not all code paths return a valu

27、e.3: Return type (in Sub signature) should be set explicitly.4: Return value is missing. Default value will be used instead. 5: Variable declaration type is missing. String type will be used.6: The following value misses screen units (dip or %x / %y): 1.7: Object converted to String. This is probabl

28、y a programming mistake. 8: Undeclared variable 1.9: Unused variable 1.10: Variable 1 is never assigned any value. 11: Variable 1 was not initialized.12: Sub 1 is not used.13: Variable 1 should be declared in Sub Pros_Globals.14: File 1 in Files folder was not added to the Files tab.nYou should eith

29、er delete it or add it tothe project.nYou can choose Tools - Clean unused files. 15: File 1 is not used.16: Layout file 1 is not used. Are you missing a call to Activity.LoadLayout? 17: File 1 is missing from the Files tab.18: TextSize value should not be scaled as it is scaledernally.19: Empty Catc

30、h block. You shouldeast add Log(LastException.Message).20: View 1 was added with the designer. You should not initialize it.21: Cannot acs views dimenbefore it is added to its parent.22: Types do not match.23: Modal dialogs are not allowed in Sub Activity_Pause. It will be ignored.24: Acsing fields

31、from other modules in Sub Pros_Globals can be dangerous asthe initialization order is not deterministic运行时警告:1001: Panel.LoadLayout should only be called after the panel was added to its parent. 1002: The same object was added to the list. You should call Dim agao create a new object.1003: Object wa

32、s already initialized.1004: FullScreen or IncludeTitle properties in layout file do not match the activity attributes Settings.1:e detected. (无法的代码检测)有一些代码不会被执行在子程序返回之后又代码,他们将不会执行。2: Not all code paths return a value.(不是所有的代码都有返回值)Sub Calc(Val1 As Double, Val2 As Double, Operation As String) As Doub

33、le Select OperationCase AddReturn (Val1 Case Sub Return (Val1 Case Mult Return (Val1 Case Div End SelectEnd Sub+Val2)-Val2)*Val2)Case Div 没有返回值另一个例子:错误代码Sub DimDimActivity_KeyPress(KeyCode Answ AsTxt As StringAs) AsIf KeyCode = KeyCodes.KEYCODE_BACK Then Checks if the KeyCode is BackKeyTxt = Do you

34、really want to quit the program ?Answ = Msgbox2(Txt,A T T E N T I O N,Yes,No,Null) MessageBoxIf Answ = DialogResponse.ITIVE Then If return value is Yes thenReturnElse ReturnFalse Return = False the Event will not be consumed we leave the programTrue Return = True the Event will be consumed to avoid

35、leaving the programEndEnd EndIfIfSub正确的代码Sub DimDimActivity_KeyPress(KeyCode As Answ AsTxt As String) AsIf KeyCode = KeyCodes.KEYCODE_BACK Then Checks if the KeyCode is BackKeyTxt = Do you really want to quit the program ?Answ = Msgbox2(Txt,A T T E N T I O N,Yes,No,Null) MessageBoxIf Answ = DialogRe

36、sponse.ITIVE Then If return value is Yes thenReturn Else Return End If Else Return End IfEnd SubFalse Return = False the Event will not be consumedwe leave the programTrue Return= True the Event will be consumed to avoidprogram leaving theTrue Return= True the Event will be consumed to avoidprogram

37、leaving the3: Return type (in Sub signature) should be seicitly.返回类型定义错误代码Sub Calc(Val1 As Double, Val2 As Double, Operation As String)正确代码Sub Calc(Val1 As Double, Val2 As Double, Operation As String) As Double返回的类型必须被定义!4: Return value is missing. Default value wil默认值)错误代码used instead.(返回值丢失。将使用Sub

38、 DimSumCalcSum(Val1 As Double, Val2 As Double) As Double Sum As Double= Val1 + Val2ReturnEnd Sub正确代码Sub DimSumCalcSum(Val1 As Double, Val2 As Double) As Double Sum As Double= Val1 + Val2Return SumEnd Sub5: Variable declaration type is missing. String type wil失。字符串类型将被使用)错误代码used.(变量类型丢Sub Calc(Val1,

39、 Val2 As Double, Operation As String) As Double正确代码Sub Calc(Val1 As Double, Val2 As Double, Operation As String) As Double在子每个变量都需要自己的类型但在隐式的,这是允许的,在下面两个变量是同时定义的:Dim Val1, Val2 As Double6: The following value misses screen units (dip or %x / %y): 1.(下面的值没有屏幕)错误代码Activity.AddView(lblTest, 10, 10, 150

40、, 50)正确代码Activity.AddView(lblTest, 10dip, 10dip, 150dip, 50dip)在上面的例子中,四种警告,其中的每个值。视图尺寸应使用 dip,%X 或%Y 值查看 5.1 Spel functions like 50%x, 50dip7: Object converted to String. This is probably a programming mistake(对象转换为字符串。这可能是一个编程错误)8: Undeclared variable 1.(未错误代码Sub SetHeight h = 10dipEnd Sub正确代码Sub

41、SetHeight Dim h As h = 10dipEnd Sub的变量)变量 h 未定义。显示红色。9: Unused variable 1. (未使用的变量)Sub SetHeight Dim h As h = 10dipEnd Sub这一警告,变量 H 是没有用的。它,分配一个值,但是没有用!没有给出警告,因为变量 H 被使用了:Sub SetHeight Dim h As h = 10diplblTest.Height = hEnd Sub10: Variable 1 is never assigned any value.(变量“ 1 ”没有指定任何值。)Sub TestDim

42、h As End Sub这一警告表明变量 H 的正确的代码,见上面。但没有指定任何值。11: Variable 1 was not initialized.(变量“ 1 ”没有初始化。)错误代码Dim lst As Listlst.Add(Test1)正确代码Dim lst As List lst.Initializelst.Add(Test1)变量(对象)如 List 或 Map 必须在使用之前初始化控件增加在父床提前必须被初始化。12:1 is not used.(子程序不被使用)子程序不被运行时将会显示警告。13: Variable 1 should be declared in定义在

43、pros_globals 中)b Pros_Globals.(变量“ 1 ”应该错误代码SubDim DimGlobalsTimer1 As Timer GPS1 As GPS正确代码Sub DimDimPros_GlobalsTimer1 As TimerGPS1 As GPS某些特定的控件,如Timers,GPS 应在 Pros_Globals 而不是 Globals.14: File 1 in Files folder was not added to the Files tab.(文件“ 1 ”文件夹不能添加到文件”选项卡。)你使用的文件,在文件夹中却不在文件你应该:-删掉它-增加到工程中。-文件夹中的无效文件。15: File 1 is not used(文件“ 1 ”是无用的)你的文件夹有未使用的文件。 你应该将它们从文件夹中移除。或者你可以在 Tools 菜单中清洁文件夹的文件,如上面。16: Layout file 1 is not u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论