Harbour+Android(Flutter+Dart) 2025

353 views
Skip to first unread message

alex;

unread,
Aug 9, 2025, 6:31:24 AMAug 9
to Harbour Users
Hi. That's good news for me. Did I complete it?"Hello from Harbour" in the Flutter window on your Android phone. The gpt-5 project helped me put together, the only thing I don't like allow-multiple-definition in   Makefile 
#Makefile LIBS := $(wildcard c:/harbour_droid/lib/*.a)

libharbour.so:
clang --target=aarch64-linux-androideabi24 -fPIC --sysroot=C:/Android/Sdk/ndk/29.0.13846066/toolchains/llvm/prebuilt/windows-x86_64/sysroot \
-shared \
-o $@ \
-Wl,--whole-archive -Wl,--allow-multiple-definition $(LIBS) -Wl,--no-whole-archive \
-llog -landroid WBR alex;

alex;

unread,
Aug 9, 2025, 6:49:40 AMAug 9
to Harbour Users
ScreenShot

суббота, 9 августа 2025 г. в 13:31:24 UTC+3, alex;:
WhatsApp Image 2025-08-09 at 13.46.39_9d5b072e.jpg

alex;

unread,
Aug 9, 2025, 6:20:24 PMAug 9
to Harbour Users
sample scripts to make for Android arm64
--setenv.bat--
@set ANDROID_HOME=c:\Android\sdk
@set BUILD_TOOLS=%ANDROID_HOME%\build-tools\36.0.0
@set NDK_HOME=%ANDROID_HOME%\ndk\29.0.13846066
@set JAVA_HOME=C:\PROGRA~1\java\jdk-24

@set NDK_PLATFORM=android-24
@set NDK_TARGET=aarch64

@set ADB=%ANDROID_HOME%\platform-tools\adb.exe

--make_x64.cmd--
CHCP 1251

SET OLD_PATH=%PATH%


SET HB_PLATFORM=android
SET HB_COMPILER=clang
#SET HB_CCPREFIX=llvm-
SET CPU=aarch64
SET HB_CPU=arm64
SET HB_HOST_CPU=x86_64

rem cd c:\dev\HB\harbour_flutter_demo\scripts\harbour-core\
call setenv.bat

set PATH=%PATH%;%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\bin\;%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\;%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\aarch64-linux-androideabi\
SET HB_HOST_INC=%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\ -I%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\aarch64-linux-androideabi\ -Ic:\dev\HB\harbour_flutter_demo\scripts\harbour-core\include

set HB_BUILD_3RDEXT=no
set HB_BUILD_DYN=no
set HB_BUILD_CONTRIB_DYN=no

SET HB_USER_DFLAGS=--target=aarch64-linux-androideabi24
SET HB_USER_LDFLAGS=--target=aarch64-linux-androideabi24
SET HB_USER_CFLAGS=-fPIC --target=aarch64-linux-androideabi24 --sysroot=C:/Android/Sdk/ndk/29.0.13846066/toolchains/llvm/prebuilt/windows-x86_64/sysroot


win-make.exe clean > log.txt

pause

set HB_INSTALL_PREFIX=c:\harbour_droid

win-make install > log_install.txt

pause

win-make libharbour.so > log_libharbour.so.txt

pause
exit

rem win-make clean

SET PATH=%OLD_PATH%
суббота, 9 августа 2025 г. в 13:49:40 UTC+3, alex;:

alex;

unread,
Aug 9, 2025, 6:22:55 PMAug 9
to Harbour Users
--build_harbour_android.cmd--
set ANDROID_NDK_ROOT=C:\Android\Sdk\ndk\29.0.13846066
if not exist "%ANDROID_NDK_ROOT%" (
  echo ERROR: ANDROID_NDK_ROOT not found at %ANDROID_NDK_ROOT%
  pause
  exit /b 1
)

if not exist harbour-core (
  git clone https://github.com/harbour/core.git harbour-core
)

rem mkdir harbour-core\build-android
rem pushd harbour-core\build-android

rem c:\dev\HB\harbour_flutter_demo\scripts\harbour-core\make2_x64.cmd

cd c:\dev\HB\harbour_flutter_demo\flutter_demo\hb\
call c:\dev\HB\harbour_flutter_demo\flutter_demo\hb\comp.cmd
cd c:\dev\HB\harbour_flutter_demo\scripts\

