Lazarus开发Android应用程序指南

Lazarus开发Android应用程序指南(中文首发) 
 
本指南为中文版本首发,版权由delphicn所有,QQ1339838080(tom),转载请保留版权信息。文中难免有错,欢迎指正。 
 
本文件描述的安装环境为Windows XP SP3 
1.  下载和安装配置FPCLazarus安卓(Android)开发环境: 
 

1.1 下载安装JDKhttp://www.oracle.com/technetwork/java/javase/downloads/index.html,如图1和图2所示。 



1.2下载安装Android SDK 
从以下网址下载安卓SDK开发包:http://developer.android.com/sdk/index.html,选择如图3所示。 
 

首先安装JDK,然后安装Android SDK。安装完SDK后需要下载相应的SDK包,打开程序->Android SDK tools->SDK Manager 安装SDK 2.2 


 

后面的例子会用到。 
 
 
1.3 下载安装Android NDK http://developer.android.com/sdk/ndk/index.html 

 

5

 
注意:NDK后来改为下载:android-ndk-r7-windows.zip这个包,上面那个包中的arm-linux-ld.exe编译时会出错,使用这个包中的不会出错了。地址:http://dl.google.com/android/ndk/android-ndk-r7-windows.zip   
NDK解压缩就可以了。  
1.4检查以下路径的工具是否正确,由NDK安装的。例如我的环境:D:\AndroidFPC\ NDK\android-ndk-r7b\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin。检查库路径:D:\AndroidFPC\NDK\android-ndk-r7b\platforms\android-8\arch-arm\usr  
备注:已成功把最新Svn trunkLazarus0.9.31FPC 2.5.1打包成一个安装文件。可以正常安装使用了,不会出错,可以正常生成安卓文件。以下1.51.10的步骤都可以跳过。2.1的出错后重定位部分的步骤也可以跳过了。这个安装包放115网盘。网盘地址在第3帖最后。  
1.5下载FPC 2.5.1119版),首先你需要有SVN下载工具。新建一个文件夹,然后SVN检出FPC源码,版本号是16790。新建一个文件夹D:\AndroidFPC\FPC251用于存放SVN源码,右击文件夹选择SVN检出,版本号16790,如图6所示 

6

1.6安装FPC 2.4.4 简单的安装法是安装Lazarus 0.9.30.2,因为已经包含了。用来编译生成fpcrossarm.exe ,后面会介绍。 1.7创建构建脚本并且构建它。先创建输出文件夹:D:\AndroidFPC\FPC251\output

创建一个批处理文件在以下文件夹 D:\AndroidFPC\FPC251   ,文件名build.bat,内容如下:
SET PATH=D:\lazarus\fpc\2.4.4\bin\i386-win32\
make crossinstall CPU_TARGET=arm OS_TARGET=linux CROSSBINDIR=D:\AndroidFPC\NDK\android-ndk-r7b\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin OPT=-dFPC_ARMEL BINUTILSPREFIX=arm-linux-androideabi- INSTALL_PREFIX=D:\AndroidFPC\fpc251\output
pause
 

现在双击运行build.bat5分钟后,在D:\AndroidFPC\FPC251\output文件夹中会有两个文件夹:bin  unitsFPC编译器在D:\AndroidFPC\FPC251\output\bin\i386-win32文件夹中,名为:ppcrossarm.exe ,成功构建,这个文件是重点。

1.8复制交叉编译工具
D:\AndroidFPC\NDK\android-ndk-r7b\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin复制3个交叉二进制工具到D:\AndroidFPC\FPC251\output\bin\i386-win32文件夹中。这三个文件的名称为:arm-linux-androideabi-as.exe  arm-linux-androideabi-ld.exe   arm-linux-androideabi-strip.exe ,重新命名为:arm-linux-as.exe  arm-linux-ld.exe   arm-linux-strip.exe 。这里注意1.3的描述。
 
1.9 安装新版Lazarus
现在我们需要安装最新版本lazarus,把原来的Lazarus 0.9.30.2卸掉,不要忘记同时清理C:\Documents and Settings\你的用户名\Local Settings\Application DataLazarus的文件夹。从ftp.freepascal.org/ /pub/lazarus/snapshots/下载最新版本的Lazarus 安装。我安装的是:Lazarus-0.9.31-35521-fpc-2.7.1-20120221-win32.exe这个版本。新版已经打包,在115网盘中,自己打包的。
 
