Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 82876|回复: 130

Lazarus开发Android应用程序指南(中文首发)

[复制链接]
  • TA的每日心情
    开心
    2021-8-26 17:08
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2012-2-28 22:14:46 | 显示全部楼层 |阅读模式
    部署成功的朋友请到社区官方QQ群-主群的活动位置签名报告:
    http://qun.qq.com/air/#34176611/activity/show/a/1330572791

    Lazarus开发Android应用程序指南(中文首发)

    本指南为中文版本首发,版权由delphicn所有,QQ1339838080(tom),转载请保留版权信息。文中难免有错,欢迎指正。

    本文件描述的安装环境为Windows XP SP3


    备注:为了方便大家下载以下的JDK,SDK,NDK,ANT,本人已经全部打包了,请到这里下载:http://www.kuaipan.cn/file/id_62695037779050499.html
    或者从这里下载:https://skydrive.live.com/?cid=89ae6b50650182c6# 进入公开,直接点击Tools.rar 。


    1.  下载和安装配置FPCLazarus安卓(Android)开发环境:

    1.1 下载安装JDKhttp://www.oracle.com/technetwor ... ownloads/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,因为已经包含了。用来编译生成ppcrossarm.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网盘中,自己打包的。下载地址请看第3帖结尾。
    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/binaries/  ;选择apache-ant-1.8.2-bin.zip下载就可以了。下载后解压缩,把解压后的文件夹放在:C:\Program Files文件中,然后在环境变量中配置如以下图:
    图7
    图8
    至此,所有windows配置及工具已经全部下载安装完成,可以开始调试程序了。




    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

    x

    评分

    参与人数 3威望 +22 收起 理由
    商务通 + 15 Lazarus社区有你更精彩!
    逍遥派掌门人 + 4
    zwz + 3

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-8-26 17:08
  • 签到天数: 7 天

    [LV.3]偶尔看看II

     楼主| 发表于 2012-2-28 22:31:45 | 显示全部楼层
    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或者绿色版lazarus 1.1 这个安装包,请从这里开始。
    好了,可以打开androidlcl示例了,打开examples\\androidlcl\\androidlcltest.lpi,然后进行工程设置。工程->工程选项->编译选项->路径:
    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安装或者复制APK文件到你的手机的SD卡,安装后就可以运行它。关于ADB请看3.1中的ADB Install的内容。在安装之前我们先创建Android模拟器,看3.1中的内容。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-3-12 12:21:39 | 显示全部楼层
    回jfaumt,

    你的 "建構APK.bat" 不能只寫Ant debug

    CD lazarus\\example\\androidlcl/android

    這行也要加上去(當然,路徑是你的DEMO專案路徑),不然路徑會有誤

    再試試看行不行吧~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-8-26 17:08
  • 签到天数: 7 天

    [LV.3]偶尔看看II

     楼主| 发表于 2012-2-28 23:09:07 | 显示全部楼层
    本帖最后由 delphicn 于 2013-5-15 23:56 编辑

    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常用命令:
    Adb install <apk文件路径>  安装apk到模拟器
    Adb uninstall <包名称> 卸载apk
    Adb devices   列出所有模拟器设备
    Adb logcat  调试器实时记录

    看我们的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里面的源码就可以了。
    44 打开lazarus-ccr/bindings/android-ndk/examples/opengltest/opengltest.lpi ,路径设置一下,具体看示例。编译生成。
    45 配置一下local.properties文件。
    46 构建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
    [strike](1) [/strike][strike]构建 Lazarus Custom Drawn [/strike][strike]控件组。已完成[/strike]
    [strike](2) [/strike][strike]为安卓API[/strike][strike]初始化绑定。已完成[/strike]
    [strike](3) [/strike][strike]创建一个应用程序自动生成绑定。已完成[/strike]
    [strike](4) [/strike][strike]开始一个新的widgetset[/strike][strike](组件集,构件集)。已完成[/strike]
    [strike](5) [/strike][strike]实现对JNI[/strike][strike]的支持。已完成[/strike]
    [strike](6) [/strike][strike]合并Lazarus Custom Drawn [/strike][strike]控件到LCL[/strike][strike]并且用它们实现所有最基本的控件。已完成[/strike]
    [strike](7) [/strike][strike]为安卓添加文本支持。已完成[/strike]
    [strike](8) [/strike][strike]实现基本窗口客户区滚动。已完成[/strike]
    (9) 为桌面平台添加手机模拟器。进行中
    (10) 改善手机滚动。尚未进行
    [strike](11) X11中添加文本支持。已完成[/strike]
    [strike](12) LCL中添加DPI感应度和自适应。已完成[/strike]
    [strike](13) 添加非本地化文本支持通过pasfreetype 。已完成[/strike]
    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单元,这个要测试一下。


    为了方便大家下载以下的JDK,SDK,NDK,ANT,本人已经全部打包了,请到金山快网盘下载:
    http://www.kuaipan.cn/file/id_62695037779050499.html
    或者从这里下载:https://skydrive.live.com/?cid=89ae6b50650182c6# 进入公开,直接点击Tools.rar  。

    已打包版本从里下载:
    [strike]4月28日绿色版:lazarus1.1-37052-fpc2.5.1-Android.rar [/strike]
    [strike]5月08日绿色版:lazarus1.1-37216-fpc2.5.1-Android.rar [/strike]
    [strike]5月11日绿色版:lazarus1.1-37252-fpc2.5.1-Android.rar [/strike]
    [strike]6月24日绿色版:lazarus1.1-37752-fpc2.5.1-Android.rar [/strike]
    8月04日绿色版:lazarus1.1-38150-fpc2.5.1-Android.rar  金山快盘:http://www.kuaipan.cn/file/id_62695037779050498.htm
    另一个地址:https://skydrive.live.com/?cid=89ae6b50650182c6#  进入公开,直接点击lazarus1.1-38150.rar 。
    2013年05月12日新版已发布,这次支持FPC2.7.1了http://www.fpccn.com/thread-2872-1-1.html
       
    关于绿色版介绍请看另一帖:http://www.fpccn.com/read.php?tid=1769

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-4-15 21:14:04 | 显示全部楼层
    非常感谢delphicn 搞定
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-2-28 23:13:24 | 显示全部楼层
    谢谢中文社区,谢谢伟大的D,谢谢郭嘉,谢谢CCAV,谢谢苍井空。
    TMD终于成功了,开始量产了!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-2-28 23:14:26 | 显示全部楼层
    好东西,顶起来,谢谢了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-2-28 23:14:32 | 显示全部楼层
    社区有你更精彩
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-2-28 23:17:14 | 显示全部楼层
    这回可以顶了~

    支持首发!社区有你支持,定会更好的发展!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2012-2-28 23:24:40 | 显示全部楼层
    好东西啊!今天大收获!
    回复 支持 反对

    使用道具 举报

    *滑块验证:

    本版积分规则

    QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

    GMT+8, 2025-5-1 16:02 , Processed in 0.045590 second(s), 10 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表