echo ==start==

C:\Android\Sdk\ndk\29.0.13846066\toolchains\llvm\prebuilt\windows-x86_64\bin\clang ^
  --target=aarch64-linux-androideabi24 ^
  -fPIC ^
  --sysroot=C:/Android/Sdk/ndk/29.0.13846066/toolchains/llvm/prebuilt/windows-x86_64/sysroot ^
  -shared ^
  -o libhello.so ^
  -Wl,--whole-archive c:\dev\HB\harbour_flutter_demo\flutter_demo\hb\libhello.a -Wl,--no-whole-archive ^
  -L c:\dev\HB\harbour_flutter_demo\scripts\harbour-core ^
  -lharbour ^
  -llog -landroid >log.txt


echo ==end==

copy libhello.so c:\dev\HB\harbour_flutter_demo\flutter_demo_new\android\app\src\main\jniLibs\arm64-v8a\*.* /y
rem cmake --build . -- /m

echo Build finished. If hbmk2 is available, use it to make .so from .prg: ..\bin\hbmk2 -gh ..\examples\hello.prg -o libharbour.so
rem popd
pause

--comp.cmd--
CHCP 1251

SET OLD_PATH=%PATH%


SET HB_PLATFORM=android
SET HB_COMPILER=clang
rem SET HB_CCPREFIX=llvm-

SET CPU=aarch64
SET HB_CPU=arm64
SET HB_HOST_CPU=x86_64

rem cd c:\dev\HB\harbour_flutter_demo\scripts\harbour-core\

call c:\dev\HB\harbour_flutter_demo\scripts\harbour-core\setenv.bat

set PATH=%PATH%;%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\bin\;%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\;%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\aarch64-linux-androideabi\;c:\dev\HB\harbour_flutter_demo\scripts\harbour-core\include\

SET HB_HOST_INC=%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\ -I%NDK_HOME%\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\aarch64-linux-androideabi\ -Ic:\dev\HB\harbour_flutter_demo\scripts\harbour-core\include\

set HB_BUILD_3RDEXT=no
set HB_BUILD_DYN=no
set HB_BUILD_CONTRIB_DYN=no

SET HB_USER_DFLAGS=--target=aarch64-linux-androideabi24
SET HB_USER_LDFLAGS=--target=aarch64-linux-androideabi24
SET HB_USER_CFLAGS=-fPIC --target=aarch64-linux-androideabi24 --sysroot=C:/Android/Sdk/ndk/29.0.13846066/toolchains/llvm/prebuilt/windows-x86_64/sysroot

hbmk2 hello.hbp -I%HB_HOST_INC% >log.txt

pause
воскресенье, 10 августа 2025 г. в 01:20:24 UTC+3, alex;:

alex;

unread,
Aug 11, 2025, 4:54:43 AMAug 11
to Harbour Users
flutter create my_first_app
cd my_first_app
adb pair 192.168.1.8:41999
adb connect 192.168.1.8:43013
adb devices
flutter run -d 192.168.8.1:43013 --fast-start

воскресенье, 10 августа 2025 г. в 01:22:55 UTC+3, alex;:
hello.prg
harbour_lib.dart
main.dart

hherrera

unread,
Aug 12, 2025, 7:47:17 PMAug 12
to Harbour Users
Excelent.  Alex.

alex;

unread,
Aug 13, 2025, 1:53:22 AMAug 13
to Harbour Users
In fact, clang.mk when HB_BUILD_DYN=yes generates the string clang -shared -L../../../../../lib/android/clang --target=aarch64-linux-androideabi24 -o ../../../../../lib/android/clang/libharbour.so @__dyn__.tmp -ldl -lm -llog -Wl,--out-implib,,--output-def,../../../../../lib/android/clang/libharbour.def   

So no need to form libharbour.so additionally.

суббота, 9 августа 2025 г. в 13:31:24 UTC+3, alex;:
Hi. That's good news for me. Did I complete it?"Hello from Harbour" in the Flutter window on your Android phone. The gpt-5 project helped me put together, the only thing I don't like allow-multiple-definition in   Makefile 
Reply all
Reply to author
Forward
0 new messages