注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

Lazarus开发Android应用程序指南  

2012-08-07 09:10:18|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//轉 http://www.fpccn.com/read.php?tid=1684  delphicn所有,qq:1339838080
 
本文件描述的安装环境为Windows XP SP3。 
1.下载和安装配置FPC和Lazarus安卓(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 trunk版Lazarus0.9.31和FPC 2.5.1打包成一个安装文件。可以正常安装使用了,不会出错,可以正常生成安卓文件。以下1.5到1.10的步骤都可以跳过。2.1的出错后重定位部分的步骤也可以跳过了。这个安装包放115网盘。网盘地址在第3帖最后。  
1.5下载FPC 2.5.1(1月19日版),首先你需要有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.bat,5分钟后,在D:\AndroidFPC\FPC251\output文件夹中会有两个文件夹:bin 和 units,FPC编译器在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 Data中Lazarus的文件夹。从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-linux到D:\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

引用地址:http://wiki.freepascal.org/Android_Programming

这些需要用到2.3的SDK,请先下载安装好。

4.1下载安装Android NDK ,Android SDK 和Ant

4.2安装FPC交叉编译器。

4.3 SVN下载最新的lazarus-ccr sourceforge源码:https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr

或者直接下载:lazarus-ccr/bindings/android-ndk里面的源码就可以了。

4.4 打开lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi ,路径设置一下,具体看示例。编译生成。

4.5 配置一下local.properties文件。

4.6 构建APK,安装模拟器2.3.3。

 

5.如何创建一个新的LCL  Android应用程序

引用地址:http://wiki.freepascal.org/Custom_Drawn_Interface/Android#How_to_create_an_LCL_Android_Application

以下部分是参考官网和自己研究所得:

创建一个新的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

以上两图是同一张图,看红色框部分。再看Android的java包的文件路径,看下图。

 

 图32

看文件路径名称同样为:src\com\pascal\truetest\LCLactivity。

注意:Java文件要加入到工程中去,打开java文件然后菜单 工程->添加代码编辑器中的文件到工程。后来研究了一下,这里不一定。

还要调整编译后的so文件名称和 java中的一样。说明如下:

LCLActivity.java文件中最后部分,第621行:

 

 

图33

看黑色框中的lclapp  ,那么你的编译后的导出库名称也要lclapp ,看工程选->编译选项->路径->Target file name,看图:

 

图34

注意,lclapp.so前的lib和so文件存放路径位置。

安卓程序的图标和文件名称的更改:

图标和文件名称存放在以下位置中android\res\中 ,drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹,分别存放72x72、48x48、36x36大小两种图标。而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开发组的实现路线

http://wiki.freepascal.org/Custom_Drawn_Interface/Android#Roadmap

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
  评论这张
 
阅读(1924)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017