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.3的SDK,请先下载安装好。
4.1下载安装Android NDK ,Android SDK 和Ant
4.2安装FPC交叉编译器。
或者直接下载: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应用程序
以下部分是参考官网和自己研究所得:
创建一个新的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