一、准备Java环境
1.下载并安装 Java-F7U60-i586.exe 约127Mb
2.下载NDK : android-ndk-r9d-windows-x86.zip 约468Mb 解压后备用
3. 下载SDK: adt-bundle-windows-x86-20140321.zip 约 510Mb 解压后备用
用四川大学的校园网,要下很久哦
二、安装 Laz4android
下载laz4android1.3-43585-FPC2.7.1-New.7z 约58Mb,解压。
1、编译laz
解压得到目录laz4android, 进入编辑文件 built.bat
修改其中 :
SET FPC_BIN_PATH=D:\dev\delphi\lazarus\laz4android为你自己正确的目录
保存后运行build.bat,约3分钟后编译完成 (你们的机器一定比我快)
2、运行laz
运行startlazarus.exe, 首次运行会有一个提示对话,不管,直接”start IDE”
打开\examples\androidlcl\androidlcltest.lpr工程文件
3、配置工程
菜单”Project”->”Project Option..”打开工程配置
file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image002.jpgfile:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image002.jpg
点击“Librariyes” 路径设置如图一
找到第二步已经解压好的NDK目录,点击“Delete Invalid Paths”删除无效路径,
加入新路径(就是刚才你下载解压的NDK路径哦),我的是:
android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6
和
android-ndk-r9d\platforms\android-8\arch-arm\usr\lib
如图二红线圈出部分
图二、设置NDK路径
该新路径根据个人NDK版本选择有所变化
设置目标平台左下角的Config and Target 右边一定要把Target OS (默认为Linux,害我2个小时),拉选为“android”如图三红线圈出部分,否则编译时会得到如下错误:
“Fatal: cannot find unit system used by fcllaz of packageFCL"
图三、选择目标平台
4、 编译例子
“OK”确定配置后, 就可以shift + F9 等待不到一分钟后,就可以在目录:
\examples\androidlcl\android\libs\armeabi下发现编译成的liblclapp 文件,但不知为何没有扩展名, 加上.so吧,阿门!
5、 制作APK包
(1)生成Key:
修改\examples\androidlcl\android\generate_debug_key.bat 中的路径为本地正确路径
我的为:
SETPATH=D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk\tools\;D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk\platform-tools\;C:\ProgramFiles\Java\jdk1.7.0_60\bin\
SET APP_NAME=androidlcltest
SETANDROID_HOME=D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk
SETAPK_SDK_PLATFORM=D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk\platforms\android-19
SET APK_PROJECT_PATH=D:\dev\delphi\lazarus\laz4android\examples\androidlcl\android
运行时要求输入密码,记住,下次要用的
运行生成 \bin\LCLDebugKey.keystore文件
(2)、打包生成APK
用批处理文件\examples\androidlcl\android\build_debug_apk.bat ,但它调用了apkbuilder.bat 和dx.bat会引起版本不同找不到apkbuilder.jar等问题,故改用网友truetom 提供的build_debug_apk.bat,他用鸟语说该文件:
In this batch file, asyou saw , my batch file is not called apkbuilder.bat and dx.bat.
So it can used to any version of Andrid SDK
即:无版本问题,适用各种版本的SDK哦!
再次感谢鸟语鸟人网友truetom在论坛
http://forum.lazarus.freepascal.org/index.php/topic,21766.msg128485.html#msg128485中提供的build_debug_apk.bat
其中有一行:
jarsigner-verbose -keystore bin\LCLDebugKey.keystore -keypass 123456 -storepass 123456 -signedjar bin\%APP_NAME%-unaligned.apkbin\%APP_NAME%-unsigned.apk LCLDebugKey
蓝色的123456 即刚才生成Key时第(1)步generate_debug_key.bat运行时要求你输入的密码,修改到一致。
运行时可能遇到找不到dx.jar的错误:
这是版本不同路径不同造成的,比如我的在
sdk\build-tools\android-4.4.2\lib\dx.jar
把lib\dx.jar一起复制到错误提示要求的目录sdk\platform-tools\下即可。
运行大功告成后是这样的:
examples\androidlcl\android\bin路径下androidlcltest.apk赫然在目,哦,god, 这就是我们要的宝贝。1.5Mb, 如果只有21kb就是编译文件liblclapp忘了加.so,copy到手机安装吧!
(3) 上传到手机安装
上传到手机安装时,总是提示“程序未安装”错误,开始以为是版本问题,换从4.4换回2.2还是不行, 网上找了半天,说可能是未签名问题。
下载一个叫 DodoApkSign 的软件
选择examples\androidlcl\android\bin下androidlcltest-unsigned.apk然后“制作签名”, 生成的新apk文件就是最终版本了!
上传到手机,一切OK!
后记:
免费软件最大的问题就是什么都得靠摸索,沿途遇到很多问题,哪怕是一个小小的版本问题都会困扰我们很久,鄙人不才,制作这个教程花了两个周末才完成。
希望各位网友多写文章出来共享!如花写于四川大学2014.06.09