<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=CS link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>The majority of Lazarus developers will very probably prefer Android apps development by using LAMW for many reasons. Core elite programmers, who are concentrated around this project are doing their best to bring their own high wquality form designer. Android APIS are specially called by using their preprepared .pas sources so developer do not have to wory about direct communications with Android Api functions. In fact, programmer do not directly work with Android Pascal Android Api header files.</p><p class=MsoNormal>Project is being developer very fast and there are more and more preprepared examples.</p><p class=MsoNormal>App is based on JNI Android build in approach. The most important parts of Pascal app is being directly translated to The machine code by using ARM assembler. Android NDK tools are doing its best to prepare native .so library, which run perfectly on many devices. Because resulting project is being translated to machine processor code, it run very fast. As A result, resulting apps can be complex such as video or audio editor. Because routines will work really by using machine code. No Java virtuál machines.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Next important fact is, that resulting GUI is very Accessible for screen readers users. </p><p class=MsoNormal>But I do not want to talk about Lamw project. I would like to introduce two other projects, which can be used to create Android app by using Free Pascal compiler.</p><p class=MsoNormal>It is Pandroid and Java VCL.</p><p class=MsoNormal>Pandroid have been made in two forms. As A Linux bundle or as A Windows package.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here is Linux bundle.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://github.com/zeljkoc/pandroid</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>And here is its Windows bundle compatible with Lazarus for Windows.</p><p class=MsoNormal><a href="https://github.com/zeljkoc/PandroidPackage">https://github.com/zeljkoc/PandroidPackage</a></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Both forms of Pandroid bundles can produce .dex files generated from .class files. And it is even possible to incorporate support for native .so library creation. The advantage of Pandroid is its simple programmers design. Programmer do not have to combine .xml GUI layout files with .pas or .lpr sources. XMl attributes can be added to The .lpr or .pas files. Programmer do not have to type Hexadecimal constants to allow GUi to be created by using .xml layout related files.</p><p class=MsoNormal>This project is also unique, because it support many versions of Android API Pascal header files. So programmer work really with Android APIS. Developer can or do not have to use DI or Pixel coordinates to specify every object on screen. Resulted apps are stable and fully compatible with Android screen readers based on build in Explore by touch Android systém service. Pandroid have been made by The way, so programmers can call Android API functions without complex issue. No error messages from FPCJVM run-time library occurs when calling Api functions.</p><p class=MsoNormal>Programmer can compile to Android 29 API version so resulting apps can be safely published on Google Play store.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Linux form of The bundle contain usbserial.pas API headersto communicate with USB connected devices, if Android device support USB on The go. Warning! Kernel must support The device which you would like to connect. There is even possibility to communicate with Bluetooth devices.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Warning! If you would like to test all samples which are build in to Linux form of The Pandroid Bundle by using newer than Android R15 header files, may be that you will occur some issue.</p><p class=MsoNormal>But AndroidR29 targets are really working. I Am not getting error message from Google Play protect app. Pandroid allow flexible programming. .lfm forms can be also used.</p><p class=MsoNormal>If you will be publishing to The Play store, try to do yours best to use SDK manager to INSTALL The latest version of Android29 Platform. Because even Android Platform versions can be updated and it can contain important security updates. So use SDK manager to do that. Do not use bundled Android Platform version as A build target, because Google Play will refuse yours app and devices which will be using this app by isntall it outside The Play store will display warning. App can run, but warning can make users to be afraid because of this message.</p><p class=MsoNormal>If you will try to use AndroidR29 Pascal Api header files, you will get errors when building some code, which create GUi and overide word is presented. Unfortunately, my brain is too stupid to find out Why is it so. But AndroidR25 APIS contain enough new functions. You can use newest API headers ir you do not want to create GUI.</p><p class=MsoNormal>Or there is may be other stratégy to overcome this issue.</p><p class=MsoNormal>Pandroid also contain Mysql databases support. Bundle is stable and usable for professional work, ecause its authos is using it actively to develop apps for big company. And his apps are perfectly working every day for many workers of this company.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>javavcl</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This older bundle have been primarily created to allow users to use Object pascal to create fully Accessible and fully functioning Java .jar compiled apps. Resulting apps are fully compatible with screen readers, so bundle is ideal for all programmers, who do not love Java and who would like to create .jar files by using Windows.</p><p class=MsoNormal>Bundle contain also Lovecalc Android app, which showsThe technique to create Android app. Unfortunately, my brain have been too stupid to find out, how to call Android API functions from this bundle. It must be possible, but I could not find out how to do that even when I have studied included source files which should call API functions. The advantage of this bundle if its support for procedural file based operations such as blockread and blockwrite, rewrite and read commands. As A result, package can be also used to create various file operations based apps.</p><p class=MsoNormal>Unfortunately, GUI of The resulting app can not be created so simple like when Pandroid is being used. Every object must be strictly declared in source and procedure click commands must be used to detect click on every button.</p><p class=MsoNormal>Bundle contain The imitation of Borland Delphi VCL unit, but not all Android supported GUI objects have been created, unfortunately. Coordinates for objects can be created or do not have to be created. Run-time library is very friendly and if AN run-time error occurs, Android running app shows dialog with The error.</p><p class=MsoNormal>I have tried to call Android Media player Api functions from javavcl bundle, but I have got many error messages but no working code. So I have migrated to Pandroid instead. Also because There is newer building tools available, support for .bass.so native library and there are even support for Exoplayer, Bluetooth, ETC.</p><p class=MsoNormal>GUi can be created much more easier. Android Api functions can be called much more easier.But may be, that somebody advanced here could also know, how to call Api functions even from javavcl bundle.</p></div></body></html>