Difference between revisions of "LAMW"

From Free Pascal wiki
Jump to navigationJump to search
(Add LAMW github page link)
 
(43 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 +
{{LanguageBar}}
 +
 
{{Platform only|Android|Android|Android}}
 
{{Platform only|Android|Android|Android}}
== Note ==
 
This page comes from the previous tutorial HOW_TO_INSTALL_by_Dieselnutjob.pdf (for Windows)
 
  
Now it is a Wiki you are welcome to update it when you are sure it works and/or helps.
+
[[File:lamw_git_small_circle.png|link=https://github.com/jmpessoa/lazandroidmodulewizard|LAMW]]
  
Installation for Linux will be added later, for now you can checkout https://github.com/jmpessoa/lazandroidmodulewizard and read linux/new_how_to_install_by_renabor.txt.
+
'''LAMW''': Lazarus Android Module Wizard is a wizard to create JNI Android loadable module (.so) and Android Apk using Lazarus/Free Pascal.
  
== What is LAMW ==
 
  
This is a set of ''Lazarus wizards'' you will launch from menus Build and Tools.
+
'''Features:'''
  
It helps to set parameters, organize libraries and to run the tools required to make APK files, used to install applications on '''Android'''.
+
: Native Android GUI
 +
::: AppCompat and Material Design supported!
  
This installation includes several packages containing components useful to develop Android Programs with Lazarus, using JNI.
+
: RAD! Form designer and drag&drop component development model!
 +
::: More than 140 components!
 +
: Github Page: https://github.com/jmpessoa/lazandroidmodulewizard
  
== How to install on Windows ==
 
  
This is working on Windows 8 and 10 Home Edition 64 bits.
+
== Get Lazarus for Android ==
  
=== 1) Downloads ===
+
===Laz4Android 2.0.12 (Windows)===
  
Create folders C:\lamw and C:\lamw\projects
+
: All cross-android compilers already installed!
  
Download these files in the folder C:\lamw :
+
: arm-android/aarch64-android/i386-android/x86_64-android/jvm-android
  
[http://dl.google.com/android/android-sdk_r24.4.1-windows.zip SDK 24.4.1]
 
  
[http://dl.google.com/android/repository/android-ndk-r10e-windows-x86.zip NDK r10e]
+
; How to
  
[http://archive.apache.org/dist/ant/binaries/apache-ant-1.9.6-bin.zip Ant 1.9.6]
+
: Install * [http://sourceforge.net/projects/laz4android/files/?source=navbar Laz4Android 2.0.12]
  
[http://download.oracle.com/otn-pub/java/jdk/8u65-b14/jdk-8u65-windows-i586.exe jdk-8u65-windows-i586.exe Jdk 8u65]
+
{{Note|Install here: "C:\laz4android2.0.12"  (not "Program Files" !!!)}}
  
[https://sourceforge.net/projects/laz4android/files/laz4android1.5-50093-FPC3.1.1.7z/download Laz4Android 1.5-50093-FPC3.1.1]
+
: Install * [https://github.com/jmpessoa/lazandroidmodulewizard/archive/master.zip LAMW]
  
[[File:lamw_download.png]]
+
{{Note|Download LAMW and unzip it in some folder (ex. "C:\laz4android2.0.12\components")}}
  
Checkout with a svn client (Tortoise SVN )
+
:: Packages installations order/sequence:
  
https://github.com/jmpessoa/lazandroidmodulewizard to C:\lamw\lazandroidmodulewizard
+
::: tfpandroidbridge_pack.lpk (in "..../android_bridges" folder)
 +
::: lazandroidwizardpack.lpk (in ""..../android_wizard" folder)
 +
::: amw_ide_tools.lpk (in "..../ide_tools" folder)
  
[[File:lamw_svn_checkout_1.png]]
+
; Go to [[#Infrastructure|Infrastructure]].
  
[[File:lamw_svn_checkout_2.png]]
+
===LAMW Manager (Linux and Windows)===
  
'''Important Notes :'''
+
{{Note|All in One! LAMW Manage produces a complete Lazarus for Android environment by automating the step [[#Infrastructure|Infrastructure]]!}}
  
Versions specified here are currently working, although some of them are old and even hidden by their creator/publisher.
+
: Install * [https://github.com/dosza/LAMWManager-linux LAMW Manager Installer for Linux]
 +
: Install * [https://github.com/dosza/LAMWManager-win LAMW Manager Installer for Windows]
  
But the latest stable versions are not always compatible with the tool (NDK at least).
+
===Install LAMW using fpcupdeluxe (Linux and Windows)===
  
If a more recent stable version is found working well, please update the Wiki.  
+
:: [https://wiki.freepascal.org/LAMW_install_linux_fpcupdeluxe How to install on Linux (FPCUPdeluxe + LAMW)]
 +
:: [https://wiki.freepascal.org/LAMW_install_windows_fpcupdeluxe How to install on Windows (FPCUPdeluxe + LAMW)]
  
You may have already the kits installed somewhere else on your computer. It might lead to problems if you try to re-use them. The safer is to make new downloads in c:\lamw. Be aware to use the corresponding versions and do not use shortcuts previously installed with other versions.
+
===Do It Yourself! (Windows)===
  
=== 2) Installations ===
+
: Install * [https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2064%20bits/Lazarus%202.0.12/lazarus-2.0.12-fpc-3.2.0-win64.exe/download Lazarus 2.0.12]
  
Extract android-sdk_r24.4.1-windows.zip in c:\lamw\android-sdk-windows
+
{{Note|Install here: "C:\lazarus2.0.12"  (not "Program Files" !!!)}}
  
Extract android-ndk-r10e-windows-x86.zip in c:\lamw\android-ndk-r10e-windows-x86
+
: Install * [https://github.com/jmpessoa/lazandroidmodulewizard/archive/master.zip LAMW]
  
Extract apache-ant-1.9.6-bin.zip in c:\lamw\apache-ant-1.9.6
+
{{Note|Download LAMW and unzip it in some folder (ex. "C:\lazarus2.0.12\components")}}
  
Extract laz4android1.5-50093-FPC3.1.1.7z to C:\lamw\Laz4Android
+
:: Packages installations order/sequence:
  
Execute jdk-8u65-windows-i586.exe . It will install the JDK to C:\Program Files (x86)\Java\jdk1.8.0_65\
+
::: tfpandroidbridge_pack.lpk (in "..../android_bridges" folder)
 +
::: lazandroidwizardpack.lpk (in ""..../android_wizard" folder)
 +
::: amw_ide_tools.lpk (in "..../ide_tools" folder)
  
[[file:lamw_java_sdk_install.png]]
+
: Install * [https://gitlab.com/freepascal.org/fpc/source/-/archive/main/source-main.zip FPC source code (trunk)]
  
'''Notes :'''
+
:: Download FPC source code and unzip it in some folder and point up the source path in next step
  
Depending on the tool you use to extract zip or 7z, be sure to have not the first folder twice.
 
  
Something like c:\lamw\android-ndk-r10e-windows-x86\android-ndk-r10e-windows-x86 will lead to errors in the subsequent steps...
+
: Go to Lazarus menu "Tools" >> "[LAMW] Android Module Wizard" >> "Build FPC Cross Android"
  
=== 3) Update Java development kits ===
+
{{Note|repeat the "Build and install" process  once for each architecture}}
  
run C:\lamw\android-sdk-windows\SDK Manager.exe
+
::: (x) Armv7a + Soft (android 32 bits << tested!)
  
# deselect Android N (API 23 N Preview)
+
:::: Build
# deselect Android 6.0 (API 23)
 
# select Android SDK Platform-tools
 
# select Android SDK Build-tools
 
# select Extras/Android Support Library  [if found...]
 
# select Extras/Google USB Driver
 
# click Install 4 packages  [3 packages if Android Support Library not found]
 
# Accept license and click Install
 
# wait for downloads to finish
 
# Exit SDK Manager
 
[[file:lamw_sdk_manager_1.png]]
 
  
 +
:::: Install
  
Run C:\lamw\android-sdk-windows\SDK Manager.exe again
+
::: (x) Aarch64 (android 64 bits << tested!)
  
# deselect Android N (API 23 N Preview)
+
:::: Build
# deselect Android 6.0 (API 23)
 
# expand Android 4.2.2 (API 17)
 
# select SDK Platfrom
 
# select ARM EABI v7a System Image
 
# click Install 2 packages
 
# Accept license and click Install
 
# wait for downloads to finish
 
# Exit SDK manager
 
[[file:lamw_sdk_manager_2.png]]
 
  
=== 4) Build and prepare Laz4Android ===
+
:::: Install
  
Laz4Android is simply an instance of Lazarus.
+
{{Note|After "build" and "install" the cross-compilers and after to do  all [[#Infrastructure|Infrastructure]] go to [[#Using LAMW|Using LAMW]] and try to create your first [New] LAMW project!}}
  
From Windows, run cmd, then :
+
:If you get an error "Fatal: Cannot find unit system used by fcllaz of package FCL" when trying "Run"  >> "Build"  your project then go to "fpc.cfg"  (ex. "C:\lazarus2.0.12\fpc\3.2.0\bin") and:
  
cd \lamw\Laz4Android
+
:: '''change:'''
build.bat
 
  
[[file:lamw_cmd_laz4android_1.png]]
+
::: #searchpath for units and other system dependent things
  
[[file:lamw_cmd_laz4android_2.png]]
+
::: -FuC:\lazarus2.0.12\fpc\$FPCVERSION/units/$fpctarget
  
When finished, exit cmd mode
+
::: -FuC:\lazarus2.0.12\fpc\$FPCVERSION/units/$fpctarget/*
 +
 +
::: -FuC:\lazarus2.0.12\fpc\$FPCVERSION/units/$fpctarget/rtl
  
Create a shortcut on your desktop for C:\lamw\laz4android\startlazarus.exe
+
:: '''to:'''       
  
Execute it
+
::: #searchpath for units and other system dependent things
  
Start IDE
+
::: -FuC:\lazarus2.0.12\fpc\3.2.0/units/$fpctarget
  
Package -> Open package file (.lpk)
+
::: -FuC:\lazarus2.0.12\fpc\3.2.0/units/$fpctarget/*
 
+
select C:\lamw\lazandroidmodulewizard\trunk\tfpandroidbridge_pack.lpk
+
::: -FuC:\lazarus2.0.12\fpc\3.2.0/units/$fpctarget/rtl
  
Compile
+
         
 +
: And go to Lazarus IDE menu "Tools" >> "Options" >> "Environment" >> [FPC Source]
  
Use>> Install
+
::'''change:'''
 
 
Do you want to rebuid Lazarus now? Yes
 
 
Laz4Android will restart
 
  
Package -> Open package file (.lpk)
+
::: $(LazarusDir)fpc\$(FPCVer)\source
  
select C:\lamw\lazandroidmodulewizard\trunk\lazandroidwizardpack.lpk
+
:: '''to:'''
 +
                       
 +
::: $(LazarusDir)fpc\3.2.0\source
 +
         
  
Compile
+
==Infrastructure==
  
Use>> Install
+
{{Note|Only for non-users of LAMW Manager!}}
  
Do you want to rebuid Lazarus now? Yes
+
===Get Java JDK===
 +
: Install * [http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Java JDK 8]
  
Laz4Android will restart
+
===Get Android NDK===
 +
: Install * [https://github.com/android/ndk/wiki/Unsupported-Downloads r19c]
  
Package -> Open package file (.lpk)
+
===Get Ant builder===
 +
: Install * [http://ant.apache.org/bindownload.cgi Ant]
  
select C:\lamw\lazandroidmodulewizard\trunk\ide_tools\amw_ide_tools.lpk
+
:: Simply extract the zip file to a convenient location...
  
Compile
+
===Get Gradle builder===
 +
: Install * [https://gradle.org/next-steps/?version=6.6.1&format=bin Gradle 6.6.1]
  
Use>> Install
+
{{Note|Use the option "extract here" to produce the folder "gradle-6.6.1" in a convenient location...}}
  
Do you want to rebuid Lazarus now? Yes
+
===Get Android SDK===
 +
: Install * [https://dl.google.com/android/repository/tools_r25.2.5-windows.zip r25.2.5-windows]
  
Laz4Android will restart
+
: Install * [https://dl.google.com/android/repository/tools_r25.2.5-linux.zip r25.2.5-linux]
  
=== 5) Path settings ===
+
: Install * [https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip r25.2.5-macosx]
  
In Laz4Android :
+
; How to
  
Tools -> [LAMW] Android Module Wizard -> Path settings
+
: unpacked/install to a "sdk" folder
  
Path to Java JDK: C:\Program Files (x86)\Java\jdk1.8.0_65
+
: open a command line terminal and go to folder "sdk/tools"
Path to Ant bin: C:\lamw\apache-ant-1.9.6\bin
 
Path to Android SDK: c:\lamw\android-sdk_r24.4.1-windows
 
Path to Android NDK: C:\lamw\android-ndk-r10e
 
NDK version: 10e
 
Path to Simonsay's templates: C:\lamw\lazandroidmodulewizard\trunk\java
 
  
[[File:lamw_path_settings.png]]
+
: run the command  >> "android update sdk"  to open a GUI "SDK Manager"
  
OK.
+
:: Go to [Tools] and keep "as is"
  
File -> Restart
+
::: Android SDK Tools  (installed)
 +
::: (x) Android SDK Platform-Tools
 +
::: (x) Android SDK Build-Tools 29.0.3 (and others more recent)
  
=== 6) Create your first project ===
+
:: Go to [Android R] and uncheck all!
  
In Laz4Android :
+
:: Go to [Android 10 API 29] uncheck all and check only
  
Project -> Close project  [if necessary]
+
::: (x)SDK Platform
  
Project Wizard -> New project
+
:: Go to [Extras] and check:
  
Select JNI Android Module [Lamw GUI]
+
::: (x)Android Support Repository
  
OK
+
::: (x)Google USB Drive (Windows only...)
ar
 
[[file:lamw_create_new_project.png]]
 
  
Path to Workspace [Projects Folder]: C:\lamw\projects
+
::: (x)Google Repository
New Project Name: LamwGUIProject1
 
Default Package Name: org.lamw
 
Include "android-support-v4.jar": no
 
NDKPlatfom: 17
 
MinSdkAPI: 17
 
TargetSdkApi: 17
 
Instruction: ARMv7a
 
ARM Fpu: Soft
 
Android Theme: DeviceDefault
 
  
[[File:lamw_configure_project.png]]
+
::: (x)Google Play Services
  
Save unit1.pas
+
:: [Install 7 package!]
  
Click ''Save''
 
  
Now, if you hover the mouse over any unit in uses clause, IDE will show an error message.
+
==Using LAMW==
  
File -> Restart
+
===Configure Paths===
  
After restart, if you hover the mouse over any unit in uses clause, IDE does not show error message anymore
+
: Lazarus IDE menu "Tools" >> "[LAMW] Android Module Wizard" >>  "Paths Settings ..."
 +
 
 +
{{Note|MacOs: path to Java JDK auto setting!}}
  
Drag from Android Bridge a ''jButton'' onto form
+
===Create and Run your first Android Apk===
  
Events OnClick, double click and add :
+
; How to
  
procedure TAndroidModule1.jButton1Click(Sender: TObject);
+
: From Lazarus IDE select "Project" >> "New Project"
begin
 
ShowMessage('Hello World');
 
end;
 
  
File -> Save All
+
: From displayed dialog select "[LAMW] GUI Android Module" and "Ok"
  
Run -> Build
+
: Fill the form/dialog fields and "Ok"
  
Target: C:\lamw\projects\LamwGUIProject1\libs\armeabi\libcontrol.so: Success
+
{{Note|Path to Workspace" is your projects folder}}
  
''Note 1 : this Build step is not required, because it will be executed by the next one. However it can help to diagnose an issue.''
+
{{Note|Accept "default" options! (but pay attention to the * signage)}}
  
''Note 2 : Before next step, check your Android device is connected to the PC with an USB cable.''
+
: "Save"  unit1 as/where suggested
  
Run -> [Lamw] Build APK and run
+
{{Note|Search your project folder... you will find many treasures there! (look for lazarus project in ".../jni" folder)}}
 +
 
 +
: From Lazarus IDE select "Run" >> "Build"
  
Building APK...: Success
+
:: '''Success!''' Your system is up to produce your first Android Apk!
  
if ADB is working with your phone, the APK will then be copied, installed and run automatically !
 
  
Otherwise, copy C:\lamw\projects\LamwGUIProject1\bin\LamwGUIProject1-debug.apk to some folder of the Android device, and install this file using the device file manager.
+
: Configure your phone device to [https://developer.android.com/studio/debug/dev-options debug mode] and plug it to the computer usb port
  
=== Other demos ===
 
  
In C:\lamw\trunk\demos\Eclipse, you will find a lot of projects to help you with the available functionalities.
+
: From Lazarus IDE select "Run" >> "[LAMW] Build Apk and Run"
  
You have to :
+
:: '''Congratulations!''' You are now an Android Developer!
  
# Open the project file <project_name>/jni/controls.lpi
+
==Other references==
# Goto project options and change NDK paths according your installation
 
# Project, Options, LAMW Project configuration and check the Target SDK API which must be the same installed above.
 
# Run, Build the project. As the Hello World above, it should copy, install and run the application on the Android device.
 
# Try it !
 
  
Many demos are not really working on any Android devices... Hope this will be fixed !
+
[https://github.com/jmpessoa/lazandroidmodulewizard/blob/master/docs/AppHelloWorld.md Tutorial: My First "Hello Word" App]
  
[[category:Android]]
+
[[Category:Lazarus]]
 +
[[Category:Android]]

Latest revision as of 01:29, 23 May 2023

English (en) polski (pl) русский (ru)

Android robot.svg

This article applies to Android only.

See also: Multiplatform Programming Guide

LAMW

LAMW: Lazarus Android Module Wizard is a wizard to create JNI Android loadable module (.so) and Android Apk using Lazarus/Free Pascal.


Features:

Native Android GUI
AppCompat and Material Design supported!
RAD! Form designer and drag&drop component development model!
More than 140 components!
Github Page: https://github.com/jmpessoa/lazandroidmodulewizard


Get Lazarus for Android

Laz4Android 2.0.12 (Windows)

All cross-android compilers already installed!
arm-android/aarch64-android/i386-android/x86_64-android/jvm-android


How to
Install * Laz4Android 2.0.12
Light bulb  Note: Install here: "C:\laz4android2.0.12" (not "Program Files" !!!)
Install * LAMW
Light bulb  Note: Download LAMW and unzip it in some folder (ex. "C:\laz4android2.0.12\components")
Packages installations order/sequence:
tfpandroidbridge_pack.lpk (in "..../android_bridges" folder)
lazandroidwizardpack.lpk (in ""..../android_wizard" folder)
amw_ide_tools.lpk (in "..../ide_tools" folder)
Go to Infrastructure.

LAMW Manager (Linux and Windows)

Light bulb  Note: All in One! LAMW Manage produces a complete Lazarus for Android environment by automating the step Infrastructure!
Install * LAMW Manager Installer for Linux
Install * LAMW Manager Installer for Windows

Install LAMW using fpcupdeluxe (Linux and Windows)

How to install on Linux (FPCUPdeluxe + LAMW)
How to install on Windows (FPCUPdeluxe + LAMW)

Do It Yourself! (Windows)

Install * Lazarus 2.0.12
Light bulb  Note: Install here: "C:\lazarus2.0.12" (not "Program Files" !!!)
Install * LAMW
Light bulb  Note: Download LAMW and unzip it in some folder (ex. "C:\lazarus2.0.12\components")
Packages installations order/sequence:
tfpandroidbridge_pack.lpk (in "..../android_bridges" folder)
lazandroidwizardpack.lpk (in ""..../android_wizard" folder)
amw_ide_tools.lpk (in "..../ide_tools" folder)
Install * FPC source code (trunk)
Download FPC source code and unzip it in some folder and point up the source path in next step


Go to Lazarus menu "Tools" >> "[LAMW] Android Module Wizard" >> "Build FPC Cross Android"
Light bulb  Note: repeat the "Build and install" process once for each architecture
(x) Armv7a + Soft (android 32 bits << tested!)
Build
Install
(x) Aarch64 (android 64 bits << tested!)
Build
Install
Light bulb  Note: After "build" and "install" the cross-compilers and after to do all Infrastructure go to Using LAMW and try to create your first [New] LAMW project!
If you get an error "Fatal: Cannot find unit system used by fcllaz of package FCL" when trying "Run" >> "Build" your project then go to "fpc.cfg" (ex. "C:\lazarus2.0.12\fpc\3.2.0\bin") and:
change:
#searchpath for units and other system dependent things
-FuC:\lazarus2.0.12\fpc\$FPCVERSION/units/$fpctarget
-FuC:\lazarus2.0.12\fpc\$FPCVERSION/units/$fpctarget/*
-FuC:\lazarus2.0.12\fpc\$FPCVERSION/units/$fpctarget/rtl
to:
#searchpath for units and other system dependent things
-FuC:\lazarus2.0.12\fpc\3.2.0/units/$fpctarget
-FuC:\lazarus2.0.12\fpc\3.2.0/units/$fpctarget/*
-FuC:\lazarus2.0.12\fpc\3.2.0/units/$fpctarget/rtl


And go to Lazarus IDE menu "Tools" >> "Options" >> "Environment" >> [FPC Source]
change:
$(LazarusDir)fpc\$(FPCVer)\source
to:
$(LazarusDir)fpc\3.2.0\source


Infrastructure

Light bulb  Note: Only for non-users of LAMW Manager!

Get Java JDK

Install * Java JDK 8

Get Android NDK

Install * r19c

Get Ant builder

Install * Ant
Simply extract the zip file to a convenient location...

Get Gradle builder

Install * Gradle 6.6.1
Light bulb  Note: Use the option "extract here" to produce the folder "gradle-6.6.1" in a convenient location...

Get Android SDK

Install * r25.2.5-windows
Install * r25.2.5-linux
Install * r25.2.5-macosx
How to
unpacked/install to a "sdk" folder
open a command line terminal and go to folder "sdk/tools"
run the command >> "android update sdk" to open a GUI "SDK Manager"
Go to [Tools] and keep "as is"
Android SDK Tools (installed)
(x) Android SDK Platform-Tools
(x) Android SDK Build-Tools 29.0.3 (and others more recent)
Go to [Android R] and uncheck all!
Go to [Android 10 API 29] uncheck all and check only
(x)SDK Platform
Go to [Extras] and check:
(x)Android Support Repository
(x)Google USB Drive (Windows only...)
(x)Google Repository
(x)Google Play Services
[Install 7 package!]


Using LAMW

Configure Paths

Lazarus IDE menu "Tools" >> "[LAMW] Android Module Wizard" >> "Paths Settings ..."
Light bulb  Note: MacOs: path to Java JDK auto setting!

Create and Run your first Android Apk

How to
From Lazarus IDE select "Project" >> "New Project"
From displayed dialog select "[LAMW] GUI Android Module" and "Ok"
Fill the form/dialog fields and "Ok"
Light bulb  Note: Path to Workspace" is your projects folder
Light bulb  Note: Accept "default" options! (but pay attention to the * signage)
"Save" unit1 as/where suggested
Light bulb  Note: Search your project folder... you will find many treasures there! (look for lazarus project in ".../jni" folder)
From Lazarus IDE select "Run" >> "Build"
Success! Your system is up to produce your first Android Apk!


Configure your phone device to debug mode and plug it to the computer usb port


From Lazarus IDE select "Run" >> "[LAMW] Build Apk and Run"
Congratulations! You are now an Android Developer!

Other references

Tutorial: My First "Hello Word" App