Difference between revisions of "Build Android Apps using LDC in a Container"

From D Wiki
Jump to: navigation, search
m (Layout changes)
m (clang command added)
Line 1: Line 1:
 
Work in progress
 
Work in progress
  
Using Docker it is easy to create Android Applications. Although this page shows you how to create Android Apps on a Windows system, it also works for Linux and Mac operation systems.
+
Using Docker it is easy to create Android Applications. Although this page shows you how to create Android Apps on a Windows system, it also works for Linux and Mac operation systems. You have to adapt the directory paths according to your operation system.
  
 
You need to have following software installed on your host operation system:
 
You need to have following software installed on your host operation system:
Line 24: Line 24:
  
  
This command will pull the image andre2007/ldc-android from the docker hub and start a shell within the container. Also the path c:\D\projects will be mounted in as \projects.
+
This command will pull the image andre2007/ldc-android from the docker hub and starts a shell within the container. Also the path c:\D\projects will be mounted as \projects.
  
 
''docker run --rm -it -v c:/D/projects:/projects andre2007/ldc-android sh''
 
''docker run --rm -it -v c:/D/projects:/projects andre2007/ldc-android sh''
Line 30: Line 30:
  
  
== 3. Compile the demo ==
+
== 3. Compile the demo (Within container)==
  
 
Within the container shell execute following commands:
 
Within the container shell execute following commands:
Line 42: Line 42:
 
ldc2 -I../../ -c ../../android_native_app_glue.d
 
ldc2 -I../../ -c ../../android_native_app_glue.d
  
mkdir -p libs/armeabi-v7a/''
+
mkdir -p libs/armeabi-v7a/
 +
 
 +
$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -Wl,-soname,libnative-activity.so -shared --sysroot=$NDK/platforms/android-9/arch-arm main.o sensor.o $LDC/build/lib/libphobos2-ldc.a $LDC/build/lib/libdruntime-ldc.a android_native_app_glue.o -lgcc -gcc-toolchain $NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 -no-canonical-prefixes -fuse-ld=bfd -target armv7-none-linux-androideabi -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -mthumb -L$NDK/platforms/android-9/arch-arm/usr/lib -llog -landroid -lEGL -lGLESv1_CM -lc -lm -o libs/armeabi-v7a/libnative-activity.so''
 +
 
 +
 
 +
 
 +
== 4. Build Android APK (Within host operation system)==

Revision as of 16:44, 19 January 2017

Work in progress

Using Docker it is easy to create Android Applications. Although this page shows you how to create Android Apps on a Windows system, it also works for Linux and Mac operation systems. You have to adapt the directory paths according to your operation system.

You need to have following software installed on your host operation system:

- Docker (Docker for Windows)

- Java Development Kit (JDK)

- Android SDK [1]

- Ant [2]


1. Clone Android Headers / Demos

Clone the repository https://github.com/joakim-noah/android into folder c:\D\projects.

git clone https://github.com/joakim-noah/android


2. Start docker

This command will pull the image andre2007/ldc-android from the docker hub and starts a shell within the container. Also the path c:\D\projects will be mounted as \projects.

docker run --rm -it -v c:/D/projects:/projects andre2007/ldc-android sh


3. Compile the demo (Within container)

Within the container shell execute following commands:

cd /projects/android/samples/native-activity/

ldc2 -I../../ -c jni/main.d

ldc2 -I../../ -c ../../android/sensor.d

ldc2 -I../../ -c ../../android_native_app_glue.d

mkdir -p libs/armeabi-v7a/

$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -Wl,-soname,libnative-activity.so -shared --sysroot=$NDK/platforms/android-9/arch-arm main.o sensor.o $LDC/build/lib/libphobos2-ldc.a $LDC/build/lib/libdruntime-ldc.a android_native_app_glue.o -lgcc -gcc-toolchain $NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 -no-canonical-prefixes -fuse-ld=bfd -target armv7-none-linux-androideabi -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -mthumb -L$NDK/platforms/android-9/arch-arm/usr/lib -llog -landroid -lEGL -lGLESv1_CM -lc -lm -o libs/armeabi-v7a/libnative-activity.so


4. Build Android APK (Within host operation system)