[Xposed General] danarama:
Well it is a complete mystery to me.

I extracted the zip and your build.prop to a directory locally and ran the commands in the updater-binary one by one against your build.prop as the zip would via recovery - to check the variables and they are *all* correct:

rootsu@buildbox /mnt/NAS/android/xposed $ API=$(cat build.prop | grep "ro.build.version.sdk=" | dd bs=1 skip=21 count=2)
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.0203273 s, 0.1 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ echo $API
21
rootsu@buildbox /mnt/NAS/android/xposed $ ABI=$(cat build.prop | grep -m 1 "ro.product.cpu.abi=" | dd bs=1 skip=19 count=3)
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.0558707 s, 0.1 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ echo $ABI
arm
rootsu@buildbox /mnt/NAS/android/xposed $ ABILONG=$(cat build.prop | grep -m 1 "ro.product.cpu.abi=" | dd bs=1 skip=19)
10+0 records in
10+0 records out
10 bytes (10 B) copied, 0.00979567 s, 1.0 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ echo $ABILONG
arm64-v8a
rootsu@buildbox /mnt/NAS/android/xposed $ ABI2=$(cat build.prop | grep -m 1 "ro.product.cpu.abi2=" | dd bs=1 skip=20 count=3)
dd: ‘standard input’: cannot skip to specified offset
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.0172617 s, 0.0 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ ABILONG=$(cat build.prop | grep -m 1 "ro.product.cpu.abi=" | dd bs=1 skip=19)
10+0 records in
10+0 records out
10 bytes (10 B) copied, 0.0100576 s, 1.0 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ XMINSDK=$(grep -m 1 "^minsdk=" xposed.prop | dd bs=1 skip=7)
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.0226439 s, 0.1 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ echo $XMINSDK
21
rootsu@buildbox /mnt/NAS/android/xposed $ XMAXSDK=$(grep -m 1 "^minsdk=" xposed.prop | dd bs=1 skip=7)
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.0226135 s, 0.1 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ echo $XMAXSDK21
rootsu@buildbox /mnt/NAS/android/xposed $ XARCH=$(grep -m 1 "^arch=" xposed.prop | dd bs=1 skip=5)
6+0 records in
6+0 records out
6 bytes (6 B) copied, 0.0225184 s, 0.3 kB/s
rootsu@buildbox /mnt/NAS/android/xposed $ echo $XARCH
arm64
rootsu@buildbox /mnt/NAS/android/xposed $ echo $ABILONG
arm64-v8a
rootsu@buildbox /mnt/NAS/android/xposed $ if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; SYSTEMLIB=/system/lib64; IS64BIT=true; fi;
rootsu@buildbox /mnt/NAS/android/xposed $ echo $ARCH
arm64
rootsu@buildbox /mnt/NAS/android/xposed $ echo $XARCH
arm64
rootsu@buildbox /mnt/NAS/android/xposed $ if [ "$API" -ge "$XMINSDK" ]; then XVALID=true; fi;
rootsu@buildbox /mnt/NAS/android/xposed $ echo $XVALID
true
rootsu@buildbox /mnt/NAS/android/xposed $ if [ "$API" -le "$XMAXSDK" ]; then XVALID=true; fi;
rootsu@buildbox /mnt/NAS/android/xposed $ echo $XVALID
true
rootsu@buildbox /mnt/NAS/android/xposed $ echo "! Wrong platform: $ARCH, expected: $XARCH"
! Wrong platform: arm64, expected: arm64
rootsu@buildbox /mnt/NAS/android/xposed $ ARCH=arm
rootsu@buildbox /mnt/NAS/android/xposed $ echo $ARCH
arm
rootsu@buildbox /mnt/NAS/android/xposed $ if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; SYSTEMLIB=/system/lib64; IS64BIT=true; fi;
rootsu@buildbox /mnt/NAS/android/xposed $ echo $ARCH
arm64

Then I edited the updater-binary to this...

#!/sbin/sh