1.10 合并工具到Lazarus环境。
复制D:\AndroidFPC\FPC251\output\bin\i386-win32中所有文件到 Lazarus安装文件夹D:\lazarus\fpc\2.7.1\bin\i386-win32 ,复制文件夹D:\AndroidFPC\FPC251\output\units\arm-linuxD:\lazarus\fpc\2.7.1\units中。
 
到了这一步,我们在Windows的中的lazarus部分就配置成功了。下面还有工具及设置要调整。
 
1.11下载安装设置Ant 。从以下地址:http://www.apache.org/dist/ant/  ;选择ant-current-bin.zip下载就可以了。下载后解压缩,把解压后的文件夹放在:C:\Program Files文件中,然后在环境变量中配置如以下图:
图8
8图
 
至此,所有windows配置及工具已经全部下载安装完成,可以开始调试程序了。



2.  编译lazarus中的Android示例程序。
示例是在lazarus/examples/androidlcl/androidlcltest.lpi  。我这里把示例程序放在了D:\AndroidFPC\demo\demo中,所以以下示例都以此为准。
 
2.1重新设置Lazarus 
 
在打开示例程序之前,我们先要把lazarus重新设置一下,进入最新安装的Lazarus文件夹lazarus\fpc,把2.7.1改为2.5.1,然后重新打开lazarus,会出错, 

9
然后重新选择一下fpc的编译器及源码位置,
 
11
Start IDE,启动lazarus,打开后选择工具->选项,查看环境是否正确设置:
12
点工具->重新扫描FPC源代码目录。好了。注意,这样配置以后,只能编译生成android项目,其它标准工程会出错。
如果已经安装好lazarus-0.9.31-35594M-fpc-2.5.1-20120229-win32.exe这个安装包,请从这里开始。好了,可以打开android示例了,打开,然后进行工程设置。工程->工程选项->编译选项->路径:
13
调整红色框部分,添加两个路径:
1):D:\AndroidFPC\NDK\android-ndk-r7b\platforms\android-8\arch-arm\usr\lib
2):D:\AndroidFPC\NDK\android-ndk-r7b\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.4.3
如图所示:
 
14
 
Build modes 
 
15
代码:
 
16
其它具体选项查看示例工程,不再一一列举。
 
2.2 开始编译及构建android示例。
如果已经按照以上的设置好了android工程,你现在可以Shitf+F9构建工程了。
17
成功编译了,多么激动人心啊!
 
2.3 构建APK
在你使用命令行构建APK之前,请你先打开示例中android文件夹下的local.properties文件。
打开后可以看到:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked in Version Control Systems,
# as it contains information specific to your local configuration.
 
# location of the SDK. This is only used by Ant
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=/home/felipe/Programas/android-sdk-linux
修改最后一行为本机Android SDK的文件夹:sdk.dir=C:/Program Files/Android/android-sdk
进入命令行方式,开始构建APK
CD lazarus\example\androidlcl/android
Ant debug
我这里直接写了一个批处理,你们可以自己写一个。可以直接运行demo中的批处理文件:构建APK.bat 
 
好了,构建的apk文件在lazarus\example\androidlcl/android/bin中。如果出现找不到tools.jar,请把C:\Program Files\Java\jdk1.7.0_03\lib\tools.jar 复制到C:\Program Files\Java\jre7\lib文件夹。
 
 
2.4 安装APK到你的手机并且运行。
你可以通过ADB安装或者复制文件到你的手机的SD卡,就可以运行它。关于ADB请看3.1中的ADB Install的内容。在安装之前我们先创建Android模拟器,看3.1中的内容。





3.  Android模拟器和手机中运行APK
 
3.1创建并设置模拟器。
运行程序中的Android SDK Tools android AVD管理器,创建一个新的模拟器设备:
 
 
18
点击New,设置如下:
 
 
19
SD Cardsupport 需要点右边的New才能添加进去。
点击Create AVD,好了,创建了一个模拟器了。
 
 
20
 
3.2运行模拟器
现在我们运行模拟器。点击Start
 
 
21
Launch,开始运行了,等待几分钟,模拟启动完成。
 
 
 
22
如果第一次出现运行错误,不要管它,请关闭,重新再开始。
 
