SDL: copy executable binaries to lib dir in apk, according to https://issuetracker.google.com/issues/128554619
This commit is contained in:
4
build.sh
4
build.sh
@@ -167,9 +167,9 @@ cd project && env PATH=$NDKBUILDPATH BUILD_NUM_CPUS=$NCPU ndk-build -j$NCPU V=1
|
||||
} || exit 1 ; \
|
||||
mkdir -p app/build/outputs/apk/release ; \
|
||||
../copyAssets.sh pack-binaries app/build/outputs/apk/debug/app-debug.apk && \
|
||||
rm -f app/build/outputs/apk/release/app-release.apk && \
|
||||
zipalign 4 app/build/outputs/apk/debug/app-debug.apk app/build/outputs/apk/release/app-release.apk &&
|
||||
apksigner sign --ks ~/.android/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android app/build/outputs/apk/release/app-release.apk || \
|
||||
mv -f app/build/outputs/apk/debug/app-debug.apk app/build/outputs/apk/release/app-release.apk || exit 1 ; \
|
||||
apksigner sign --ks ~/.android/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android app/build/outputs/apk/release/app-release.apk || exit 1 ; \
|
||||
fi ; } && \
|
||||
{ if $sign_apk; then cd .. && ./sign.sh && cd project ; else true ; fi ; } && \
|
||||
{ $install_apk && [ -n "`adb devices | tail -n +2`" ] && \
|
||||
|
||||
@@ -3,12 +3,19 @@
|
||||
ARCHES="arm64-v8a armeabi-v7a x86 x86_64"
|
||||
|
||||
if [ "$1" = "pack-binaries" ]; then
|
||||
echo "Copying binaries.zip to .apk file"
|
||||
COPIED=1
|
||||
for ARCH in $ARCHES; do
|
||||
[ -e lib/$ARCH/binaries.zip ] && zip "$2" lib/$ARCH/binaries.zip && COPIED=0
|
||||
done
|
||||
exit $COPIED
|
||||
[ -e jni/application/src/AndroidData/lib ] || exit 0
|
||||
[ -e jni/application/src/AndroidData/binaries*.zip ] && {
|
||||
echo "Error: binaries.zip no longer supported in Android 10"
|
||||
echo "Copy your executable binaries to AndroidData/lib/arm64-v8a"
|
||||
echo "Then execute them using \$LIBDIR or getenv(\"LIBDIR\")"
|
||||
exit 0
|
||||
}
|
||||
APK="`pwd`/$2"
|
||||
echo "Copying binaries to .apk file"
|
||||
cd jni/application/src/AndroidData/ || exit 1
|
||||
zip -r "$APK" lib || exit 1
|
||||
cd ../../../../
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Copying app data files from project/jni/application/src/AndroidData to project/assets"
|
||||
@@ -16,10 +23,7 @@ mkdir -p project/assets
|
||||
rm -f -r project/assets/*
|
||||
if [ -d "project/jni/application/src/AndroidData" ] ; then
|
||||
cp -L -r project/jni/application/src/AndroidData/* project/assets/
|
||||
rm -rf project/assets/lib
|
||||
fi
|
||||
|
||||
for ARCH in $ARCHES; do
|
||||
mv project/assets/binaries-$ARCH.zip project/libs/$ARCH/binaries.zip 2>/dev/null
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
android:allowBackup="true"
|
||||
android:banner="@drawable/banner"
|
||||
android:isGame="true"
|
||||
android:extractNativeLibs="true"
|
||||
>
|
||||
<activity android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
|
||||
@@ -645,6 +645,7 @@ public class Settings
|
||||
// TODO: get current user name and set envvar USER, the API is not availalbe on Android 1.6 so I don't bother with this
|
||||
nativeSetEnv( "APPDIR", p.getFilesDir().getAbsolutePath() );
|
||||
nativeSetEnv( "SECURE_STORAGE_DIR", p.getFilesDir().getAbsolutePath() );
|
||||
nativeSetEnv( "LIBDIR", p.getApplicationInfo().nativeLibraryDir );
|
||||
nativeSetEnv( "DATADIR", Globals.DataDir );
|
||||
nativeSetEnv( "UNSECURE_STORAGE_DIR", Globals.DataDir );
|
||||
SdcardAppPath.get().setEnv(p);
|
||||
|
||||
@@ -78,8 +78,7 @@ rm -rf $CURDIR/tmp-$1
|
||||
mkdir -p $CURDIR/tmp-$1
|
||||
cd $CURDIR/tmp-$1
|
||||
cp -f $CURDIR/xserver/data/busybox-$1 ./busybox
|
||||
mkdir -p usr/bin
|
||||
for f in xhost xkbcomp xloadimage xsel; do cp -f $CURDIR/xserver/android/$1/$f ./usr/bin/$f ; done
|
||||
for f in xhost xkbcomp xloadimage xsel; do cp -f $CURDIR/xserver/android/$1/$f ./$f ; done
|
||||
# Statically-linked prebuilt executables, generated using Debian chroot.
|
||||
|
||||
if false; then # Disable PulseAudio for now
|
||||
@@ -97,6 +96,8 @@ cp -f $CURDIR/pulseaudio/android-pulseaudio.conf pulse/pulseaudio.conf
|
||||
fi # Disable PulseAudio for now
|
||||
|
||||
rm -f ../AndroidData/binaries-$1.zip
|
||||
zip -r ../AndroidData/binaries-$1.zip .
|
||||
rm -rf ../AndroidData/lib
|
||||
mkdir -p ../AndroidData/lib/$1
|
||||
cp -a . ../AndroidData/lib/$1
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -280,8 +280,36 @@ static void * unpackFilesThread(void * unused)
|
||||
return (void *)1;
|
||||
}
|
||||
|
||||
static void symlinkBusybox(void)
|
||||
{
|
||||
char fname[PATH_MAX*2];
|
||||
char fname2[PATH_MAX];
|
||||
|
||||
sprintf(fname, "%s/busybox", getenv("APPDIR"));
|
||||
sprintf(fname2, "%s/busybox", getenv("LIBDIR"));
|
||||
remove(fname);
|
||||
symlink(fname2, fname);
|
||||
__android_log_print(ANDROID_LOG_INFO, "XSDL", "ln -s %s %s", fname2, fname);
|
||||
|
||||
strcpy( fname, getenv("APPDIR") );
|
||||
strcat( fname, "/busybox" );
|
||||
strcat( fname, " rm -rf " );
|
||||
strcat( fname, getenv("APPDIR") );
|
||||
strcat( fname, "/usr/bin" );
|
||||
|
||||
__android_log_print(ANDROID_LOG_INFO, "XSDL", "%s", fname);
|
||||
|
||||
system( fname );
|
||||
|
||||
sprintf(fname, "%s/usr/bin", getenv("APPDIR"));
|
||||
symlink(getenv("LIBDIR"), fname);
|
||||
__android_log_print(ANDROID_LOG_INFO, "XSDL", "ln -s %s %s", getenv("LIBDIR"), fname);
|
||||
}
|
||||
|
||||
void XSDL_unpackFiles(int _freeSpaceRequiredMb)
|
||||
{
|
||||
symlinkBusybox();
|
||||
|
||||
pthread_t thread_id;
|
||||
void * status;
|
||||
memset(unpackLog, 0, sizeof(unpackLog));
|
||||
|
||||
Reference in New Issue
Block a user