SDL: copy executable binaries to lib dir in apk, according to https://issuetracker.google.com/issues/128554619

This commit is contained in:
Sergii Pylypenko
2019-10-15 17:57:55 +03:00
parent 01dc04fe17
commit 7c88857742
6 changed files with 50 additions and 15 deletions

View File

@@ -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"

View File

@@ -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);

View File

@@ -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

View File

@@ -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));