Put the native executable in the lib directory, to appease recent R^X requirements, and bump the Android target version back up to 34.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4572 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -3,9 +3,13 @@ | ||||
| 	package="com.unprompted.tildefriends" | ||||
| 	android:versionCode="12" | ||||
| 	android:versionName="0.0.12-wip"> | ||||
| 	<uses-sdk android:minSdkVersion="24" android:targetSdkVersion="28"/> | ||||
| 	<uses-sdk android:minSdkVersion="24" android:targetSdkVersion="34"/> | ||||
| 	<uses-permission android:name="android.permission.INTERNET"/> | ||||
| 	<application android:label="Tilde Friends" android:usesCleartextTraffic="true" android:debuggable="true"> | ||||
| 	<application | ||||
| 		android:label="Tilde Friends" | ||||
| 		android:usesCleartextTraffic="true" | ||||
| 		android:debuggable="true" | ||||
| 		android:extractNativeLibs="true"> | ||||
| 		<meta-data android:name="android.max_aspect" android:value="2.1"/> | ||||
| 		<activity | ||||
| 			android:name=".MainActivity" | ||||
|   | ||||
| @@ -37,8 +37,6 @@ import java.nio.file.WatchEvent; | ||||
| import java.nio.file.WatchKey; | ||||
| import java.nio.file.WatchService; | ||||
| import java.util.concurrent.TimeUnit; | ||||
| import java.util.zip.ZipEntry; | ||||
| import java.util.zip.ZipFile; | ||||
|  | ||||
| public class MainActivity extends Activity { | ||||
| 	WebView web_view; | ||||
| @@ -60,12 +58,7 @@ public class MainActivity extends Activity { | ||||
| 		set_status("Extracting executable..."); | ||||
| 		Log.w("tildefriends", String.format("getFilesDir() is %s", getFilesDir().toString())); | ||||
| 		Log.w("tildefriends", String.format("getPackageResourcePath() is %s", getPackageResourcePath().toString())); | ||||
|  | ||||
| 		if (!extract_executable()) { | ||||
| 			Log.w("tildefriends", "Failed to extract a compatible executable."); | ||||
| 			set_status("No compatible ABI found."); | ||||
| 			return; | ||||
| 		} | ||||
| 		Log.w("tildefriends", String.format("nativeLibraryDir is %s", getApplicationInfo().nativeLibraryDir)); | ||||
|  | ||||
| 		String port_file_path = getFilesDir().toString() + "/port.txt"; | ||||
| 		new File(port_file_path).delete(); | ||||
| @@ -125,7 +118,7 @@ public class MainActivity extends Activity { | ||||
| 		thread.start(); | ||||
|  | ||||
| 		set_status("Starting server..."); | ||||
| 		String exe = getFilesDir().toString() + "/tildefriends"; | ||||
| 		String exe = getApplicationInfo().nativeLibraryDir + "/tildefriends.so"; | ||||
| 		ProcessBuilder builder = new ProcessBuilder(exe, "run", "-z", getPackageResourcePath().toString(), "-a", "out_http_port_file=" + port_file_path, "-p", "0"); | ||||
| 		Log.w("tildefriends", "files = " + getFilesDir().toString()); | ||||
| 		Log.w("tildefriends", "exe = " + exe); | ||||
| @@ -194,39 +187,6 @@ public class MainActivity extends Activity { | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	private boolean extract_executable() | ||||
| 	{ | ||||
| 		try (ZipFile zip = new ZipFile(new File(getPackageResourcePath()))) { | ||||
| 			for (String abi : android.os.Build.SUPPORTED_ABIS) | ||||
| 			{ | ||||
| 				String lookup = String.format("bin/%s/tildefriends", abi); | ||||
| 				Log.w("tildefriends", "Looking for " + lookup); | ||||
| 				ZipEntry entry = zip.getEntry(lookup); | ||||
| 				if (entry != null) { | ||||
| 					Log.w("tildefriends", "Extracting " + entry.getName()); | ||||
| 					try (FileOutputStream out = new FileOutputStream(getFilesDir().toString() + "/tildefriends")) { | ||||
| 						try (InputStream in = zip.getInputStream(entry)) { | ||||
| 							byte[] buffer = new byte[32768]; | ||||
| 							int count; | ||||
| 							while ((count = in.read(buffer)) != -1) { | ||||
| 								out.write(buffer, 0, count); | ||||
| 							} | ||||
| 							new File(getFilesDir().toString() + "/tildefriends").setExecutable(true); | ||||
| 							return true; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} catch (java.io.FileNotFoundException e) { | ||||
| 			Log.w("tildefriends", "FileNotFoundException extracting executable"); | ||||
| 			Log.w("tildefriends", e.toString()); | ||||
| 		} catch (java.io.IOException e) { | ||||
| 			Log.w("tildefriends", "IOException extracting executable"); | ||||
| 			Log.w("tildefriends", e.toString()); | ||||
| 		} | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	@Override | ||||
| 	protected void onDestroy() | ||||
| 	{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user