3.3安装和运行APK程序
启动完成模拟器才可以安装程序。
进入命令行方式,进入文件夹:C:\Program Files\Android\android-sdk\platform-tools
使用如下命令把前面生成的apk文件安装进去。
Adb install <apk文件路径>
我这里是adb install D:\AndroidFPC\demo\demo\android\bin\LCLExample-debug.apk,或者运行demo中的批处理文件:安装APK.bat,等它完成。
 
 
23
显示Success就成功应用软件安装进模拟器了。
Adb常用命令:
Adbinstall <apk文件路径>  安装apk到模拟器
Adb uninstall<apk文件路径卸载apk
Adbdevices   列出所有模拟器设备
Adblogcat  调试器实时记录
 
看我们的LCL Test
 
 
24
 
运行后:
 
 
25
4.示例程序NDK OpenGL
这些需要用到2.3SDK,请先下载安装好。
41下载安装Android NDK Android SDK Ant
42安装FPC交叉编译器。
43 SVN下载最新的lazarus-ccr sourceforge源码:https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr
或者直接下载:lazarus-ccr/bindings/android-ndk里面的源码就可以了。
4打开lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi ,路径设置一下,具体看示例。编译生成。
4配置一下local.properties文件。
4构建APK,安装模拟器2.3.3
 
5.如何创建一个新的LCL  Android应用程序
以下部分是参考官网和自己研究所得:
创建一个新的LCL-CustomDrawn-Android应用程序可以简单的从示例程序复制。这个示例程序可以从lazarus/examples/androidlcl中找到。然后你需要修改构建文件来变成你自己的新的工程名称和新的Java包名称。
5.1 创建LPI文件
此时你需要一个单独的LPI文件来用于安卓应用程序版本,但是所有其它代码可以被共享。
创建它可以从新建->工程->库来建立一个新的文件,然后从示例程序中来改写其它的代码。你需要改写工程LPR文件exported部分的JNI属性名字为你的安卓包的名字。
5.2构建库文件
首先,工程去掉debug信息。Debug信息对安卓没用,并且它使得执行文件的体积太大。看图:
 
 
 
 
 
29
5.3 创建安卓工程结构
和一般的LCL工程构建比起来,像这样配置一个正确的LPI并且拥有一个库主工程文件,也只需要添加所有的安卓工程结构。完全从示例程序复制就可以了,然后修改适应新的工程。然后更改SDK路径,包名称。包的名称需要在新的工程文件中修改。在文件夹android/src/包名称,在activity java源代码并且在工程的库文件pascal代码中,在exports部分。
上面是翻译了官网和,
自己研究如下:包文件名称和路径要和LPR中的文件名要一样。这里的包指的是Android包。
 
 
 
31
以上两图是同一张图,看红色框部分。再看Androidjava包的文件路径,看下图。
 
 
32
看文件路径名称同样为:src\com\pascal\truetest\LCLactivity
注意:Java文件要加入到工程中去,打开java文件然后菜单 工程->添加代码编辑器中的文件到工程。后来研究了一下,这里不一定。
 
还要调整编译后的so文件名称和 java中的一样。说明如下:
LCLActivity.java文件中最后部分,第621行:
 
 
33
看黑色框中的lclapp  ,那么你的编译后的导出库名称也要lclapp ,看工程选->编译选项->路径->Target file name,看图:
 
 
34
注意,lclapp.so前的libso文件存放路径位置。
 
安卓程序的图标和文件名称的更改:
图标和文件名称存放在以下位置中android\res\ drawable-hdpidrawable-mdpidrawable-ldpi三个文件夹,分别存放72x7248x4836x36大小两种图标。而values文件中的strings.xml文件中就是存放安卓文件名称了,打开修改    <string name="app_name">LCLTest</string>部分的LCL Test就可以了。如是是中文名称,请把文件另存为utf8格式。
 
生成的APK名称在这里定义:android\build.xml中定义,在2行:
<projectname="LCLExample" default="help">  LCLExample改为你自己的名称。
 
6.在Android2.2(API 8)中可用的NDK 
LCL-CustomDrawn设计目标为 Android2.2+ 并且 API库在NDK中如下支持:
(1)   libc.so
(2)   libdl.so(linker)
(3)   OpenGL ES 1
(4)   OpenGL ES 2
(5)   libjnigraphics.so
(6)   liblog.so
(7)   libm.so
(8)   libthread_db.so
(9)   libstdc++.so
当前LCL-CustomDraw-Android 使用 libjnigraphics.so  liblog.so  
 
