Difference between revisions of "LAMW install windows fpcupdeluxe"
From Lazarus wiki
Jump to navigationJump to searchWayneSherman (talk | contribs) (Created page with "==Install [https://wiki.freepascal.org/LAMW LAMW] and Android Development Environment on Windows using [https://wiki.freepascal.org/fpcupdeluxe fpcupdeluxe]== '''2023-Feb-05...") |
WayneSherman (talk | contribs) |
||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | ==Install | + | ==Install LAMW and Android Development Environment on Windows using [https://wiki.freepascal.org/fpcupdeluxe fpcupdeluxe]== |
+ | ;See also: | ||
+ | Forum Post: https://forum.lazarus.freepascal.org/index.php?topic=59226 | ||
+ | For Linux How-To see here: https://wiki.freepascal.org/LAMW_install_linux_fpcupdeluxe | ||
− | + | https://wiki.freepascal.org/LAMW | |
+ | https://wiki.freepascal.org/fpcupdeluxe | ||
− | + | As of 2023-Feb-06, this error is still happening: | |
− | + | https://forum.lazarus.freepascal.org/index.php/topic,21919.msg441567.html#msg441567 | |
− | |||
− | |||
;Motivation | ;Motivation | ||
− | + | Needed simple instructions to get an up-to-date Android build environment setup on Windows. | |
− | + | (installs and runs as a user, no admin privileges are needed) | |
− | + | Thanks to other developers for sharing their hard work, utilities, and helpful information. | |
− | Thanks to other developers for sharing their hard work, utilities, and helpful information. | ||
− | |||
;Everything is self-contained under the "$BASE\android" folder | ;Everything is self-contained under the "$BASE\android" folder | ||
− | + | ($BASE defaults to the user's home folder) | |
− | + | $BASE\android\sdk (android sdk and build tools) | |
− | + | $BASE\android\sdk\ndk-bundle (android ndk) | |
− | + | $BASE\android\fpcupdeluxe_app (FPCUPdeluxe installer) | |
− | + | $BASE\android\projects (default LAMW projects folder) | |
− | + | $BASE\android\fpc-lazarus (FPC, Lazarus built w/ LAMW) | |
− | + | $BASE\android\fpc-lazarus\ccr\lamw (LAMW files) | |
− | + | $BASE\android\fpc-lazarus\ccr\lamw-gradle (gradle build tool) | |
− | + | $BASE\android\fpc-lazarus\ccr\lamw\demos (LAMW demo projects) | |
;Versions Tested | ;Versions Tested | ||
Line 42: | Line 42: | ||
64-bit CPU Target: Aarch64 (this always uses hardware floating point) | 64-bit CPU Target: Aarch64 (this always uses hardware floating point) | ||
+ | == Main steps begin here == | ||
+ | <nowiki> | ||
Run these commands in a non-admin powershell console. I recommend running these | Run these commands in a non-admin powershell console. I recommend running these | ||
− | one at a time so you can verify the results before moving on to the next step. | + | one at a time so you can verify the results before moving on to the next step.</nowiki> |
+ | |||
+ | <syntaxhighlight lang="powershell"> | ||
+ | # (powershell code) | ||
+ | # Setup Android Development Environment on Windows (FPCUPdeluxe / LAMW) | ||
+ | # Tested on Windows 10 Pro 22H2 64-bit | ||
+ | # Targets: 32-bit ARMv7a and 64-bit Aarch64 | ||
+ | # 2023-Feb-05 ver 0.7 | ||
+ | |||
+ | $BASE = "$HOME" #change this if you want to install to a different location | ||
+ | $ProgressPreference = 'SilentlyContinue' # hide progress for faster downloads | ||
+ | $PSDefaultParameterValues=@{'out-file:encoding'='ascii'} #set text redirection to file as ascii | ||
+ | |||
+ | # Install OpenJDK | ||
+ | # https://docs.microsoft.com/en-us/java/openjdk/download | ||
+ | md "$BASE\android" | ||
+ | cd "$BASE\android" | ||
+ | Invoke-WebRequest "https://aka.ms/download-jdk/microsoft-jdk-11.0.18-windows-x64.zip" -OutFile "microsoft-jdk-Win-x64.zip" | ||
+ | Expand-Archive "microsoft-jdk-Win-x64.zip" ".\" | ||
+ | del "microsoft-jdk-Win-x64.zip" | ||
+ | |||
+ | # Setup java environment for current process | ||
+ | ${env:JAVA_HOME} = "$BASE\android\jdk-11.0.18+10" | ||
+ | ${env:Path} = "${env:JAVA_HOME}\bin;" + ${env:Path} | ||
+ | |||
+ | # Setup java environment for current user | ||
+ | # (this makes it persistent across reboots) | ||
+ | [Environment]::SetEnvironmentVariable("JAVA_HOME", "${env:JAVA_HOME}", "User") | ||
+ | $UserPath = "${env:JAVA_HOME}\bin;" + [Environment]::GetEnvironmentVariable("Path", "User") | ||
+ | [Environment]::SetEnvironmentVariable("Path", $UserPath, "User") | ||
+ | |||
+ | # Download and extract Android SDK Command Line Tools for Windows | ||
+ | # https://developer.android.com/studio/#downloads | ||
+ | md "$BASE\android\sdk\cmdline-tools" | ||
+ | cd "$BASE\android\sdk\cmdline-tools" | ||
+ | Invoke-WebRequest "https://dl.google.com/android/repository/commandlinetools-win-9477386_latest.zip" -OutFile "commandlinetools-win.zip" | ||
+ | Expand-Archive "commandlinetools-win.zip" ".\" | ||
+ | ren "cmdline-tools" "latest" | ||
+ | del "commandlinetools-win.zip" | ||
+ | |||
+ | # Install SDK packages and NDK | ||
+ | cd "$BASE\android\sdk\cmdline-tools/latest/bin" | ||
+ | @('y','y','y','y','y','y','y','y','y','y') | ./sdkmanager --licenses | ||
+ | # (Note: to view a list of available packages use .\sdkmanager --list) | ||
+ | .\sdkmanager "platforms;android-31" "build-tools;31.0.0" "tools" "ndk;22.1.7171670" "extras;android;m2repository" | ||
+ | |||
+ | # Download FPCUPdeluxe from https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/latest | ||
+ | # (tested with version 2.2.0n) | ||
+ | md "$BASE\android\fpcupdeluxe_app" | ||
+ | cd "$BASE\android\fpcupdeluxe_app" | ||
+ | Invoke-WebRequest "https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/download/v2.2.0n/fpcupdeluxe-x86_64-win64.exe" -OutFile "fpcupdeluxe-x86_64-win64.exe" | ||
+ | "[General]" > fpcupdeluxe.ini | ||
+ | "InstallDirectory=$BASE\android\fpc-lazarus" >> fpcupdeluxe.ini | ||
+ | .\fpcupdeluxe-x86_64-win64.exe | ||
+ | |||
+ | # Using the FPCUPdeluxe GUI | ||
+ | # (The install path is already set. e.g. c:\users\[your_user]\android\fpc-lazarus) | ||
+ | # | ||
+ | # 1) At the bottom of the main Window, click the "LAMW" button | ||
+ | # | ||
+ | # As of 2023-Feb-05, this installs stable FPC (3.2.2), stable Lazarus (v2.2.4), cross | ||
+ | # compilers for arm/android and aarch64/android, gradle v6.8.3, and latest LAMW from git. | ||
+ | # | ||
+ | # 2) (Optional) On modules tab click the "OPM" button to install Online Package Manager. | ||
+ | # 3) Close FPCUPdeluxe | ||
+ | |||
+ | # Change name for the desktop shortcut | ||
+ | # (this works if $BASE = $HOME, otherwise rename the desktop shortcut manually) | ||
+ | ren "$BASE\Desktop\Lazarus_fpc-lazarus.lnk" "Lazarus LAMW.lnk" | ||
+ | |||
+ | # Create a directory for android projects | ||
+ | md "$BASE\android\projects" | ||
+ | |||
+ | # Edit LAMW settings via the ini file | ||
+ | $LAMWini="$BASE\android\fpc-lazarus\config_lazarus\LAMW.ini" | ||
+ | (Get-Content $LAMWini | Select-String -pattern "PathToWorkspace" -notmatch) | Set-Content $LAMWini | ||
+ | "PathToWorkspace=$BASE\android\projects" >> $LAMWini | ||
+ | "PathToAndroidSDK=$BASE\android\sdk" >> $LAMWini | ||
+ | "PathToAndroidNDK=$BASE\android\sdk\ndk\22.1.7171670" >> $LAMWini | ||
+ | "NDK=6" >> $LAMWini | ||
+ | |||
+ | # After launching Lazarus-LAMW, you can confirm paths and settings in | ||
+ | # the Tools | [LAMW] Android Module Wizard | Path Settings menu | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ;For new LAMW projects | ||
+ | for 32-bit: ARMv7a + VFPv3 for Architecture/Instructions | ||
+ | for 64-bit: Aarch64 for Architecture/Instructions | ||
+ | Min. Device API: 19 (Google recommended minimum SDK version) | ||
+ | See here: https://android-developers.googleblog.com/2021/07/google-play-services-discontinuing-jelly-bean.html | ||
+ | |||
+ | ;For demo LAMW projects | ||
+ | (Project | Open Project) Open the controls.lpi file in the demo project jni folder | ||
+ | If it asks for a Target API change enter 31 for the target. | ||
+ | for 32-bit: Change LAMW project options | Min SDK: 19 and Build tab | Chipset: ARMv7a+VFPv3 | ||
+ | for 64-bit: Change LAMW project options | Min SDK: 19 and Build tab | Chipset: Aarch64 | ||
+ | Perform a Run | Clean up and Build | ||
+ | |||
+ | ;Changes | ||
+ | 2023-Feb-05 ver 0.7 | ||
+ | Use $BASE for installation directory (defaults to $HOME) | ||
+ | Tested on Win10 Pro 22H2 64-bit | ||
+ | Android Command-Line Tools for Linux build 9477386 | ||
+ | OpenJDK 11.0.18 LTS (Microsoft's build) | ||
+ | Gradle 6.8.3 (installed automatically by FPCUPdeluxe) | ||
+ | FPCUPdeluxe ver 2.2.0n | ||
+ | Lazarus stable v2.2.4 | ||
+ | |||
+ | 2022-May-01 ver 0.6 - Initial release | ||
+ | Tested on Win10 Pro 21H2 64-bit | ||
+ | Android Command-Line Tools for Linux build 8092744 | ||
+ | OpenJDK 11.0.14 LTS (Microsoft's build) | ||
+ | Gradle 7.3.1 (installed automatically by FPCUPdeluxe) | ||
+ | FPCUPdeluxe ver 2.2.0i | ||
+ | FPC stable v3.2.2 | ||
+ | Lazarus stable v2.2.0 |
Latest revision as of 03:33, 7 February 2023
Install LAMW and Android Development Environment on Windows using fpcupdeluxe
- See also
Forum Post: https://forum.lazarus.freepascal.org/index.php?topic=59226 For Linux How-To see here: https://wiki.freepascal.org/LAMW_install_linux_fpcupdeluxe
https://wiki.freepascal.org/LAMW https://wiki.freepascal.org/fpcupdeluxe
As of 2023-Feb-06, this error is still happening: https://forum.lazarus.freepascal.org/index.php/topic,21919.msg441567.html#msg441567
- Motivation
Needed simple instructions to get an up-to-date Android build environment setup on Windows. (installs and runs as a user, no admin privileges are needed) Thanks to other developers for sharing their hard work, utilities, and helpful information.
- Everything is self-contained under the "$BASE\android" folder
($BASE defaults to the user's home folder) $BASE\android\sdk (android sdk and build tools) $BASE\android\sdk\ndk-bundle (android ndk) $BASE\android\fpcupdeluxe_app (FPCUPdeluxe installer) $BASE\android\projects (default LAMW projects folder) $BASE\android\fpc-lazarus (FPC, Lazarus built w/ LAMW) $BASE\android\fpc-lazarus\ccr\lamw (LAMW files) $BASE\android\fpc-lazarus\ccr\lamw-gradle (gradle build tool) $BASE\android\fpc-lazarus\ccr\lamw\demos (LAMW demo projects)
- Versions Tested
Windows 10 Pro 22H2 64-bit with latest updates installed Android Command-Line Tools for Linux build 9477386 OpenJDK 11.0.18 LTS (Microsoft's build) Android SDK/API Level 31 (Android 12) Android NDK revision 22 Gradle 6.8.3 (installed automatically by FPCUPdeluxe) FPCUPdeluxe ver 2.2.0n FPC stable v3.2.2 Lazarus stable v2.2.4 32-bit CPU Target: ARMv7a + VFPv3 (hardware floating point) 64-bit CPU Target: Aarch64 (this always uses hardware floating point)
Main steps begin here
Run these commands in a non-admin powershell console. I recommend running these one at a time so you can verify the results before moving on to the next step.
# (powershell code)
# Setup Android Development Environment on Windows (FPCUPdeluxe / LAMW)
# Tested on Windows 10 Pro 22H2 64-bit
# Targets: 32-bit ARMv7a and 64-bit Aarch64
# 2023-Feb-05 ver 0.7
$BASE = "$HOME" #change this if you want to install to a different location
$ProgressPreference = 'SilentlyContinue' # hide progress for faster downloads
$PSDefaultParameterValues=@{'out-file:encoding'='ascii'} #set text redirection to file as ascii
# Install OpenJDK
# https://docs.microsoft.com/en-us/java/openjdk/download
md "$BASE\android"
cd "$BASE\android"
Invoke-WebRequest "https://aka.ms/download-jdk/microsoft-jdk-11.0.18-windows-x64.zip" -OutFile "microsoft-jdk-Win-x64.zip"
Expand-Archive "microsoft-jdk-Win-x64.zip" ".\"
del "microsoft-jdk-Win-x64.zip"
# Setup java environment for current process
${env:JAVA_HOME} = "$BASE\android\jdk-11.0.18+10"
${env:Path} = "${env:JAVA_HOME}\bin;" + ${env:Path}
# Setup java environment for current user
# (this makes it persistent across reboots)
[Environment]::SetEnvironmentVariable("JAVA_HOME", "${env:JAVA_HOME}", "User")
$UserPath = "${env:JAVA_HOME}\bin;" + [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", $UserPath, "User")
# Download and extract Android SDK Command Line Tools for Windows
# https://developer.android.com/studio/#downloads
md "$BASE\android\sdk\cmdline-tools"
cd "$BASE\android\sdk\cmdline-tools"
Invoke-WebRequest "https://dl.google.com/android/repository/commandlinetools-win-9477386_latest.zip" -OutFile "commandlinetools-win.zip"
Expand-Archive "commandlinetools-win.zip" ".\"
ren "cmdline-tools" "latest"
del "commandlinetools-win.zip"
# Install SDK packages and NDK
cd "$BASE\android\sdk\cmdline-tools/latest/bin"
@('y','y','y','y','y','y','y','y','y','y') | ./sdkmanager --licenses
# (Note: to view a list of available packages use .\sdkmanager --list)
.\sdkmanager "platforms;android-31" "build-tools;31.0.0" "tools" "ndk;22.1.7171670" "extras;android;m2repository"
# Download FPCUPdeluxe from https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/latest
# (tested with version 2.2.0n)
md "$BASE\android\fpcupdeluxe_app"
cd "$BASE\android\fpcupdeluxe_app"
Invoke-WebRequest "https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases/download/v2.2.0n/fpcupdeluxe-x86_64-win64.exe" -OutFile "fpcupdeluxe-x86_64-win64.exe"
"[General]" > fpcupdeluxe.ini
"InstallDirectory=$BASE\android\fpc-lazarus" >> fpcupdeluxe.ini
.\fpcupdeluxe-x86_64-win64.exe
# Using the FPCUPdeluxe GUI
# (The install path is already set. e.g. c:\users\[your_user]\android\fpc-lazarus)
#
# 1) At the bottom of the main Window, click the "LAMW" button
#
# As of 2023-Feb-05, this installs stable FPC (3.2.2), stable Lazarus (v2.2.4), cross
# compilers for arm/android and aarch64/android, gradle v6.8.3, and latest LAMW from git.
#
# 2) (Optional) On modules tab click the "OPM" button to install Online Package Manager.
# 3) Close FPCUPdeluxe
# Change name for the desktop shortcut
# (this works if $BASE = $HOME, otherwise rename the desktop shortcut manually)
ren "$BASE\Desktop\Lazarus_fpc-lazarus.lnk" "Lazarus LAMW.lnk"
# Create a directory for android projects
md "$BASE\android\projects"
# Edit LAMW settings via the ini file
$LAMWini="$BASE\android\fpc-lazarus\config_lazarus\LAMW.ini"
(Get-Content $LAMWini | Select-String -pattern "PathToWorkspace" -notmatch) | Set-Content $LAMWini
"PathToWorkspace=$BASE\android\projects" >> $LAMWini
"PathToAndroidSDK=$BASE\android\sdk" >> $LAMWini
"PathToAndroidNDK=$BASE\android\sdk\ndk\22.1.7171670" >> $LAMWini
"NDK=6" >> $LAMWini
# After launching Lazarus-LAMW, you can confirm paths and settings in
# the Tools | [LAMW] Android Module Wizard | Path Settings menu
- For new LAMW projects
for 32-bit: ARMv7a + VFPv3 for Architecture/Instructions for 64-bit: Aarch64 for Architecture/Instructions Min. Device API: 19 (Google recommended minimum SDK version) See here: https://android-developers.googleblog.com/2021/07/google-play-services-discontinuing-jelly-bean.html
- For demo LAMW projects
(Project | Open Project) Open the controls.lpi file in the demo project jni folder If it asks for a Target API change enter 31 for the target. for 32-bit: Change LAMW project options | Min SDK: 19 and Build tab | Chipset: ARMv7a+VFPv3 for 64-bit: Change LAMW project options | Min SDK: 19 and Build tab | Chipset: Aarch64 Perform a Run | Clean up and Build
- Changes
2023-Feb-05 ver 0.7 Use $BASE for installation directory (defaults to $HOME) Tested on Win10 Pro 22H2 64-bit Android Command-Line Tools for Linux build 9477386 OpenJDK 11.0.18 LTS (Microsoft's build) Gradle 6.8.3 (installed automatically by FPCUPdeluxe) FPCUPdeluxe ver 2.2.0n Lazarus stable v2.2.4
2022-May-01 ver 0.6 - Initial release Tested on Win10 Pro 21H2 64-bit Android Command-Line Tools for Linux build 8092744 OpenJDK 11.0.14 LTS (Microsoft's build) Gradle 7.3.1 (installed automatically by FPCUPdeluxe) FPCUPdeluxe ver 2.2.0i FPC stable v3.2.2 Lazarus stable v2.2.0