├── .gitignore
├── .gitmodules
├── .idea
├── .gitignore
├── .name
├── compiler.xml
├── deploymentTargetDropDown.xml
├── gradle.xml
├── misc.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── allplatform
│ │ └── box86
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── DroidSansMono.ttf
│ │ ├── bin-map.zip
│ │ └── data-2.tgz
│ ├── java
│ │ ├── com
│ │ │ ├── allplatform
│ │ │ │ └── box86
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ ├── Wine.java
│ │ │ │ │ ├── main
│ │ │ │ │ ├── About.java
│ │ │ │ │ ├── Home.java
│ │ │ │ │ ├── Library.java
│ │ │ │ │ ├── Mod.java
│ │ │ │ │ ├── Setting.java
│ │ │ │ │ └── wine.java
│ │ │ │ │ └── other
│ │ │ │ │ ├── Filemgr.java
│ │ │ │ │ ├── InstallAssets.java
│ │ │ │ │ ├── Run.java
│ │ │ │ │ └── mDialog.java
│ │ │ └── termux
│ │ │ │ ├── app
│ │ │ │ ├── BackgroundJob.java
│ │ │ │ ├── BellUtil.java
│ │ │ │ ├── DialogUtils.java
│ │ │ │ ├── ExtraKeysInfos.java
│ │ │ │ ├── ExtraKeysView.java
│ │ │ │ ├── FullScreenWorkAround.java
│ │ │ │ ├── RunCommandService.java
│ │ │ │ ├── TermuxActivity.java
│ │ │ │ ├── TermuxHelpActivity.java
│ │ │ │ ├── TermuxInstaller.java
│ │ │ │ ├── TermuxOpenReceiver.java
│ │ │ │ ├── TermuxPreferences.java
│ │ │ │ ├── TermuxService.java
│ │ │ │ └── TermuxViewClient.java
│ │ │ │ └── filepicker
│ │ │ │ ├── TermuxDocumentsProvider.java
│ │ │ │ └── TermuxFileReceiverActivity.java
│ │ └── x
│ │ │ └── org
│ │ │ └── server
│ │ │ ├── Accelerometer.java
│ │ │ ├── Advertisement.java
│ │ │ ├── Audio.java
│ │ │ ├── Clipboard.java
│ │ │ ├── CloudSave.java
│ │ │ ├── DataDownloader.java
│ │ │ ├── DummyService.java
│ │ │ ├── GLSurfaceView_SDL.java
│ │ │ ├── Globals.java
│ │ │ ├── Keycodes.java
│ │ │ ├── MainActivity.java
│ │ │ ├── RestartMainActivity.java
│ │ │ ├── RunFromOtherApp.java
│ │ │ ├── Settings.java
│ │ │ ├── SettingsMenu.java
│ │ │ ├── SettingsMenuKeyboard.java
│ │ │ ├── SettingsMenuMisc.java
│ │ │ ├── SettingsMenuMouse.java
│ │ │ ├── Video.java
│ │ │ └── XZInputStream.java
│ ├── jniLibs
│ │ ├── armeabi-v7a
│ │ │ ├── lib0.so
│ │ │ ├── lib1.so
│ │ │ ├── lib10.so
│ │ │ ├── lib11.so
│ │ │ ├── lib12.so
│ │ │ ├── lib13.so
│ │ │ ├── lib14.so
│ │ │ ├── lib15.so
│ │ │ ├── lib16.so
│ │ │ ├── lib17.so
│ │ │ ├── lib18.so
│ │ │ ├── lib19.so
│ │ │ ├── lib2.so
│ │ │ ├── lib20.so
│ │ │ ├── lib21.so
│ │ │ ├── lib22.so
│ │ │ ├── lib23.so
│ │ │ ├── lib24.so
│ │ │ ├── lib25.so
│ │ │ ├── lib26.so
│ │ │ ├── lib27.so
│ │ │ ├── lib28.so
│ │ │ ├── lib29.so
│ │ │ ├── lib3.so
│ │ │ ├── lib30.so
│ │ │ ├── lib31.so
│ │ │ ├── lib32.so
│ │ │ ├── lib33.so
│ │ │ ├── lib34.so
│ │ │ ├── lib35.so
│ │ │ ├── lib36.so
│ │ │ ├── lib37.so
│ │ │ ├── lib38.so
│ │ │ ├── lib39.so
│ │ │ ├── lib4.so
│ │ │ ├── lib40.so
│ │ │ ├── lib41.so
│ │ │ ├── lib42.so
│ │ │ ├── lib43.so
│ │ │ ├── lib44.so
│ │ │ ├── lib45.so
│ │ │ ├── lib46.so
│ │ │ ├── lib47.so
│ │ │ ├── lib48.so
│ │ │ ├── lib49.so
│ │ │ ├── lib5.so
│ │ │ ├── lib50.so
│ │ │ ├── lib51.so
│ │ │ ├── lib52.so
│ │ │ ├── lib53.so
│ │ │ ├── lib54.so
│ │ │ ├── lib55.so
│ │ │ ├── lib56.so
│ │ │ ├── lib57.so
│ │ │ ├── lib58.so
│ │ │ ├── lib59.so
│ │ │ ├── lib6.so
│ │ │ ├── lib60.so
│ │ │ ├── lib61.so
│ │ │ ├── lib62.so
│ │ │ ├── lib63.so
│ │ │ ├── lib64.so
│ │ │ ├── lib65.so
│ │ │ ├── lib66.so
│ │ │ ├── lib67.so
│ │ │ ├── lib68.so
│ │ │ ├── lib69.so
│ │ │ ├── lib7.so
│ │ │ ├── lib70.so
│ │ │ ├── lib71.so
│ │ │ ├── lib72.so
│ │ │ ├── lib8.so
│ │ │ ├── lib9.so
│ │ │ ├── libapplication.so
│ │ │ ├── libcrypto.so.sdl.1.so
│ │ │ ├── libsdl-1.2.so
│ │ │ ├── libsdl_main.so
│ │ │ ├── libsdl_native_helpers.so
│ │ │ ├── libsdl_ttf.so
│ │ │ └── libtermux.so
│ │ └── x86
│ │ │ ├── lib0.so
│ │ │ ├── lib1.so
│ │ │ ├── lib10.so
│ │ │ ├── lib11.so
│ │ │ ├── lib12.so
│ │ │ ├── lib13.so
│ │ │ ├── lib14.so
│ │ │ ├── lib15.so
│ │ │ ├── lib16.so
│ │ │ ├── lib17.so
│ │ │ ├── lib18.so
│ │ │ ├── lib19.so
│ │ │ ├── lib2.so
│ │ │ ├── lib20.so
│ │ │ ├── lib21.so
│ │ │ ├── lib22.so
│ │ │ ├── lib23.so
│ │ │ ├── lib24.so
│ │ │ ├── lib25.so
│ │ │ ├── lib26.so
│ │ │ ├── lib27.so
│ │ │ ├── lib28.so
│ │ │ ├── lib29.so
│ │ │ ├── lib3.so
│ │ │ ├── lib30.so
│ │ │ ├── lib31.so
│ │ │ ├── lib32.so
│ │ │ ├── lib33.so
│ │ │ ├── lib34.so
│ │ │ ├── lib35.so
│ │ │ ├── lib36.so
│ │ │ ├── lib37.so
│ │ │ ├── lib38.so
│ │ │ ├── lib39.so
│ │ │ ├── lib4.so
│ │ │ ├── lib40.so
│ │ │ ├── lib41.so
│ │ │ ├── lib42.so
│ │ │ ├── lib43.so
│ │ │ ├── lib44.so
│ │ │ ├── lib45.so
│ │ │ ├── lib46.so
│ │ │ ├── lib47.so
│ │ │ ├── lib48.so
│ │ │ ├── lib49.so
│ │ │ ├── lib5.so
│ │ │ ├── lib50.so
│ │ │ ├── lib51.so
│ │ │ ├── lib52.so
│ │ │ ├── lib53.so
│ │ │ ├── lib54.so
│ │ │ ├── lib55.so
│ │ │ ├── lib56.so
│ │ │ ├── lib57.so
│ │ │ ├── lib58.so
│ │ │ ├── lib59.so
│ │ │ ├── lib6.so
│ │ │ ├── lib60.so
│ │ │ ├── lib61.so
│ │ │ ├── lib62.so
│ │ │ ├── lib63.so
│ │ │ ├── lib64.so
│ │ │ ├── lib65.so
│ │ │ ├── lib66.so
│ │ │ ├── lib67.so
│ │ │ ├── lib68.so
│ │ │ ├── lib69.so
│ │ │ ├── lib7.so
│ │ │ ├── lib70.so
│ │ │ ├── lib71.so
│ │ │ ├── lib72.so
│ │ │ ├── lib8.so
│ │ │ ├── lib9.so
│ │ │ ├── libapplication.so
│ │ │ ├── libcrypto.so.sdl.1.so
│ │ │ ├── libsdl-1.2.so
│ │ │ ├── libsdl_main.so
│ │ │ ├── libsdl_native_helpers.so
│ │ │ ├── libsdl_ttf.so
│ │ │ └── libtermux.so
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ ├── addfile.png
│ │ ├── appicon.png
│ │ ├── b1.png
│ │ ├── b2.png
│ │ ├── b3.png
│ │ ├── b4.png
│ │ ├── b5.png
│ │ ├── b6.png
│ │ ├── back72x72.png
│ │ ├── banner.png
│ │ ├── bg_mdialog.xml
│ │ ├── bg_mdialogbottom.xml
│ │ ├── box86logo.png
│ │ ├── calibrate.png
│ │ ├── current_session.xml
│ │ ├── current_session_black.xml
│ │ ├── discord72x72.png
│ │ ├── dpad.png
│ │ ├── fb72x72.png
│ │ ├── file72x72.png
│ │ ├── folder72x72.png
│ │ ├── github72x72.png
│ │ ├── home72x72.png
│ │ ├── ic_baseline_menu_24.xml
│ │ ├── ic_foreground.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── ic_new_session.xml
│ │ ├── ic_service_notification.xml
│ │ ├── icon.png
│ │ ├── info72x72.png
│ │ ├── keyboard.png
│ │ ├── lib72x72.png
│ │ ├── menu72x72.png
│ │ ├── nav_color.xml
│ │ ├── openfl64x64.png
│ │ ├── publisherlogo.png
│ │ ├── rectangle.png
│ │ ├── selected_session_background.xml
│ │ ├── selected_session_background_black.xml
│ │ ├── session_ripple.xml
│ │ ├── session_ripple_black.xml
│ │ ├── setting72x72.png
│ │ ├── tar72x72.png
│ │ ├── terminal_scroll_shape.xml
│ │ ├── tv_border_left.jpg
│ │ ├── tv_border_top.jpg
│ │ ├── un72x72.png
│ │ ├── wine72x72.png
│ │ └── youtube72x72.png
│ │ ├── layout
│ │ ├── about.xml
│ │ ├── activity_main.xml
│ │ ├── dialog.xml
│ │ ├── dialog_loading.xml
│ │ ├── drawer_layout.xml
│ │ ├── extra_keys_main.xml
│ │ ├── extra_keys_right.xml
│ │ ├── filemgr.xml
│ │ ├── home.xml
│ │ ├── layout_navigation.xml
│ │ ├── layout_setting.xml
│ │ ├── library.xml
│ │ ├── library_layout.xml
│ │ ├── line_in_drawer.xml
│ │ ├── main.xml
│ │ ├── mods.xml
│ │ ├── notification.xml
│ │ ├── screensize.xml
│ │ ├── setting.xml
│ │ └── wine.xml
│ │ ├── menu
│ │ └── menu_navigation.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.webp
│ │ └── ic_launcher_round.webp
│ │ ├── raw
│ │ ├── bell.ogg
│ │ ├── dualshock.raw
│ │ ├── gba.raw
│ │ ├── keen.raw
│ │ ├── n64.raw
│ │ ├── psx.raw
│ │ ├── retro.raw
│ │ ├── simpletheme.raw
│ │ ├── snes.raw
│ │ ├── sun.raw
│ │ ├── ultimatedroid.raw
│ │ └── xsdl.raw
│ │ ├── values-night
│ │ └── themes.xml
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ ├── ids.xml
│ │ ├── strings.xml
│ │ ├── styles.xml
│ │ └── themes.xml
│ │ └── xml
│ │ ├── amiga.xml
│ │ ├── amiga_alt.xml
│ │ ├── amiga_alt_shift.xml
│ │ ├── amiga_old.xml
│ │ ├── amiga_shift.xml
│ │ ├── atari800.xml
│ │ ├── c64.xml
│ │ ├── qwerty.xml
│ │ ├── qwerty_alt.xml
│ │ ├── qwerty_alt_shift.xml
│ │ ├── qwerty_shift.xml
│ │ └── shortcuts.xml
│ └── test
│ └── java
│ └── com
│ └── allplatform
│ └── box86
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── terminal-emulator
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── termux
│ │ │ └── terminal
│ │ │ ├── ByteQueue.java
│ │ │ ├── EmulatorDebug.java
│ │ │ ├── JNI.java
│ │ │ ├── KeyHandler.java
│ │ │ ├── TerminalBuffer.java
│ │ │ ├── TerminalColorScheme.java
│ │ │ ├── TerminalColors.java
│ │ │ ├── TerminalEmulator.java
│ │ │ ├── TerminalOutput.java
│ │ │ ├── TerminalRow.java
│ │ │ ├── TerminalSession.java
│ │ │ ├── TextStyle.java
│ │ │ └── WcWidth.java
│ └── jni
│ │ ├── Android.mk
│ │ └── termux.c
│ └── test
│ └── java
│ └── com
│ └── termux
│ └── terminal
│ ├── ByteQueueTest.java
│ ├── ControlSequenceIntroducerTest.java
│ ├── CursorAndScreenTest.java
│ ├── DecSetTest.java
│ ├── DeviceControlStringTest.java
│ ├── HistoryTest.java
│ ├── KeyHandlerTest.java
│ ├── OperatingSystemControlTest.java
│ ├── RectangularAreasTest.java
│ ├── ResizeTest.java
│ ├── ScreenBufferTest.java
│ ├── ScrollRegionTest.java
│ ├── TerminalRowTest.java
│ ├── TerminalTest.java
│ ├── TerminalTestCase.java
│ ├── TextStyleTest.java
│ ├── UnicodeInputTest.java
│ └── WcWidthTest.java
└── terminal-view
├── build.gradle
├── proguard-rules.pro
└── src
└── main
├── AndroidManifest.xml
├── java
└── com
│ └── termux
│ └── view
│ ├── GestureAndScaleRecognizer.java
│ ├── TerminalRenderer.java
│ ├── TerminalView.java
│ └── TerminalViewClient.java
└── res
├── drawable
├── text_select_handle_left_material.xml
└── text_select_handle_right_material.xml
└── values
└── strings.xml
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 | local.properties
16 |
17 | # Project exclude paths
18 | /terminal-emulator/build/
19 | /terminal-emulator/build/intermediates/javac/debug/classes/
20 | /terminal-view/build/
21 | /terminal-view/build/intermediates/javac/debug/classes/
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "app/src/main/assets/WineBox86.zip/box86"]
2 | path = app/src/main/assets/WineBox86.zip/box86
3 | url = https://github.com/ptitSeb/box86.git
4 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | AndroidBox86
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/deploymentTargetDropDown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Discontinued
2 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id 'com.android.application'
3 | }
4 |
5 | android {
6 | compileSdk 31
7 |
8 | defaultConfig {
9 | applicationId "com.allplatform.box86"
10 | minSdk 21
11 | targetSdk 28
12 | versionCode 1
13 | versionName "0.1"
14 |
15 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
16 | }
17 |
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
22 | }
23 | }
24 | compileOptions {
25 | sourceCompatibility JavaVersion.VERSION_1_8
26 | targetCompatibility JavaVersion.VERSION_1_8
27 | }
28 | }
29 |
30 | dependencies {
31 | implementation 'androidx.appcompat:appcompat:1.3.1'
32 | implementation 'com.google.android.material:material:1.4.0'
33 | implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
34 | testImplementation 'junit:junit:4.+'
35 | androidTestImplementation 'androidx.test.ext:junit:1.1.3'
36 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
37 | implementation 'com.squareup.picasso:picasso:2.5.2'
38 | implementation project(":terminal-view")
39 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/allplatform/box86/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.allplatform.box86", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/assets/DroidSansMono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/assets/DroidSansMono.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/bin-map.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/assets/bin-map.zip
--------------------------------------------------------------------------------
/app/src/main/assets/data-2.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/assets/data-2.tgz
--------------------------------------------------------------------------------
/app/src/main/java/com/allplatform/box86/main/About.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86.main;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.Button;
9 |
10 | import androidx.annotation.NonNull;
11 | import androidx.annotation.Nullable;
12 | import androidx.fragment.app.Fragment;
13 |
14 | import com.allplatform.box86.R;
15 | import com.allplatform.box86.other.Run;
16 |
17 | public class About extends Fragment {
18 | @Nullable
19 | @Override
20 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
21 | View view = inflater.inflate(R.layout.about, container, false);
22 | Button button = (Button) view.findViewById(R.id.button9);
23 | button.setOnClickListener(new View.OnClickListener() {
24 | @Override
25 | public void onClick(View v) {
26 | startActivity(new Intent(getContext(), x.org.server.MainActivity.class));
27 | }
28 | });
29 | Button button1 = (Button) view.findViewById(R.id.button10);
30 | button1.setOnClickListener(new View.OnClickListener() {
31 | @Override
32 | public void onClick(View v) {
33 | startActivity(new Intent(getContext(), com.termux.app.TermuxActivity.class));
34 | }
35 | });
36 |
37 | Button button2 = (Button) view.findViewById(R.id.WineCMD);
38 | button2.setOnClickListener(new View.OnClickListener() {
39 | @Override
40 | public void onClick(View v) {
41 | boolean MODE = false;
42 | Run run = new Run();
43 | run.WineCmd(getContext(), MODE);
44 | }
45 | });
46 |
47 | return view;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/allplatform/box86/main/Mod.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86.main;
2 |
3 | import android.os.Bundle;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 |
8 | import androidx.annotation.NonNull;
9 | import androidx.annotation.Nullable;
10 | import androidx.fragment.app.Fragment;
11 |
12 | import com.allplatform.box86.R;
13 |
14 | public class Mod extends Fragment {
15 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
16 | View view = inflater.inflate(R.layout.mods, container, false);
17 | return view;
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/allplatform/box86/other/InstallAssets.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86.other;
2 |
3 | import android.os.Bundle;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.ProgressBar;
8 | import android.widget.Toast;
9 |
10 | import androidx.annotation.NonNull;
11 | import androidx.annotation.Nullable;
12 | import androidx.fragment.app.DialogFragment;
13 |
14 | import com.allplatform.box86.R;
15 |
16 | import java.io.File;
17 | import java.io.FileNotFoundException;
18 | import java.io.FileOutputStream;
19 | import java.io.IOException;
20 | import java.io.InputStream;
21 | import java.util.zip.ZipEntry;
22 | import java.util.zip.ZipInputStream;
23 |
24 | public class InstallAssets extends DialogFragment {
25 | ProgressBar progressBar;
26 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
27 | super.onCreateView(inflater, container, savedInstanceState);
28 | View view = inflater.inflate(R.layout.dialog_loading, container, false);
29 | progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
30 | getDialog().setCancelable(false);
31 | Thread thread = new Thread(new Runnable() {
32 | @Override
33 | public void run() {
34 | try {
35 | unzip(new File("/data/data/com.allplatform.box86/home"));
36 | } catch (IOException e) {
37 | e.printStackTrace();
38 | }
39 | try {
40 | Runtime.getRuntime().exec("chmod -R 777 /data/data/com.allplatform.box86/home");
41 | } catch (IOException e) {
42 | e.printStackTrace();
43 | Toast.makeText(getContext(), "Error chmod", Toast.LENGTH_SHORT).show();
44 | }
45 | }
46 | });
47 | thread.start();
48 | return view;
49 | }
50 | public void unzip(File targetDirectory) throws IOException {
51 | InputStream inputStream = getActivity().getAssets().open("WineBox86.zip");
52 | ZipInputStream zis = new ZipInputStream(inputStream);
53 | try {
54 | ZipEntry ze;
55 | int count;
56 | byte[] buffer = new byte[8192];
57 | while ((ze = zis.getNextEntry()) != null) {
58 | File file = new File(targetDirectory, ze.getName());
59 | File dir = ze.isDirectory() ? file : file.getParentFile();
60 | if (!dir.isDirectory() && !dir.mkdirs())
61 | throw new FileNotFoundException("Failed to ensure directory: " +
62 | dir.getAbsolutePath());
63 | if (ze.isDirectory())
64 | continue;
65 | FileOutputStream fout = new FileOutputStream(file);
66 | try {
67 | while ((count = zis.read(buffer)) != -1)
68 | fout.write(buffer, 0, count);
69 | } finally {
70 | fout.close();
71 | }
72 | }
73 | } finally {
74 | zis.close();
75 | dismiss();
76 | }
77 | }
78 | }
79 |
80 |
--------------------------------------------------------------------------------
/app/src/main/java/com/allplatform/box86/other/Run.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86.other;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.allplatform.box86.MainActivity;
7 | import com.termux.app.RunCommandService;
8 |
9 | import java.io.File;
10 | import java.io.FileWriter;
11 | import java.io.IOException;
12 |
13 | public class Run {
14 | final String PKG = "/data/data/com.allplatform.box86";
15 | final String BOX86 = PKG + "/home/Wine/box86";
16 | final String WINE = PKG + "/home/Wine/x86/bin/wine";
17 | final String LIBDIR = PKG+ "/home/Wine/lib";
18 | final String LD_LIBRARY_PATH="LD_LIBRARY_PATH=" + LIBDIR;
19 | final String RUN = PKG + "/home/run.sh";
20 | public void RunWine(String Winescr, String Winefrefix, boolean MODE, Context context) {
21 | final String SETTING;
22 | final String WINEFREFIX = Winefrefix;
23 | String WINESCR = Winescr;
24 | String TFM = PKG + "/home/TFM.exe";
25 | String DESKTOPSHELL = "explorer /desktop=shell," + WINESCR + " " + TFM;
26 | if (MainActivity.setting.getAll().toString().replaceAll("\\{","").replaceAll("\\}","") == ""){
27 | SETTING = "";
28 | }else {
29 | SETTING = MainActivity.setting.getAll().toString().replaceAll("\\{", "").replaceAll("\\}", "").replaceAll(",","") + " ";
30 | }
31 |
32 | if (WINEFREFIX == null) {
33 | try {
34 | FileWriter mFileWriter = new FileWriter(RUN);
35 | mFileWriter.write(LD_LIBRARY_PATH + " " + SETTING + " " + BOX86 + " " + WINE + " " + DESKTOPSHELL + ">/sdcard/Box86Log.txt");
36 | mFileWriter.close();
37 | } catch (IOException e) {
38 | e.printStackTrace();
39 | }
40 | } else {
41 | try {
42 | FileWriter mFileWriter = new FileWriter(RUN);
43 | mFileWriter.write(LD_LIBRARY_PATH + " " + SETTING + " " + WINEFREFIX);
44 | mFileWriter.close();
45 | } catch (IOException e) {
46 | e.printStackTrace();
47 | }
48 | }
49 |
50 | try {
51 | Runtime.getRuntime().exec("chmod 777 " + RUN);
52 | } catch (IOException e) {
53 | e.printStackTrace();
54 | }
55 |
56 | //x.org.server.Settings
57 |
58 | File resetsetting = new File(PKG + "/files/libsdl-settings.cfg");
59 | if (resetsetting.exists()) {
60 | resetsetting.delete();
61 | }
62 | //RUN XServer XSDL
63 | context.startActivity(new Intent(context, x.org.server.MainActivity.class));
64 | //Run TERMUX Service
65 | StartTermux(context, RUN ,MODE);
66 | }
67 |
68 | private void StartTermux(Context context, String RUN, boolean MODE) {
69 | context.startService(new Intent(context, RunCommandService.class)
70 | .putExtra("com.termux.RUN_COMMAND_PATH", "/system/bin/sh")
71 | .putExtra("com.termux.RUN_COMMAND_ARGUMENTS", new String[]{RUN})
72 | .putExtra("com.termux.RUN_COMMAND_BACKGROUND", MODE));
73 | }
74 |
75 | public void WineCmd(Context context, boolean MODE) {
76 | try {
77 | FileWriter mFileWriter = new FileWriter(RUN);
78 | mFileWriter.write(LD_LIBRARY_PATH + " " + BOX86 + " " + WINE + " " + "cmd");
79 | mFileWriter.close();
80 | } catch (IOException e) {
81 | e.printStackTrace();
82 | }
83 | StartTermux(context, RUN, MODE);
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/app/src/main/java/com/allplatform/box86/other/mDialog.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86.other;
2 |
3 | import android.app.Dialog;
4 | import android.content.Context;
5 | import android.content.SharedPreferences;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.Window;
9 | import android.widget.TextView;
10 |
11 | import androidx.fragment.app.FragmentActivity;
12 |
13 | import com.allplatform.box86.MainActivity;
14 | import com.allplatform.box86.R;
15 |
16 | public class mDialog {
17 | public mDialog(FragmentActivity fragmentActivity, Context context, int title, int body, String ok, String cancel, int code) {
18 | LayoutInflater inflater = LayoutInflater.from(context);
19 | View view = inflater.inflate(R.layout.dialog, null);
20 | TextView Tntitle = (TextView) view.findViewById(R.id.dialog_title);
21 | Tntitle.setText(title);
22 | TextView Tbody = (TextView) view.findViewById(R.id.dialog_body);
23 | Tbody.setText(body);
24 | TextView Tok = (TextView) view.findViewById(R.id.dialog_ok);
25 | Tok.setText(ok);
26 | TextView Tcancel = (TextView) view.findViewById(R.id.dialog_cancel);
27 | Tcancel.setText(cancel);
28 | Dialog dialog = new Dialog(context);
29 | dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
30 | dialog.setContentView(view);
31 | dialog.setCancelable(false);
32 | dialog.show();
33 | SharedPreferences.Editor Editor = MainActivity.data.edit();
34 | if (code == 1) {
35 | click(fragmentActivity, Editor, dialog, Tcancel, Tok);
36 | }
37 | if (code == 2) {
38 | click2(Editor, dialog, Tcancel, Tok);
39 | }
40 | }
41 | private void click2(SharedPreferences.Editor Editor, Dialog dialog, TextView Tcancel, TextView Tok) {
42 | Tok.setOnClickListener(new View.OnClickListener() {
43 | @Override
44 | public void onClick(View v) {
45 | dialog.dismiss();
46 | }
47 | });
48 | Tcancel.setOnClickListener(new View.OnClickListener() {
49 | @Override
50 | public void onClick(View v) {
51 | dialog.dismiss();
52 | Editor.putInt("lib", 1).apply();
53 | }
54 | });
55 | }
56 |
57 | private void click(FragmentActivity fragmentActivity, SharedPreferences.Editor Editor, Dialog dialog, TextView Tcancel, TextView Tok) {
58 | Tok.setOnClickListener(new View.OnClickListener() {
59 | @Override
60 | public void onClick(View v) {
61 | dialog.dismiss();
62 | if (MainActivity.data.getInt("InstallAssets", 0) == 1) {
63 | //
64 | } else {
65 | InstallAssets installAssets = new InstallAssets();
66 | installAssets.show(fragmentActivity.getSupportFragmentManager(), "install");
67 | Editor.putInt("InstallAssets", 1).apply();
68 | }
69 | }
70 | });
71 | Tcancel.setOnClickListener(new View.OnClickListener() {
72 | @Override
73 | public void onClick(View v) {
74 | dialog.dismiss();
75 | Editor.putInt("home", 1).apply();
76 | if (MainActivity.data.getInt("InstallAssets", 0) == 1) {
77 | //
78 | } else {
79 | InstallAssets installAssets = new InstallAssets();
80 | installAssets.show(fragmentActivity.getSupportFragmentManager(), "install");
81 | Editor.putInt("InstallAssets", 1).apply();
82 | }
83 | }
84 | });
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/app/src/main/java/com/termux/app/BellUtil.java:
--------------------------------------------------------------------------------
1 | package com.termux.app;
2 |
3 | import android.content.Context;
4 | import android.os.Handler;
5 | import android.os.Looper;
6 | import android.os.SystemClock;
7 | import android.os.Vibrator;
8 |
9 | public class BellUtil {
10 | private static BellUtil instance = null;
11 | private static final Object lock = new Object();
12 |
13 | public static BellUtil getInstance(Context context) {
14 | if (instance == null) {
15 | synchronized (lock) {
16 | if (instance == null) {
17 | instance = new BellUtil((Vibrator) context.getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE));
18 | }
19 | }
20 | }
21 |
22 | return instance;
23 | }
24 |
25 | private static final long DURATION = 50;
26 | private static final long MIN_PAUSE = 3 * DURATION;
27 |
28 | private final Handler handler = new Handler(Looper.getMainLooper());
29 | private long lastBell = 0;
30 | private final Runnable bellRunnable;
31 |
32 | private BellUtil(final Vibrator vibrator) {
33 | bellRunnable = new Runnable() {
34 | @Override
35 | public void run() {
36 | if (vibrator != null) {
37 | vibrator.vibrate(DURATION);
38 | }
39 | }
40 | };
41 | }
42 |
43 | public synchronized void doBell() {
44 | long now = now();
45 | long timeSinceLastBell = now - lastBell;
46 |
47 | if (timeSinceLastBell < 0) {
48 | // there is a next bell pending; don't schedule another one
49 | } else if (timeSinceLastBell < MIN_PAUSE) {
50 | // there was a bell recently, scheudle the next one
51 | handler.postDelayed(bellRunnable, MIN_PAUSE - timeSinceLastBell);
52 | lastBell = lastBell + MIN_PAUSE;
53 | } else {
54 | // the last bell was long ago, do it now
55 | bellRunnable.run();
56 | lastBell = now;
57 | }
58 | }
59 |
60 | private long now() {
61 | return SystemClock.uptimeMillis();
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/java/com/termux/app/DialogUtils.java:
--------------------------------------------------------------------------------
1 | package com.termux.app;
2 |
3 | import android.app.Activity;
4 | import android.app.AlertDialog;
5 | import android.content.DialogInterface;
6 | import android.text.Selection;
7 | import android.util.TypedValue;
8 | import android.view.KeyEvent;
9 | import android.view.ViewGroup.LayoutParams;
10 | import android.widget.EditText;
11 | import android.widget.LinearLayout;
12 |
13 | public final class DialogUtils {
14 |
15 | public interface TextSetListener {
16 | void onTextSet(String text);
17 | }
18 |
19 | public static void textInput(Activity activity, int titleText, String initialText,
20 | int positiveButtonText, final TextSetListener onPositive,
21 | int neutralButtonText, final TextSetListener onNeutral,
22 | int negativeButtonText, final TextSetListener onNegative,
23 | final DialogInterface.OnDismissListener onDismiss) {
24 | final EditText input = new EditText(activity);
25 | input.setSingleLine();
26 | if (initialText != null) {
27 | input.setText(initialText);
28 | Selection.setSelection(input.getText(), initialText.length());
29 | }
30 |
31 | final AlertDialog[] dialogHolder = new AlertDialog[1];
32 | input.setImeActionLabel(activity.getResources().getString(positiveButtonText), KeyEvent.KEYCODE_ENTER);
33 | input.setOnEditorActionListener((v, actionId, event) -> {
34 | onPositive.onTextSet(input.getText().toString());
35 | dialogHolder[0].dismiss();
36 | return true;
37 | });
38 |
39 | float dipInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, activity.getResources().getDisplayMetrics());
40 | // https://www.google.com/design/spec/components/dialogs.html#dialogs-specs
41 | int paddingTopAndSides = Math.round(16 * dipInPixels);
42 | int paddingBottom = Math.round(24 * dipInPixels);
43 |
44 | LinearLayout layout = new LinearLayout(activity);
45 | layout.setOrientation(LinearLayout.VERTICAL);
46 | layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
47 | layout.setPadding(paddingTopAndSides, paddingTopAndSides, paddingTopAndSides, paddingBottom);
48 | layout.addView(input);
49 |
50 | AlertDialog.Builder builder = new AlertDialog.Builder(activity)
51 | .setTitle(titleText).setView(layout)
52 | .setPositiveButton(positiveButtonText, (d, whichButton) -> onPositive.onTextSet(input.getText().toString()));
53 |
54 | if (onNeutral != null) {
55 | builder.setNeutralButton(neutralButtonText, (dialog, which) -> onNeutral.onTextSet(input.getText().toString()));
56 | }
57 |
58 | if (onNegative == null) {
59 | builder.setNegativeButton(android.R.string.cancel, null);
60 | } else {
61 | builder.setNegativeButton(negativeButtonText, (dialog, which) -> onNegative.onTextSet(input.getText().toString()));
62 | }
63 |
64 | if (onDismiss != null) builder.setOnDismissListener(onDismiss);
65 |
66 | dialogHolder[0] = builder.create();
67 | dialogHolder[0].setCanceledOnTouchOutside(false);
68 | dialogHolder[0].show();
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/app/src/main/java/com/termux/app/FullScreenWorkAround.java:
--------------------------------------------------------------------------------
1 | package com.termux.app;
2 |
3 | import android.graphics.Rect;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 |
7 | /**
8 | * Work around for fullscreen mode in Termux to fix ExtraKeysView not being visible.
9 | * This class is derived from:
10 | * https://stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-softkeyboard-is-visible
11 | * and has some additional tweaks
12 | * ---
13 | * For more information, see https://issuetracker.google.com/issues/36911528
14 | */
15 | public class FullScreenWorkAround {
16 | private View mChildOfContent;
17 | private int mUsableHeightPrevious;
18 | private ViewGroup.LayoutParams mViewGroupLayoutParams;
19 |
20 | private int mNavBarHeight;
21 |
22 |
23 | public static void apply(TermuxActivity activity) {
24 | new FullScreenWorkAround(activity);
25 | }
26 |
27 | private FullScreenWorkAround(TermuxActivity activity) {
28 | ViewGroup content = activity.findViewById(android.R.id.content);
29 | mChildOfContent = content.getChildAt(0);
30 | mViewGroupLayoutParams = mChildOfContent.getLayoutParams();
31 | mNavBarHeight = activity.getNavBarHeight();
32 | mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(this::possiblyResizeChildOfContent);
33 | }
34 |
35 | private void possiblyResizeChildOfContent() {
36 | int usableHeightNow = computeUsableHeight();
37 | if (usableHeightNow != mUsableHeightPrevious) {
38 | int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
39 | int heightDifference = usableHeightSansKeyboard - usableHeightNow;
40 | if (heightDifference > (usableHeightSansKeyboard / 4)) {
41 | // keyboard probably just became visible
42 |
43 | // ensures that usable layout space does not extend behind the
44 | // soft keyboard, causing the extra keys to not be visible
45 | mViewGroupLayoutParams.height = (usableHeightSansKeyboard - heightDifference) + getNavBarHeight();
46 | } else {
47 | // keyboard probably just became hidden
48 | mViewGroupLayoutParams.height = usableHeightSansKeyboard;
49 | }
50 | mChildOfContent.requestLayout();
51 | mUsableHeightPrevious = usableHeightNow;
52 | }
53 | }
54 |
55 | private int getNavBarHeight() {
56 | return mNavBarHeight;
57 | }
58 |
59 | private int computeUsableHeight() {
60 | Rect r = new Rect();
61 | mChildOfContent.getWindowVisibleDisplayFrame(r);
62 | return (r.bottom - r.top);
63 | }
64 |
65 | }
66 |
67 |
--------------------------------------------------------------------------------
/app/src/main/java/com/termux/app/TermuxHelpActivity.java:
--------------------------------------------------------------------------------
1 | package com.termux.app;
2 |
3 | import android.app.Activity;
4 | import android.content.ActivityNotFoundException;
5 | import android.content.Intent;
6 | import android.net.Uri;
7 | import android.os.Bundle;
8 | import android.view.ViewGroup;
9 | import android.webkit.WebSettings;
10 | import android.webkit.WebView;
11 | import android.webkit.WebViewClient;
12 | import android.widget.ProgressBar;
13 | import android.widget.RelativeLayout;
14 |
15 | /** Basic embedded browser for viewing help pages. */
16 | public final class TermuxHelpActivity extends Activity {
17 |
18 | WebView mWebView;
19 |
20 | @Override
21 | protected void onCreate(Bundle savedInstanceState) {
22 | super.onCreate(savedInstanceState);
23 |
24 | final RelativeLayout progressLayout = new RelativeLayout(this);
25 | RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
26 | lParams.addRule(RelativeLayout.CENTER_IN_PARENT);
27 | ProgressBar progressBar = new ProgressBar(this);
28 | progressBar.setIndeterminate(true);
29 | progressBar.setLayoutParams(lParams);
30 | progressLayout.addView(progressBar);
31 |
32 | mWebView = new WebView(this);
33 | WebSettings settings = mWebView.getSettings();
34 | settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
35 | settings.setAppCacheEnabled(false);
36 | setContentView(progressLayout);
37 | mWebView.clearCache(true);
38 |
39 | mWebView.setWebViewClient(new WebViewClient() {
40 | @Override
41 | public boolean shouldOverrideUrlLoading(WebView view, String url) {
42 | if (url.startsWith("https://wiki.termux.com")) {
43 | // Inline help.
44 | setContentView(progressLayout);
45 | return false;
46 | }
47 |
48 | try {
49 | startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
50 | } catch (ActivityNotFoundException e) {
51 | // Android TV does not have a system browser.
52 | setContentView(progressLayout);
53 | return false;
54 | }
55 | return true;
56 | }
57 |
58 | @Override
59 | public void onPageFinished(WebView view, String url) {
60 | setContentView(mWebView);
61 | }
62 | });
63 | mWebView.loadUrl("https://wiki.termux.com/wiki/Main_Page");
64 | }
65 |
66 | @Override
67 | public void onBackPressed() {
68 | if (mWebView.canGoBack()) {
69 | mWebView.goBack();
70 | } else {
71 | super.onBackPressed();
72 | }
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/app/src/main/java/x/org/server/Advertisement.java:
--------------------------------------------------------------------------------
1 | // DO NOT EDIT THIS FILE - it is automatically generated, ALL YOUR CHANGES WILL BE OVERWRITTEN, edit the file under $JAVA_SRC_PATH dir
2 | /*
3 | Simple DirectMedia Layer
4 | Java source code (C) 2009-2014 Sergii Pylypenko
5 |
6 | This software is provided 'as-is', without any express or implied
7 | warranty. In no event will the authors be held liable for any damages
8 | arising from the use of this software.
9 |
10 | Permission is granted to anyone to use this software for any purpose,
11 | including commercial applications, and to alter it and redistribute it
12 | freely, subject to the following restrictions:
13 |
14 | 1. The origin of this software must not be misrepresented; you must not
15 | claim that you wrote the original software. If you use this software
16 | in a product, an acknowledgment in the product documentation would be
17 | appreciated but is not required.
18 | 2. Altered source versions must be plainly marked as such, and must not be
19 | misrepresented as being the original software.
20 | 3. This notice may not be removed or altered from any source distribution.
21 | */
22 |
23 | package x.org.server;
24 |
25 | import android.view.View;
26 |
27 | class Advertisement
28 | {
29 | MainActivity parent;
30 |
31 | public Advertisement(MainActivity p)
32 | {
33 | parent = p;
34 | }
35 |
36 | public View getView()
37 | {
38 | return null;
39 | }
40 |
41 | public void requestNewAd()
42 | {
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/x/org/server/CloudSave.java:
--------------------------------------------------------------------------------
1 | // DO NOT EDIT THIS FILE - it is automatically generated, ALL YOUR CHANGES WILL BE OVERWRITTEN, edit the file under $JAVA_SRC_PATH dir
2 | /*
3 | Simple DirectMedia Layer
4 | Java source code (C) 2009-2014 Sergii Pylypenko
5 |
6 | This software is provided 'as-is', without any express or implied
7 | warranty. In no event will the authors be held liable for any damages
8 | arising from the use of this software.
9 |
10 | Permission is granted to anyone to use this software for any purpose,
11 | including commercial applications, and to alter it and redistribute it
12 | freely, subject to the following restrictions:
13 |
14 | 1. The origin of this software must not be misrepresented; you must not
15 | claim that you wrote the original software. If you use this software
16 | in a product, an acknowledgment in the product documentation would be
17 | appreciated but is not required.
18 | 2. Altered source versions must be plainly marked as such, and must not be
19 | misrepresented as being the original software.
20 | 3. This notice may not be removed or altered from any source distribution.
21 | */
22 |
23 | package x.org.server;
24 |
25 | import android.content.Intent;
26 |
27 | // Stub class for compiling without cloud save support
28 | class CloudSave
29 | {
30 | public CloudSave(MainActivity p)
31 | {
32 | }
33 |
34 | public void onStart() {
35 | }
36 |
37 | public void onStop() {
38 | }
39 |
40 | public void onActivityResult(int request, int response, Intent data) {
41 | }
42 |
43 | public boolean save(String filename, String saveId, String dialogTitle, String description, String imageFile, long playedTimeMs)
44 | {
45 | return false;
46 | }
47 |
48 | public boolean load(String filename, String saveId, String dialogTitle)
49 | {
50 | return false;
51 | }
52 |
53 | public boolean isSignedIn()
54 | {
55 | return false;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app/src/main/java/x/org/server/RunFromOtherApp.java:
--------------------------------------------------------------------------------
1 | /*
2 | Simple DirectMedia Layer
3 | Java source code (C) 2009-2014 Sergii Pylypenko
4 |
5 | This software is provided 'as-is', without any express or implied
6 | warranty. In no event will the authors be held liable for any damages
7 | arising from the use of this software.
8 |
9 | Permission is granted to anyone to use this software for any purpose,
10 | including commercial applications, and to alter it and redistribute it
11 | freely, subject to the following restrictions:
12 |
13 | 1. The origin of this software must not be misrepresented; you must not
14 | claim that you wrote the original software. If you use this software
15 | in a product, an acknowledgment in the product documentation would be
16 | appreciated but is not required.
17 | 2. Altered source versions must be plainly marked as such, and must not be
18 | misrepresented as being the original software.
19 | 3. This notice may not be removed or altered from any source distribution.
20 | */
21 |
22 | package x.org.server;
23 |
24 | import android.app.Activity;
25 | import android.content.ComponentName;
26 | import android.content.Intent;
27 | import android.net.Uri;
28 | import android.os.Bundle;
29 | import android.util.Log;
30 |
31 |
32 | public class RunFromOtherApp extends Activity
33 | {
34 | @Override
35 | protected void onCreate(Bundle savedInstanceState)
36 | {
37 | super.onCreate(savedInstanceState);
38 |
39 | Log.i("SDL", "Run from another app, getCallingActivity() is " +( getCallingActivity() == null ? "null" : "not null" ));
40 |
41 | Intent main = new Intent(this, MainActivity.class);
42 | main.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
43 | if( getIntent().getScheme() != null && getIntent().getScheme().equals("x11") )
44 | {
45 | int port = getIntent().getData().getPort();
46 | if (port >= 0)
47 | {
48 | if (port >= 6000)
49 | port -= 6000;
50 | //Globals.CommandLine = Globals.CommandLine + " :" + port;
51 | main.putExtra(RestartMainActivity.SDL_RESTART_PARAMS, ":" + port);
52 | }
53 | }
54 | startActivity(main);
55 |
56 | new Thread(new Runnable()
57 | {
58 | public void run()
59 | {
60 | Log.i("SDL", "Waiting for env vars to be set");
61 | while( System.getenv("DISPLAY") == null || System.getenv("PULSE_SERVER") == null )
62 | {
63 | try {
64 | Thread.sleep(300);
65 | } catch (InterruptedException e) {}
66 | }
67 | Log.i("SDL", "Env vars set, returning result, getCallingActivity() is " + (getCallingActivity() == null ? "null" : "not null"));
68 |
69 | if( getCallingActivity() != null )
70 | {
71 | final ComponentName callingActivity = getCallingActivity().clone();
72 | Log.i("SDL", "Launching calling activity: " + getCallingActivity().toString());
73 | new Thread(new Runnable()
74 | {
75 | public void run()
76 | {
77 | try {
78 | Thread.sleep(500);
79 | } catch (InterruptedException e) {}
80 | Intent caller = new Intent();
81 | caller.setComponent(callingActivity);
82 | caller.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
83 | Log.i("SDL", "Launching calling activity: " + caller.toString());
84 | startActivity(caller);
85 | }
86 | }).start();
87 | }
88 |
89 | Intent intent = new Intent(Intent.ACTION_RUN, Uri.parse("x11://run?DISPLAY=" + Uri.encode(System.getenv("DISPLAY")) + "&PULSE_SERVER=" + Uri.encode(System.getenv("PULSE_SERVER"))));
90 | intent.putExtra("DISPLAY", System.getenv("DISPLAY"));
91 | intent.putExtra("PULSE_SERVER", System.getenv("PULSE_SERVER"));
92 | intent.putExtra("run", "export DISPLAY=" + System.getenv("DISPLAY") + " ; export PULSE_SERVER=" + System.getenv("PULSE_SERVER"));
93 | setResult(Activity.RESULT_OK, intent);
94 | finish();
95 | }
96 | }).start();
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib0.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib0.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib1.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib1.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib10.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib10.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib11.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib11.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib12.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib12.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib13.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib13.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib14.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib14.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib15.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib15.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib16.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib16.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib17.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib17.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib18.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib18.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib19.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib19.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib2.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib20.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib20.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib21.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib21.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib22.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib22.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib23.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib23.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib24.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib24.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib25.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib25.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib26.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib26.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib27.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib27.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib28.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib28.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib29.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib29.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib3.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib3.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib30.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib30.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib31.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib31.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib32.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib32.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib33.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib33.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib34.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib34.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib35.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib35.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib36.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib36.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib37.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib37.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib38.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib38.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib39.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib39.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib4.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib4.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib40.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib40.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib41.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib41.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib42.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib42.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib43.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib43.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib44.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib44.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib45.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib45.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib46.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib46.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib47.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib47.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib48.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib48.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib49.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib49.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib5.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib5.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib50.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib50.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib51.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib51.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib52.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib52.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib53.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib53.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib54.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib54.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib55.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib55.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib56.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib56.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib57.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib57.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib58.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib58.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib59.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib59.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib6.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib6.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib60.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib60.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib61.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib61.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib62.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib62.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib63.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib63.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib64.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib64.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib65.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib65.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib66.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib66.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib67.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib67.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib68.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib68.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib69.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib69.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib7.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib7.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib70.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib70.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib71.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib71.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib72.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib72.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib8.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib8.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/lib9.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/lib9.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libapplication.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libapplication.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libcrypto.so.sdl.1.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libcrypto.so.sdl.1.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libsdl-1.2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libsdl-1.2.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libsdl_main.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libsdl_main.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libsdl_native_helpers.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libsdl_native_helpers.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libsdl_ttf.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libsdl_ttf.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libtermux.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/armeabi-v7a/libtermux.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib0.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib0.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib1.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib1.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib10.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib10.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib11.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib11.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib12.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib12.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib13.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib13.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib14.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib14.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib15.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib15.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib16.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib16.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib17.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib17.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib18.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib18.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib19.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib19.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib2.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib20.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib20.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib21.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib21.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib22.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib22.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib23.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib23.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib24.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib24.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib25.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib25.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib26.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib26.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib27.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib27.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib28.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib28.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib29.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib29.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib3.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib3.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib30.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib30.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib31.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib31.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib32.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib32.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib33.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib33.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib34.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib34.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib35.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib35.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib36.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib36.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib37.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib37.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib38.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib38.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib39.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib39.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib4.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib4.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib40.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib40.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib41.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib41.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib42.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib42.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib43.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib43.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib44.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib44.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib45.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib45.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib46.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib46.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib47.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib47.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib48.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib48.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib49.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib49.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib5.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib5.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib50.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib50.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib51.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib51.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib52.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib52.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib53.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib53.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib54.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib54.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib55.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib55.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib56.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib56.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib57.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib57.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib58.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib58.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib59.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib59.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib6.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib6.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib60.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib60.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib61.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib61.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib62.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib62.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib63.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib63.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib64.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib64.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib65.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib65.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib66.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib66.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib67.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib67.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib68.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib68.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib69.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib69.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib7.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib7.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib70.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib70.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib71.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib71.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib72.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib72.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib8.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib8.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/lib9.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/lib9.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libapplication.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libapplication.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libcrypto.so.sdl.1.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libcrypto.so.sdl.1.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libsdl-1.2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libsdl-1.2.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libsdl_main.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libsdl_main.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libsdl_native_helpers.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libsdl_native_helpers.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libsdl_ttf.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libsdl_ttf.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libtermux.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/jniLibs/x86/libtermux.so
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
18 |
21 |
22 |
23 |
24 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/addfile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/addfile.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/appicon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/b1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/b1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/b2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/b2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/b3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/b3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/b4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/b4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/b5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/b5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/b6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/b6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/back72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/back72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/banner.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_mdialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_mdialogbottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/box86logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/box86logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/calibrate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/calibrate.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/current_session.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/current_session_black.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/discord72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/discord72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/dpad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/dpad.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/fb72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/fb72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/file72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/folder72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/folder72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/github72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/github72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/home72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/home72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_menu_24.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_foreground.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
18 |
19 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_new_session.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
13 |
14 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_service_notification.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
12 |
14 |
15 |
18 |
19 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/info72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/info72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/keyboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/keyboard.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/lib72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/lib72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/menu72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/menu72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/nav_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/openfl64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/openfl64x64.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/publisherlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/publisherlogo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rectangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/rectangle.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selected_session_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selected_session_background_black.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/session_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/session_ripple_black.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/setting72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/setting72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tar72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/tar72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/terminal_scroll_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tv_border_left.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/tv_border_left.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tv_border_top.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/tv_border_top.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/un72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/un72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/wine72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/wine72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/youtube72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/drawable/youtube72x72.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/about.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
22 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
20 |
21 |
22 |
28 |
29 |
33 |
34 |
35 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog.xml:
--------------------------------------------------------------------------------
1 |
9 |
15 |
20 |
21 |
30 |
31 |
37 |
46 |
47 |
53 |
61 |
62 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
13 |
18 |
19 |
27 |
28 |
29 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/drawer_layout.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
13 |
14 |
25 |
26 |
37 |
38 |
46 |
47 |
52 |
53 |
60 |
61 |
68 |
69 |
70 |
71 |
72 |
73 |
80 |
81 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/extra_keys_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/extra_keys_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/filemgr.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
20 |
26 |
27 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/home.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
11 |
12 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_navigation.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
17 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
22 |
23 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/library.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/library_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
20 |
21 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/line_in_drawer.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/mods.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/notification.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
25 |
26 |
37 |
38 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/wine.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
22 |
23 |
29 |
30 |
36 |
37 |
38 |
44 |
45 |
51 |
52 |
58 |
59 |
60 |
69 |
70 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_navigation.xml:
--------------------------------------------------------------------------------
1 |
2 |
55 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/app/src/main/res/raw/bell.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/bell.ogg
--------------------------------------------------------------------------------
/app/src/main/res/raw/dualshock.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/dualshock.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/gba.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/gba.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/keen.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/keen.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/n64.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/n64.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/psx.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/psx.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/retro.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/retro.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/simpletheme.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/simpletheme.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/snes.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/snes.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/sun.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/sun.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/ultimatedroid.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/ultimatedroid.raw
--------------------------------------------------------------------------------
/app/src/main/res/raw/xsdl.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/app/src/main/res/raw/xsdl.raw
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimen.xml:
--------------------------------------------------------------------------------
1 |
2 | 0dp
3 | 0dp
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
23 |
24 |
28 |
29 |
30 |
31 |
49 |
50 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/amiga.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/amiga_alt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/amiga_alt_shift.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/amiga_shift.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/qwerty.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/qwerty_alt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/qwerty_shift.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/shortcuts.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
10 |
14 |
15 |
16 |
22 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/test/java/com/allplatform/box86/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.allplatform.box86;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | repositories {
4 | google()
5 | mavenCentral()
6 | jcenter()
7 | }
8 | dependencies {
9 | classpath "com.android.tools.build:gradle:7.0.3"
10 |
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | task clean(type: Delete) {
18 | delete rootProject.buildDir
19 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AllPlatform/Box86Launcher/690304bcd84ba13df6d76226ce9fa994b8983af4/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Nov 13 00:31:40 PST 2021
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | dependencyResolutionManagement {
2 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
3 | repositories {
4 | google()
5 | mavenCentral()
6 | jcenter() // Warning: this repository is going to shut down soon
7 | }
8 | }
9 | rootProject.name = "AndroidBox86"
10 | include ':app', ':terminal-emulator', ':terminal-view'
11 |
--------------------------------------------------------------------------------
/terminal-emulator/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'maven-publish'
3 |
4 | android {
5 | compileSdkVersion 31
6 |
7 | buildTypes {
8 | release {
9 | minifyEnabled false
10 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
11 | }
12 | }
13 |
14 | defaultConfig {
15 | minSdkVersion 21
16 | //noinspection ExpiredTargetSdkVersion
17 | targetSdkVersion 28
18 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
19 | }
20 |
21 | compileOptions {
22 | sourceCompatibility JavaVersion.VERSION_1_8
23 | targetCompatibility JavaVersion.VERSION_1_8
24 | }
25 |
26 | testOptions {
27 | unitTests.returnDefaultValues = true
28 | }
29 | }
30 |
31 | tasks.withType(Test) {
32 | testLogging {
33 | events "started", "passed", "skipped", "failed"
34 | }
35 | }
36 |
37 | dependencies {
38 | testImplementation 'junit:junit:4.13.1'
39 | }
40 |
41 |
42 | publishing {
43 | publications {
44 | bar(MavenPublication) {
45 | groupId 'com.termux'
46 | artifactId 'terminal-emulator'
47 | version '0.106.1'
48 | artifact("$buildDir/outputs/aar/terminal-emulator-release.aar")
49 | }
50 | }
51 |
52 | repositories {
53 | maven {
54 | name = "GitHubPackages"
55 | url = uri("https://maven.pkg.github.com/termux/termux-app")
56 |
57 | credentials {
58 | username = System.getenv("GH_USERNAME")
59 | password = System.getenv("GH_TOKEN")
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/terminal-emulator/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/fornwall/lib/android-sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/terminal-emulator/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/terminal-emulator/src/main/java/com/termux/terminal/EmulatorDebug.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | import android.util.Log;
4 |
5 | public final class EmulatorDebug {
6 |
7 | /** The tag to use with {@link Log}. */
8 | public static final String LOG_TAG = "termux";
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/terminal-emulator/src/main/java/com/termux/terminal/JNI.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | /**
4 | * Native methods for creating and managing pseudoterminal subprocesses. C code is in jni/termux.c.
5 | */
6 | final class JNI {
7 |
8 | static {
9 | System.loadLibrary("termux");
10 | }
11 |
12 | /**
13 | * Create a subprocess. Differs from {@link ProcessBuilder} in that a pseudoterminal is used to communicate with the
14 | * subprocess.
15 | *
16 | * Callers are responsible for calling {@link #close(int)} on the returned file descriptor.
17 | *
18 | * @param cmd The command to execute
19 | * @param cwd The current working directory for the executed command
20 | * @param args An array of arguments to the command
21 | * @param envVars An array of strings of the form "VAR=value" to be added to the environment of the process
22 | * @param processId A one-element array to which the process ID of the started process will be written.
23 | * @return the file descriptor resulting from opening /dev/ptmx master device. The sub process will have opened the
24 | * slave device counterpart (/dev/pts/$N) and have it as stdint, stdout and stderr.
25 | */
26 | public static native int createSubprocess(String cmd, String cwd, String[] args, String[] envVars, int[] processId, int rows, int columns);
27 |
28 | /** Set the window size for a given pty, which allows connected programs to learn how large their screen is. */
29 | public static native void setPtyWindowSize(int fd, int rows, int cols);
30 |
31 | /**
32 | * Causes the calling thread to wait for the process associated with the receiver to finish executing.
33 | *
34 | * @return if >= 0, the exit status of the process. If < 0, the signal causing the process to stop negated.
35 | */
36 | public static native int waitFor(int processId);
37 |
38 | /** Close a file descriptor through the close(2) system call. */
39 | public static native void close(int fileDescriptor);
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/terminal-emulator/src/main/java/com/termux/terminal/TerminalColors.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | /** Current terminal colors (if different from default). */
4 | public final class TerminalColors {
5 |
6 | /** Static data - a bit ugly but ok for now. */
7 | public static final TerminalColorScheme COLOR_SCHEME = new TerminalColorScheme();
8 |
9 | /**
10 | * The current terminal colors, which are normally set from the color theme, but may be set dynamically with the OSC
11 | * 4 control sequence.
12 | */
13 | public final int[] mCurrentColors = new int[TextStyle.NUM_INDEXED_COLORS];
14 |
15 | /** Create a new instance with default colors from the theme. */
16 | public TerminalColors() {
17 | reset();
18 | }
19 |
20 | /** Reset a particular indexed color with the default color from the color theme. */
21 | public void reset(int index) {
22 | mCurrentColors[index] = COLOR_SCHEME.mDefaultColors[index];
23 | }
24 |
25 | /** Reset all indexed colors with the default color from the color theme. */
26 | public void reset() {
27 | System.arraycopy(COLOR_SCHEME.mDefaultColors, 0, mCurrentColors, 0, TextStyle.NUM_INDEXED_COLORS);
28 | }
29 |
30 | /**
31 | * Parse color according to http://manpages.ubuntu.com/manpages/intrepid/man3/XQueryColor.3.html
32 | *
33 | * Highest bit is set if successful, so return value is 0xFF${R}${G}${B}. Return 0 if failed.
34 | */
35 | static int parse(String c) {
36 | try {
37 | int skipInitial, skipBetween;
38 | if (c.charAt(0) == '#') {
39 | // #RGB, #RRGGBB, #RRRGGGBBB or #RRRRGGGGBBBB. Most significant bits.
40 | skipInitial = 1;
41 | skipBetween = 0;
42 | } else if (c.startsWith("rgb:")) {
43 | // rgb:// where , , := h | hh | hhh | hhhh. Scaled.
44 | skipInitial = 4;
45 | skipBetween = 1;
46 | } else {
47 | return 0;
48 | }
49 | int charsForColors = c.length() - skipInitial - 2 * skipBetween;
50 | if (charsForColors % 3 != 0) return 0; // Unequal lengths.
51 | int componentLength = charsForColors / 3;
52 | double mult = 255 / (Math.pow(2, componentLength * 4) - 1);
53 |
54 | int currentPosition = skipInitial;
55 | String rString = c.substring(currentPosition, currentPosition + componentLength);
56 | currentPosition += componentLength + skipBetween;
57 | String gString = c.substring(currentPosition, currentPosition + componentLength);
58 | currentPosition += componentLength + skipBetween;
59 | String bString = c.substring(currentPosition, currentPosition + componentLength);
60 |
61 | int r = (int) (Integer.parseInt(rString, 16) * mult);
62 | int g = (int) (Integer.parseInt(gString, 16) * mult);
63 | int b = (int) (Integer.parseInt(bString, 16) * mult);
64 | return 0xFF << 24 | r << 16 | g << 8 | b;
65 | } catch (NumberFormatException | IndexOutOfBoundsException e) {
66 | return 0;
67 | }
68 | }
69 |
70 | /** Try parse a color from a text parameter and into a specified index. */
71 | public void tryParseColor(int intoIndex, String textParameter) {
72 | int c = parse(textParameter);
73 | if (c != 0) mCurrentColors[intoIndex] = c;
74 | }
75 |
76 | }
77 |
--------------------------------------------------------------------------------
/terminal-emulator/src/main/java/com/termux/terminal/TerminalOutput.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | import java.nio.charset.StandardCharsets;
4 |
5 | /** A client which receives callbacks from events triggered by feeding input to a {@link TerminalEmulator}. */
6 | public abstract class TerminalOutput {
7 |
8 | /** Write a string using the UTF-8 encoding to the terminal client. */
9 | public final void write(String data) {
10 | byte[] bytes = data.getBytes(StandardCharsets.UTF_8);
11 | write(bytes, 0, bytes.length);
12 | }
13 |
14 | /** Write bytes to the terminal client. */
15 | public abstract void write(byte[] data, int offset, int count);
16 |
17 | /** Notify the terminal client that the terminal title has changed. */
18 | public abstract void titleChanged(String oldTitle, String newTitle);
19 |
20 | /** Notify the terminal client that the terminal title has changed. */
21 | public abstract void clipboardText(String text);
22 |
23 | /** Notify the terminal client that a bell character (ASCII 7, bell, BEL, \a, ^G)) has been received. */
24 | public abstract void onBell();
25 |
26 | public abstract void onColorsChanged();
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/terminal-emulator/src/main/jni/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH:= $(call my-dir)
2 | include $(CLEAR_VARS)
3 | LOCAL_MODULE:= libtermux
4 | LOCAL_SRC_FILES:= termux.c
5 | include $(BUILD_SHARED_LIBRARY)
6 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/ByteQueueTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | import junit.framework.TestCase;
4 |
5 | public class ByteQueueTest extends TestCase {
6 |
7 | private static void assertArrayEquals(byte[] expected, byte[] actual) {
8 | if (expected.length != actual.length) {
9 | fail("Difference array length");
10 | }
11 | for (int i = 0; i < expected.length; i++) {
12 | if (expected[i] != actual[i]) {
13 | fail("Inequals at index=" + i + ", expected=" + (int) expected[i] + ", actual=" + (int) actual[i]);
14 | }
15 | }
16 | }
17 |
18 | public void testCompleteWrites() throws Exception {
19 | ByteQueue q = new ByteQueue(10);
20 | assertTrue(q.write(new byte[]{1, 2, 3}, 0, 3));
21 |
22 | byte[] arr = new byte[10];
23 | assertEquals(3, q.read(arr, true));
24 | assertArrayEquals(new byte[]{1, 2, 3}, new byte[]{arr[0], arr[1], arr[2]});
25 |
26 | assertTrue(q.write(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 0, 10));
27 | assertEquals(10, q.read(arr, true));
28 | assertArrayEquals(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, arr);
29 | }
30 |
31 | public void testQueueWraparound() throws Exception {
32 | ByteQueue q = new ByteQueue(10);
33 |
34 | byte[] origArray = new byte[]{1, 2, 3, 4, 5, 6};
35 | byte[] readArray = new byte[origArray.length];
36 | for (int i = 0; i < 20; i++) {
37 | q.write(origArray, 0, origArray.length);
38 | assertEquals(origArray.length, q.read(readArray, true));
39 | assertArrayEquals(origArray, readArray);
40 | }
41 | }
42 |
43 | public void testWriteNotesClosing() throws Exception {
44 | ByteQueue q = new ByteQueue(10);
45 | q.close();
46 | assertFalse(q.write(new byte[]{1, 2, 3}, 0, 3));
47 | }
48 |
49 | public void testReadNonBlocking() throws Exception {
50 | ByteQueue q = new ByteQueue(10);
51 | assertEquals(0, q.read(new byte[128], false));
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/ControlSequenceIntroducerTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | /** "\033[" is the Control Sequence Introducer char sequence (CSI). */
4 | public class ControlSequenceIntroducerTest extends TerminalTestCase {
5 |
6 | /** CSI Ps P Scroll down Ps lines (default = 1) (SD). */
7 | public void testCsiT() {
8 | withTerminalSized(4, 6).enterString("1\r\n2\r\n3\r\nhi\033[2Tyo\r\nA\r\nB").assertLinesAre(" ", " ", "1 ", "2 yo", "A ",
9 | "Bi ");
10 | // Default value (1):
11 | withTerminalSized(4, 6).enterString("1\r\n2\r\n3\r\nhi\033[Tyo\r\nA\r\nB").assertLinesAre(" ", "1 ", "2 ", "3 yo", "Ai ",
12 | "B ");
13 | }
14 |
15 | /** CSI Ps S Scroll up Ps lines (default = 1) (SU). */
16 | public void testCsiS() {
17 | // The behaviour here is a bit inconsistent between terminals - this is how the OS X Terminal.app does it:
18 | withTerminalSized(3, 4).enterString("1\r\n2\r\n3\r\nhi\033[2Sy").assertLinesAre("3 ", "hi ", " ", " y");
19 | // Default value (1):
20 | withTerminalSized(3, 4).enterString("1\r\n2\r\n3\r\nhi\033[Sy").assertLinesAre("2 ", "3 ", "hi ", " y");
21 | }
22 |
23 | /** CSI Ps X Erase Ps Character(s) (default = 1) (ECH). */
24 | public void testCsiX() {
25 | // See https://code.google.com/p/chromium/issues/detail?id=212712 where test was extraced from.
26 | withTerminalSized(13, 2).enterString("abcdefghijkl\b\b\b\b\b\033[X").assertLinesAre("abcdefg ijkl ", " ");
27 | withTerminalSized(13, 2).enterString("abcdefghijkl\b\b\b\b\b\033[1X").assertLinesAre("abcdefg ijkl ", " ");
28 | withTerminalSized(13, 2).enterString("abcdefghijkl\b\b\b\b\b\033[2X").assertLinesAre("abcdefg jkl ", " ");
29 | withTerminalSized(13, 2).enterString("abcdefghijkl\b\b\b\b\b\033[20X").assertLinesAre("abcdefg ", " ");
30 | }
31 |
32 | /** CSI Pm m Set SGR parameter(s) from semicolon-separated list Pm. */
33 | public void testCsiSGRParameters() {
34 | // Set more parameters (19) than supported (16). Additional parameters should be silently consumed.
35 | withTerminalSized(3, 2).enterString("\033[0;38;2;255;255;255;48;2;0;0;0;1;2;3;4;5;7;8;9mabc").assertLinesAre("abc", " ");
36 | }
37 |
38 | /** CSI Ps b Repeat the preceding graphic character Ps times (REP). */
39 | public void testRepeat() {
40 | withTerminalSized(3, 2).enterString("a\033[b").assertLinesAre("aa ", " ");
41 | withTerminalSized(3, 2).enterString("a\033[2b").assertLinesAre("aaa", " ");
42 | // When no char has been output we ignore REP:
43 | withTerminalSized(3, 2).enterString("\033[b").assertLinesAre(" ", " ");
44 | // This shows that REP outputs the last emitted code point and not the one relative to the
45 | // current cursor position:
46 | withTerminalSized(5, 2).enterString("abcde\033[2G\033[2b\n").assertLinesAre("aeede", " ");
47 | }
48 |
49 | /** CSI 3 J Clear scrollback (xterm, libvte; non-standard). */
50 | public void testCsi3J() {
51 | withTerminalSized(3, 2).enterString("a\r\nb\r\nc\r\nd");
52 | assertEquals("a\nb\nc\nd", mTerminal.getScreen().getTranscriptText());
53 | enterString("\033[3J");
54 | assertEquals("c\nd", mTerminal.getScreen().getTranscriptText());
55 |
56 | withTerminalSized(3, 2).enterString("Lorem_ipsum");
57 | assertEquals("Lorem_ipsum", mTerminal.getScreen().getTranscriptText());
58 | enterString("\033[3J");
59 | assertEquals("ipsum", mTerminal.getScreen().getTranscriptText());
60 |
61 | withTerminalSized(3, 2).enterString("w\r\nx\r\ny\r\nz\033[?1049h\033[3J\033[?1049l");
62 | assertEquals("y\nz", mTerminal.getScreen().getTranscriptText());
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/DecSetTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | /**
4 | *
5 | * "CSI ? Pm h", DEC Private Mode Set (DECSET)
6 | *
7 | *
8 | * and
9 | *
10 | *
11 | * "CSI ? Pm l", DEC Private Mode Reset (DECRST)
12 | *
13 | *
14 | * controls various aspects of the terminal
15 | */
16 | public class DecSetTest extends TerminalTestCase {
17 |
18 | /** DECSET 25, DECTCEM, controls visibility of the cursor. */
19 | public void testShowHideCursor() {
20 | withTerminalSized(3, 3);
21 | assertTrue("Initially the cursor should be visible", mTerminal.isShowingCursor());
22 | enterString("\033[?25l"); // Hide Cursor (DECTCEM).
23 | assertFalse(mTerminal.isShowingCursor());
24 | enterString("\033[?25h"); // Show Cursor (DECTCEM).
25 | assertTrue(mTerminal.isShowingCursor());
26 |
27 | enterString("\033[?25l"); // Hide Cursor (DECTCEM), again.
28 | assertFalse(mTerminal.isShowingCursor());
29 | mTerminal.reset();
30 | assertTrue("Resetting the terminal should show the cursor", mTerminal.isShowingCursor());
31 |
32 | enterString("\033[?25l");
33 | assertFalse(mTerminal.isShowingCursor());
34 | enterString("\033c"); // RIS resetting should reveal cursor.
35 | assertTrue(mTerminal.isShowingCursor());
36 | }
37 |
38 | /** DECSET 2004, controls bracketed paste mode. */
39 | public void testBracketedPasteMode() {
40 | withTerminalSized(3, 3);
41 |
42 | mTerminal.paste("a");
43 | assertEquals("Pasting 'a' should output 'a' when bracketed paste mode is disabled", "a", mOutput.getOutputAndClear());
44 |
45 | enterString("\033[?2004h"); // Enable bracketed paste mode.
46 | mTerminal.paste("a");
47 | assertEquals("Pasting when in bracketed paste mode should be bracketed", "\033[200~a\033[201~", mOutput.getOutputAndClear());
48 |
49 | enterString("\033[?2004l"); // Disable bracketed paste mode.
50 | mTerminal.paste("a");
51 | assertEquals("Pasting 'a' should output 'a' when bracketed paste mode is disabled", "a", mOutput.getOutputAndClear());
52 |
53 | enterString("\033[?2004h"); // Enable bracketed paste mode, again.
54 | mTerminal.paste("a");
55 | assertEquals("Pasting when in bracketed paste mode again should be bracketed", "\033[200~a\033[201~", mOutput.getOutputAndClear());
56 |
57 | mTerminal.paste("\033ab\033cd\033");
58 | assertEquals("Pasting an escape character should not input it", "\033[200~abcd\033[201~", mOutput.getOutputAndClear());
59 | mTerminal.paste("\u0081ab\u0081cd\u009F");
60 | assertEquals("Pasting C1 control codes should not input it", "\033[200~abcd\033[201~", mOutput.getOutputAndClear());
61 |
62 | mTerminal.reset();
63 | mTerminal.paste("a");
64 | assertEquals("Terminal reset() should disable bracketed paste mode", "a", mOutput.getOutputAndClear());
65 | }
66 |
67 | /** DECSET 7, DECAWM, controls wraparound mode. */
68 | public void testWrapAroundMode() {
69 | // Default with wraparound:
70 | withTerminalSized(3, 3).enterString("abcd").assertLinesAre("abc", "d ", " ");
71 | // With wraparound disabled:
72 | withTerminalSized(3, 3).enterString("\033[?7labcd").assertLinesAre("abd", " ", " ");
73 | enterString("efg").assertLinesAre("abg", " ", " ");
74 | // Re-enabling wraparound:
75 | enterString("\033[?7hhij").assertLinesAre("abh", "ij ", " ");
76 | }
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/DeviceControlStringTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | /**
4 | * "\033P" is a device control string.
5 | */
6 | public class DeviceControlStringTest extends TerminalTestCase {
7 |
8 | private static String hexEncode(String s) {
9 | StringBuilder result = new StringBuilder();
10 | for (int i = 0; i < s.length(); i++)
11 | result.append(String.format("%02X", (int) s.charAt(i)));
12 | return result.toString();
13 | }
14 |
15 | private void assertCapabilityResponse(String cap, String expectedResponse) {
16 | String input = "\033P+q" + hexEncode(cap) + "\033\\";
17 | assertEnteringStringGivesResponse(input, "\033P1+r" + hexEncode(cap) + "=" + hexEncode(expectedResponse) + "\033\\");
18 | }
19 |
20 | public void testReportColorsAndName() {
21 | // Request Termcap/Terminfo String. The string following the "q" is a list of names encoded in
22 | // hexadecimal (2 digits per character) separated by ; which correspond to termcap or terminfo key
23 | // names.
24 | // Two special features are also recognized, which are not key names: Co for termcap colors (or colors
25 | // for terminfo colors), and TN for termcap name (or name for terminfo name).
26 | // xterm responds with DCS 1 + r P t ST for valid requests, adding to P t an = , and the value of the
27 | // corresponding string that xterm would send, or DCS 0 + r P t ST for invalid requests. The strings are
28 | // encoded in hexadecimal (2 digits per character).
29 | withTerminalSized(3, 3).enterString("A");
30 | assertCapabilityResponse("Co", "256");
31 | assertCapabilityResponse("colors", "256");
32 | assertCapabilityResponse("TN", "xterm");
33 | assertCapabilityResponse("name", "xterm");
34 | enterString("B").assertLinesAre("AB ", " ", " ");
35 | }
36 |
37 | public void testReportKeys() {
38 | withTerminalSized(3, 3);
39 | assertCapabilityResponse("kB", "\033[Z");
40 | }
41 |
42 | public void testReallyLongDeviceControlString() {
43 | withTerminalSized(3, 3).enterString("\033P");
44 | for (int i = 0; i < 10000; i++) {
45 | enterString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
46 | }
47 | // The terminal should ignore the overlong DCS sequence and continue printing "aaa." and fill at least the first two lines with
48 | // them:
49 | assertLineIs(0, "aaa");
50 | assertLineIs(1, "aaa");
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/HistoryTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 |
4 | public class HistoryTest extends TerminalTestCase {
5 |
6 | public void testHistory() {
7 | final int rows = 3;
8 | final int cols = 3;
9 | withTerminalSized(cols, rows).enterString("111222333444555666777888999");
10 | assertCursorAt(2, 2);
11 | assertLinesAre("777", "888", "999");
12 | assertHistoryStartsWith("666", "555");
13 |
14 | mTerminal.resize(cols, 2);
15 | assertHistoryStartsWith("777", "666", "555");
16 |
17 | mTerminal.resize(cols, 3);
18 | assertHistoryStartsWith("666", "555");
19 | }
20 |
21 | public void testHistoryWithScrollRegion() {
22 | // "CSI P_s ; P_s r" - set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM).
23 | withTerminalSized(3, 4).enterString("111222333444");
24 | assertLinesAre("111", "222", "333", "444");
25 | enterString("\033[2;3r");
26 | // NOTE: "DECSTBM moves the cursor to column 1, line 1 of the page."
27 | assertCursorAt(0, 0);
28 | enterString("\nCDEFGH").assertLinesAre("111", "CDE", "FGH", "444");
29 | enterString("IJK").assertLinesAre("111", "FGH", "IJK", "444").assertHistoryStartsWith("CDE");
30 | enterString("LMN").assertLinesAre("111", "IJK", "LMN", "444").assertHistoryStartsWith("FGH", "CDE");
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/ScreenBufferTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | public class ScreenBufferTest extends TerminalTestCase {
4 |
5 | public void testBasics() {
6 | TerminalBuffer screen = new TerminalBuffer(5, 3, 3);
7 | assertEquals("", screen.getTranscriptText());
8 | screen.setChar(0, 0, 'a', 0);
9 | assertEquals("a", screen.getTranscriptText());
10 | screen.setChar(0, 0, 'b', 0);
11 | assertEquals("b", screen.getTranscriptText());
12 | screen.setChar(2, 0, 'c', 0);
13 | assertEquals("b c", screen.getTranscriptText());
14 | screen.setChar(2, 2, 'f', 0);
15 | assertEquals("b c\n\n f", screen.getTranscriptText());
16 | screen.blockSet(0, 0, 2, 2, 'X', 0);
17 | }
18 |
19 | public void testBlockSet() {
20 | TerminalBuffer screen = new TerminalBuffer(5, 3, 3);
21 | screen.blockSet(0, 0, 2, 2, 'X', 0);
22 | assertEquals("XX\nXX", screen.getTranscriptText());
23 | screen.blockSet(1, 1, 2, 2, 'Y', 0);
24 | assertEquals("XX\nXYY\n YY", screen.getTranscriptText());
25 | }
26 |
27 | public void testGetSelectedText() {
28 | withTerminalSized(5, 3).enterString("ABCDEFGHIJ").assertLinesAre("ABCDE", "FGHIJ", " ");
29 | assertEquals("AB", mTerminal.getSelectedText(0, 0, 1, 0));
30 | assertEquals("BC", mTerminal.getSelectedText(1, 0, 2, 0));
31 | assertEquals("CDE", mTerminal.getSelectedText(2, 0, 4, 0));
32 | assertEquals("FG", mTerminal.getSelectedText(0, 1, 1, 1));
33 | assertEquals("GH", mTerminal.getSelectedText(1, 1, 2, 1));
34 | assertEquals("HIJ", mTerminal.getSelectedText(2, 1, 4, 1));
35 |
36 | assertEquals("ABCDEFG", mTerminal.getSelectedText(0, 0, 1, 1));
37 | withTerminalSized(5, 3).enterString("ABCDE\r\nFGHIJ").assertLinesAre("ABCDE", "FGHIJ", " ");
38 | assertEquals("ABCDE\nFG", mTerminal.getSelectedText(0, 0, 1, 1));
39 | }
40 |
41 | public void testGetSelectedTextJoinFullLines() {
42 | withTerminalSized(5, 3).enterString("ABCDE\r\nFG");
43 | assertEquals("ABCDEFG", mTerminal.getScreen().getSelectedText(0, 0, 1, 1, true, true));
44 |
45 | withTerminalSized(5, 3).enterString("ABC\r\nFG");
46 | assertEquals("ABC\nFG", mTerminal.getScreen().getSelectedText(0, 0, 1, 1, true, true));
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/TextStyleTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | import junit.framework.TestCase;
4 |
5 | public class TextStyleTest extends TestCase {
6 |
7 | private static final int[] ALL_EFFECTS = new int[]{0, TextStyle.CHARACTER_ATTRIBUTE_BOLD, TextStyle.CHARACTER_ATTRIBUTE_ITALIC,
8 | TextStyle.CHARACTER_ATTRIBUTE_UNDERLINE, TextStyle.CHARACTER_ATTRIBUTE_BLINK, TextStyle.CHARACTER_ATTRIBUTE_INVERSE,
9 | TextStyle.CHARACTER_ATTRIBUTE_INVISIBLE, TextStyle.CHARACTER_ATTRIBUTE_STRIKETHROUGH, TextStyle.CHARACTER_ATTRIBUTE_PROTECTED,
10 | TextStyle.CHARACTER_ATTRIBUTE_DIM};
11 |
12 | public void testEncodingSingle() {
13 | for (int fx : ALL_EFFECTS) {
14 | for (int fg = 0; fg < TextStyle.NUM_INDEXED_COLORS; fg++) {
15 | for (int bg = 0; bg < TextStyle.NUM_INDEXED_COLORS; bg++) {
16 | long encoded = TextStyle.encode(fg, bg, fx);
17 | assertEquals(fg, TextStyle.decodeForeColor(encoded));
18 | assertEquals(bg, TextStyle.decodeBackColor(encoded));
19 | assertEquals(fx, TextStyle.decodeEffect(encoded));
20 | }
21 | }
22 | }
23 | }
24 |
25 | public void testEncoding24Bit() {
26 | int[] values = {255, 240, 127, 1, 0};
27 | for (int red : values) {
28 | for (int green : values) {
29 | for (int blue : values) {
30 | int argb = 0xFF000000 | (red << 16) | (green << 8) | blue;
31 | long encoded = TextStyle.encode(argb, 0, 0);
32 | assertEquals(argb, TextStyle.decodeForeColor(encoded));
33 | encoded = TextStyle.encode(0, argb, 0);
34 | assertEquals(argb, TextStyle.decodeBackColor(encoded));
35 | }
36 | }
37 | }
38 | }
39 |
40 |
41 | public void testEncodingCombinations() {
42 | for (int f1 : ALL_EFFECTS) {
43 | for (int f2 : ALL_EFFECTS) {
44 | int combined = f1 | f2;
45 | assertEquals(combined, TextStyle.decodeEffect(TextStyle.encode(0, 0, combined)));
46 | }
47 | }
48 | }
49 |
50 | public void testEncodingStrikeThrough() {
51 | long encoded = TextStyle.encode(TextStyle.COLOR_INDEX_FOREGROUND, TextStyle.COLOR_INDEX_BACKGROUND,
52 | TextStyle.CHARACTER_ATTRIBUTE_STRIKETHROUGH);
53 | assertTrue((TextStyle.decodeEffect(encoded) & TextStyle.CHARACTER_ATTRIBUTE_STRIKETHROUGH) != 0);
54 | }
55 |
56 | public void testEncodingProtected() {
57 | long encoded = TextStyle.encode(TextStyle.COLOR_INDEX_FOREGROUND, TextStyle.COLOR_INDEX_BACKGROUND,
58 | TextStyle.CHARACTER_ATTRIBUTE_STRIKETHROUGH);
59 | assertEquals(0, (TextStyle.decodeEffect(encoded) & TextStyle.CHARACTER_ATTRIBUTE_PROTECTED));
60 | encoded = TextStyle.encode(TextStyle.COLOR_INDEX_FOREGROUND, TextStyle.COLOR_INDEX_BACKGROUND,
61 | TextStyle.CHARACTER_ATTRIBUTE_STRIKETHROUGH | TextStyle.CHARACTER_ATTRIBUTE_PROTECTED);
62 | assertTrue((TextStyle.decodeEffect(encoded) & TextStyle.CHARACTER_ATTRIBUTE_PROTECTED) != 0);
63 | }
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/terminal-emulator/src/test/java/com/termux/terminal/WcWidthTest.java:
--------------------------------------------------------------------------------
1 | package com.termux.terminal;
2 |
3 | import junit.framework.TestCase;
4 |
5 | public class WcWidthTest extends TestCase {
6 |
7 | private static void assertWidthIs(int expectedWidth, int codePoint) {
8 | int wcWidth = WcWidth.width(codePoint);
9 | assertEquals(expectedWidth, wcWidth);
10 | }
11 |
12 | public void testPrintableAscii() {
13 | for (int i = 0x20; i <= 0x7E; i++) {
14 | assertWidthIs(1, i);
15 | }
16 | }
17 |
18 | public void testSomeWidthOne() {
19 | assertWidthIs(1, 'å');
20 | assertWidthIs(1, 'ä');
21 | assertWidthIs(1, 'ö');
22 | assertWidthIs(1, 0x23F2);
23 | }
24 |
25 | public void testSomeWide() {
26 | assertWidthIs(2, 'A');
27 | assertWidthIs(2, 'B');
28 | assertWidthIs(2, 'C');
29 | assertWidthIs(2, '中');
30 | assertWidthIs(2, '文');
31 |
32 | assertWidthIs(2, 0x679C);
33 | assertWidthIs(2, 0x679D);
34 |
35 | assertWidthIs(2, 0x2070E);
36 | assertWidthIs(2, 0x20731);
37 |
38 | assertWidthIs(1, 0x1F781);
39 | }
40 |
41 | public void testSomeNonWide() {
42 | assertWidthIs(1, 0x1D11E);
43 | assertWidthIs(1, 0x1D11F);
44 | }
45 |
46 | public void testCombining() {
47 | assertWidthIs(0, 0x0302);
48 | assertWidthIs(0, 0x0308);
49 | assertWidthIs(0, 0xFE0F);
50 | }
51 |
52 | public void testWordJoiner() {
53 | // https://en.wikipedia.org/wiki/Word_joiner
54 | // The word joiner (WJ) is a code point in Unicode used to separate words when using scripts
55 | // that do not use explicit spacing. It is encoded since Unicode version 3.2
56 | // (released in 2002) as U+2060 WORD JOINER (HTML ).
57 | // The word joiner does not produce any space, and prohibits a line break at its position.
58 | assertWidthIs(0, 0x2060);
59 | }
60 |
61 | public void testSofthyphen() {
62 | // http://osdir.com/ml/internationalization.linux/2003-05/msg00006.html:
63 | // "Existing implementation practice in terminals is that the SOFT HYPHEN is
64 | // a spacing graphical character, and the purpose of my wcwidth() was to
65 | // predict the advancement of the cursor position after a string is sent to
66 | // a terminal. Hence, I have no choice but to keep wcwidth(SOFT HYPHEN) = 1.
67 | // VT100-style terminals do not hyphenate."
68 | assertWidthIs(1, 0x00AD);
69 | }
70 |
71 | public void testHangul() {
72 | assertWidthIs(1, 0x11A3);
73 | }
74 |
75 | public void testEmojis() {
76 | assertWidthIs(2, 0x1F428); // KOALA.
77 | assertWidthIs(2, 0x231a); // WATCH.
78 | assertWidthIs(2, 0x1F643); // UPSIDE-DOWN FACE (Unicode 8).
79 | }
80 |
81 | }
82 |
--------------------------------------------------------------------------------
/terminal-view/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'maven-publish'
3 |
4 | android {
5 | compileSdkVersion 31
6 |
7 | dependencies {
8 | implementation "androidx.annotation:annotation:1.1.0"
9 | api project(":terminal-emulator")
10 | }
11 |
12 | defaultConfig {
13 | minSdkVersion 21
14 | //noinspection ExpiredTargetSdkVersion
15 | targetSdkVersion 28
16 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
17 | }
18 |
19 | buildTypes {
20 | release {
21 | minifyEnabled false
22 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23 | }
24 | }
25 |
26 | compileOptions {
27 | sourceCompatibility JavaVersion.VERSION_1_8
28 | targetCompatibility JavaVersion.VERSION_1_8
29 | }
30 | }
31 |
32 | dependencies {
33 | testImplementation 'junit:junit:4.13.1'
34 | }
35 |
36 | publishing {
37 | publications {
38 | bar(MavenPublication) {
39 | groupId 'com.termux'
40 | artifactId 'terminal-view'
41 | version '0.106.1'
42 | artifact("$buildDir/outputs/aar/terminal-view-release.aar")
43 | }
44 | }
45 |
46 | repositories {
47 | maven {
48 | name = "GitHubPackages"
49 | url = uri("https://maven.pkg.github.com/termux/termux-app")
50 |
51 | credentials {
52 | username = System.getenv("GH_USERNAME")
53 | password = System.getenv("GH_TOKEN")
54 | }
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/terminal-view/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/fornwall/lib/android-sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/terminal-view/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/terminal-view/src/main/java/com/termux/view/TerminalViewClient.java:
--------------------------------------------------------------------------------
1 | package com.termux.view;
2 |
3 | import android.view.KeyEvent;
4 | import android.view.MotionEvent;
5 | import android.view.ScaleGestureDetector;
6 |
7 | import com.termux.terminal.TerminalSession;
8 |
9 | /**
10 | * Input and scale listener which may be set on a {@link TerminalView} through
11 | * {@link TerminalView#setOnKeyListener(TerminalViewClient)}.
12 | *
13 | */
14 | public interface TerminalViewClient {
15 |
16 | /**
17 | * Callback function on scale events according to {@link ScaleGestureDetector#getScaleFactor()}.
18 | */
19 | float onScale(float scale);
20 |
21 | /**
22 | * On a single tap on the terminal if terminal mouse reporting not enabled.
23 | */
24 | void onSingleTapUp(MotionEvent e);
25 |
26 | boolean shouldBackButtonBeMappedToEscape();
27 |
28 | void copyModeChanged(boolean copyMode);
29 |
30 | boolean onKeyDown(int keyCode, KeyEvent e, TerminalSession session);
31 |
32 | boolean onKeyUp(int keyCode, KeyEvent e);
33 |
34 | boolean readControlKey();
35 |
36 | boolean readAltKey();
37 |
38 | boolean onCodePoint(int codePoint, boolean ctrlDown, TerminalSession session);
39 |
40 | boolean onLongPress(MotionEvent event);
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/terminal-view/src/main/res/drawable/text_select_handle_left_material.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/terminal-view/src/main/res/drawable/text_select_handle_right_material.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/terminal-view/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Paste
3 | Copy
4 | More…
5 |
6 |
--------------------------------------------------------------------------------