echo "- Checking environment"
API=$(cat build.prop | grep "ro.build.version.sdk=" | dd bs=1 skip=21 count=2)
ABI=$(cat build.prop /default.prop | grep -m 1 "ro.product.cpu.abi=" | dd bs=1 skip=19 count=3)
ABILONG=$(cat build.prop /default.prop | grep -m 1 "ro.product.cpu.abi=" | dd bs=1 skip=19)
ABI2=$(cat build.prop /default.prop | grep -m 1 "ro.product.cpu.abi2=" | dd bs=1 skip=20 count=3)

XVERSION=$(grep -m 1 "^version=" xposed.prop | dd bs=1 skip=8)
XARCH=$(grep -m 1 "^arch=" xposed.prop | dd bs=1 skip=5)
XMINSDK=$(grep -m 1 "^minsdk=" xposed.prop | dd bs=1 skip=7)
XMAXSDK=$(grep -m 1 "^maxsdk=" xposed.prop | dd bs=1 skip=7)

ARCH=arm
IS64BIT=false
RC=0
if [ "$ABI" = "x86" ]; then ARCH=x86; fi;
if [ "$ABI2" = "x86" ]; then ARCH=x86; fi;
if [ "$API" -eq "$API" ]; then
if [ "$API" -ge "21" ]; then
if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; SYSTEMLIB=/system/lib64; IS64BIT=true; fi;
if [ "$ABILONG" = "x86_64" ]; then ARCH=x64; SYSTEMLIB=/system/lib64; IS64BIT=true; fi;
fi
fi

#echo "DBG [$API] [$ABI] [$ABI2] [$ABILONG] [$ARCH] [$XARCH] [$XMINSDK] [$XMAXSDK] [$XVERSION]"

echo " Xposed version: $XVERSION"

XVALID=false
if [ "$ARCH" = "$XARCH" ]; then
if [ "$API" -ge "$XMINSDK" ]; then
if [ "$API" -le "$XMAXSDK" ]; then
XVALID=true
else
echo "! Wrong SDK version: $API, expected $XMINSDK - $XMAXSDK"
fi
else
echo "! Wrong SDK version: $API, expected $XMINSDK - $XMAXSDK"
fi
else
echo "! Wrong platform: $ARCH, expected: $XARCH"
fi

if ($XVALID); then
echo "- Placing files"
fi

echo "- Done !"
exit $RC

... So I could run it as a shell script locallt and test it in it's entirety and the result was correct too..

rootsu@buildbox /mnt/NAS/android/xposed $ sh update-binary-test.sh
- Checking environment
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.0200649 s, 0.1 kB/s
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.00935457 s, 0.3 kB/s
cat: /default.prop: No such file or directory
10+0 records in
10+0 records out
10 bytes (10 B) copied, 0.0106429 s, 0.9 kB/s
cat: /default.prop: No such file or directory
cat: /default.prop: No such file or directory
dd: ‘standard input’: cannot skip to specified offset
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.0300124 s, 0.0 kB/s
28+0 records in
28+0 records out
28 bytes (28 B) copied, 0.027702 s, 1.0 kB/s
6+0 records in
6+0 records out
6 bytes (6 B) copied, 0.040563 s, 0.1 kB/s
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.0328054 s, 0.1 kB/s
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.0329011 s, 0.1 kB/s
Xposed version: 3.0 custom build (20150430)
- Placing files
[B]- Done ![/B]

The problem for you seems to be this bit:

ARCH=arm
IS64BIT=false
RC=0
if [ "$ABI" = "x86" ]; then ARCH=x86; fi;
if [ "$ABI2" = "x86" ]; then ARCH=x86; fi;
if [ "$API" -eq "$API" ]; then
if [ "$API" -ge "21" ]; then
if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; SYSTEMLIB=/system/lib64; IS64BIT=true; fi;
if [ "$ABILONG" = "x86_64" ]; then ARCH=x64; SYSTEMLIB=/system/lib64; IS64BIT=true; fi;
fi
fi

"ARCH=arm" at the beginning of that section, but because your ABILONG=arm64-v8a, so it should "then ARCH=arm64". But then later in your screenshot, your "ARCH=arm" which it shouldn't do and my tests don't do either, so I don't know why that part of the script isn't working.

I'm really at a loss. Either your recovery isn't executing properly, or something else.

Anyway, the attached zip *may* get around the problem for you, though I can't test it obviously. If it doesn't work, the ARCH=arm must be coming from somewhere else.