7.本地文本绘制
在安卓中本地文本绘制有一些费解并且这个帮助文件也相当糟糕。一些已经了解的在如下:
(1)   绘制文本开始以Y坐标作为基准线,
(2)   没有帮助文件描述Paint.setTextSize中的尺寸是如何的。有些人说是像素,但是我看到一些不同,它好像依赖于不同设备之间。
(3)   也有一些好的事情:
l        可以绘制透明的位图并且使用alphi透明度去实现anti-aliasing(反钜齿处理) subpixel rendering(子像素渲染)。文本变得十分漂亮。
l        也可以绘制ARGB 32位非像素格式也是相当漂亮的。
 
8Lazarus开发组的实现路线
2012-2-24
(1) 构建 Lazarus Custom Drawn 控件组。已完成
(2) 为安卓API初始化绑定。已完成
(3) 创建一个应用程序自动生成绑定。已完成
(4) 开始一个新的widgetset(组件集,构件集)。已完成
(5) 实现对JNI的支持。已完成
(6) 合并Lazarus Custom Drawn 控件到LCL并且用它们实现所有最基本的控件。已完成
(7) 为安卓添加文本支持。已完成
(8) 实现基本窗口客户区滚动。已完成
(9) 为桌面平台添加手机模拟器。进行中
(10) 改善手机滚动。尚未进行
(11) X11中添加文本支持。尚未进行
(12) LCL中添加DPI感应度和自适应。尚未进行
(13) 添加非本地化文本支持通过pasfreetype 。尚未进行
9.关于LazarusCustom Drawn 接口
一个跨平台LCL后端,完全在lazarus内使用Object Pascal编写的。Lazarus  Android的接口。LCL-CustomDrawn-Android有以下特性:
此部分尚未完成整理。
 
 
10.官方论坛看到的资料
l        引用页:http://www.lazarus.freepascal.org/index.php/topic,15951.0.html  Android NDK目前为止所有的转换pas都在lazarus/lcl/interfaces/customdrawn/android中。但是这个转换目前不包括摄像头和手机通讯簿部分。转换的版本是Android2.2+。对SDK库,非常巨大,可以通过JNI直接访问它们。有人提到如何设置背景为黑色,他说在common_draw中修改,我想是在customdrawn_common单元,这个要测试一下。
 
lazarus-0.9.31-35594M-fpc-2.5.1-20120229-win32.exe安装包115网盘:http://115.com/file/belt6tb7 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Lazarus开发Android应用程序指南(2017新版)第二部分》是一本关于使用Lazarus开发Android应用程序指南书籍。本书主要介绍了Lazarus的基本概念以及如何使用Lazarus开发Android应用程序的各种技术和工具。 该书的第二部分主要涵盖了以下几个方面的内容: 1. Lazarus的介绍:本章介绍了Lazarus的基本概念,包括其由来、特点和适用范围等。同时,还介绍了Lazarus在跨平台开发中的优势,帮助读者更好地理解和运用Lazarus开发Android应用程序的优势所在。 2. Lazarus的安装和配置:本章详细介绍了如何在Windows和Linux系统中正确安装和配置Lazarus环境,包括下载和安装Lazarus IDE、配置编译器和设置开发环境等。通过本章的学习,读者能够快速搭建Lazarus开发环境并开始进行Android应用程序开发。 3. Android开发环境搭建:本章主要介绍了如何配置Lazarus环境以进行Android应用程序开发。包括安装并配置Android SDK和NDK,以及通过Android虚拟设备或真机进行应用程序的调试和测试等。通过本章的学习,读者能够了解适用于Lazarus开发Android环境搭建步骤以及调试技巧。 4. Lazarus中的Android应用程序开发:本章详细介绍了LazarusAndroid应用程序开发过程,包括界面设计、事件处理、数据库访问、网络通信等。同时,还介绍了如何使用Lazarus自带的组件库以及第三方组件进行开发,方便读者进行Android应用程序的快速开发。 总结起来,本书第二部分是一本全面介绍Lazarus开发环境配置和Android应用程序开发指南。通过学习本书,读者能够获得基本的Lazarus开发知识,并能够使用Lazarus开发Android应用程序。无论是初学者还是有一定经验的开发者都可以从本书中获得实用的开发技巧和经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值