Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: termux/termux-app
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 21c0d51f
Choose a base ref
...
head repository: termux/termux-app
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.118.3
Choose a head ref
  • 6 commits
  • 7 files changed
  • 2 contributors

Commits on May 22, 2025

  1. Fixed: Declare MANAGE_EXTERNAL_STORAGE as it being added in Termux:…

    …API version `0.51.0` is revoking the storage permission of Termux app after updates and sometimes later
    
    Related issue #4486
    agnostic-apollo committed May 22, 2025
    Configuration menu
    Copy the full SHA
    2375652 View commit details
    Browse the repository at this point in the history
  2. Changed!: Remove TERMUX_APP__BUILD_DATA_DIR as a different naming s…

    …cheme will be used for build variables and rename `TERMUX__ROOTFS` to `TERMUX__ROOTFS_DIR`
    agnostic-apollo committed May 22, 2025
    Configuration menu
    Copy the full SHA
    849e6b1 View commit details
    Browse the repository at this point in the history
  3. Fixed: Use openjdk11 for jitpack builds of termux libraries

    `Unrecognized option: --add-exports=java.base/sun.nio.ch=ALL-UNNAMED`
    
    Related commit 52da00e
    agnostic-apollo committed May 22, 2025
    Configuration menu
    Copy the full SHA
    431dc1d View commit details
    Browse the repository at this point in the history
  4. Changed|Fixed: Bump org.lsposed.hiddenapibypass:hiddenapibypass to …

    …`6.1` to fix crash on Android 16 QPR1
    
    ```
    Build fingerprint: 'google/shiba_beta/shiba:16/BP31.250502.008/13497110:user/release-keys'
    Revision: 'MP1.0'
    ABI: 'arm64'
    Executable: /system/bin/app_process64
    Cmdline: com.termux
    pid: 22617, tid: 22617, name: com.termux  >>> com.termux <<<
    uid: 10323
    tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
    pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
    esr: 0000000092000006 (Data Abort Exception 0x24)
    signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x000000000000000c
    Cause: null pointer dereference
        x0  0000000070b6f798  x1  0000000002159228  x2  000000000000000c  x3  00000000ebad6073
        x4  00000000ebad6074  x5  00000000ebad6075  x6  00000000ebad6076  x7  00000000ebad6077
        x8  00000000ebad6078  x9  00000000ebad6079  x10 00000000ebad607a  x11 00000000ebad607b
        x12 00000000ebad607c  x13 00000000ebad607d  x14 00000000ebad607e  x15 00000000ebad607f
        x16 0000007feda203f0  x17 0000007976776a9c  x18 0000007cd0e44000  x19 b400007b850b8be0
        x20 0000000000000000  x21 b400007b850b8ca0  x22 0000000000000000  x23 00000000021592b8
        x24 000000006413b378  x25 0000000070b99ee0  x26 0000000070b9fc78  x27 0000000000000000
        x28 0000000000000053  x29 0000000070b99ee0
        lr  0000007976776a98  sp  0000007feda203f0  pc  0000007976776b0c  pst 0000000080001000
        esr 0000000092000006
    26 total frames
    backtrace:
          #00 pc 00000000000c8b0c  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (org.lsposed.hiddenapibypass.HiddenApiBypass.getDeclaredMethods+780)
          #1 pc 00000000000c8dc4  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (org.lsposed.hiddenapibypass.HiddenApiBypass.setHiddenApiExemptions+68)
          #2 pc 00000000000ae560  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.shared.reflection.ReflectionUtils.bypassHiddenAPIReflectionRestrictions+448)
          #3 pc 00000000000a342c  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.shared.android.SELinuxUtils.getContext+108)
          #4 pc 00000000000c0b60  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.shared.termux.shell.command.environment.TermuxAppShellEnvironment.setTermuxAppEnvironment+3216)
          #5 pc 000000000009eafc  /data/app/~~p_sHRwZKj3QVf_xeRMrR3g==/com.termux-rodTRD4IY6G2qtCPCrHfhw==/oat/arm64/base.odex (com.termux.app.TermuxApplication.onCreate+1596)
          ...
          #22 pc 0000000000105c98  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+104) (BuildId: ea93df5e792bbd2e0cbb71b2a7599aaa)
          #23 pc 000000000013121c  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+908) (BuildId: ea93df5e792bbd2e0cbb71b2a7599aaa)
          #24 pc 000000000000459c  /system/bin/app_process64 (main+1212) (BuildId: a237cfae6965d7f0b950e5955c73432c)
          #25 pc 000000000006bb88  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+120) (BuildId: eecb0fc2ec8128ec92c091c0160586d1)
    ```
    
    Related commit LSPosed/AndroidHiddenApiBypass@9efadf06
    Related commit https://android-review.googlesource.com/c/platform/libcore/+/3380841
    Related commit https://cs.android.com/android/_/android/platform/libcore/+/0dc31afe
    
    Closes #4556
    aviraxp authored and agnostic-apollo committed May 22, 2025
    Configuration menu
    Copy the full SHA
    fda17af View commit details
    Browse the repository at this point in the history
  5. Fixed: Add explicit serialVersionUID to Serializable classes like…

    … `ReportInfo` and `TextIOInfo`
    
    Reading `ReportInfo` with `Bundle.getSerializable()` by `ReportActivity` is triggering exception when default algorithm is used for `serialVersionUID` in Termux:API plugin app when error notification created in `ResultReturner.returnData()` by `TermuxPluginUtils.sendPluginCommandErrorNotification()` is clicked.
    
    ```
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.termux/com.termux.shared.activities.ReportActivity}: android.os.BadParcelableException: Parcelable encountered IOException reading a Serializable object (name = com.termux.shared.models.ReportInfo)
    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4280)
    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4467)
    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:222)
    	at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:133)
    	at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:103)
    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:80)
    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2823)
    	at android.os.Handler.dispatchMessage(Handler.java:110)
    	at android.os.Looper.loopOnce(Looper.java:248)
    	at android.os.Looper.loop(Looper.java:338)
    	at android.app.ActivityThread.main(ActivityThread.java:9067)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
    Caused by: android.os.BadParcelableException: Parcelable encountered IOException reading a Serializable object (name = com.termux.shared.models.ReportInfo)
    	at android.os.Parcel.readSerializableInternal(Parcel.java:5520)
    	at android.os.Parcel.readValue(Parcel.java:5038)
    	at android.os.Parcel.readValue(Parcel.java:4702)
    	at android.os.Parcel.-$$Nest$mreadValue(Unknown Source:0)
    	at android.os.Parcel$LazyValue.apply(Parcel.java:4811)
    	at android.os.Parcel$LazyValue.apply(Parcel.java:4764)
    	at android.os.BaseBundle.unwrapLazyValueFromMapLocked(BaseBundle.java:446)
    	at android.os.BaseBundle.getValueAt(BaseBundle.java:426)
    	at android.os.BaseBundle.getValue(BaseBundle.java:397)
    	at android.os.BaseBundle.getValue(BaseBundle.java:380)
    	at android.os.BaseBundle.getValue(BaseBundle.java:373)
    	at android.os.BaseBundle.getSerializable(BaseBundle.java:1522)
    	at android.os.Bundle.getSerializable(Bundle.java:1339)
    	at com.termux.shared.activities.ReportActivity.updateUI(ReportActivity.java:140)
    	at com.termux.shared.activities.ReportActivity.onCreate(ReportActivity.java:93)
    	at android.app.Activity.performCreate(Activity.java:9155)
    	at android.app.Activity.performCreate(Activity.java:9133)
    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1521)
    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4262)
    	... 13 more
    Caused by: java.io.InvalidClassException: com.termux.shared.models.ReportInfo; local class incompatible: stream classdesc serialVersionUID = -5165426368218339031, local class serialVersionUID = 1
    	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:652)
    	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1743)
    	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1624)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1902)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1442)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
    	at android.os.Parcel.readSerializableInternal(Parcel.java:5507)
    	... 31 more
    
    ```
    
    If using release APK with obfuscation enabled, then following exception will be triggered.
    
    ```
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.termux/com.termux.shared.activities.ReportActivity}: android.os.BadParcelableException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = I0.a)
    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3864)
    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4006)
    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:111)
    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2462)
    	at android.os.Handler.dispatchMessage(Handler.java:106)
    	at android.os.Looper.loopOnce(Looper.java:240)
    	at android.os.Looper.loop(Looper.java:351)
    	at android.app.ActivityThread.main(ActivityThread.java:8377)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
    Caused by: android.os.BadParcelableException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = I0.a)
    	at android.os.Parcel.readSerializableInternal(Parcel.java:5113)
    	at android.os.Parcel.readValue(Parcel.java:4655)
    	at android.os.Parcel.readValue(Parcel.java:4363)
    	at android.os.Parcel.-$$Nest$mreadValue(Unknown Source:0)
    	at android.os.Parcel$LazyValue.apply(Parcel.java:4461)
    	at android.os.Parcel$LazyValue.apply(Parcel.java:4420)
    	at android.os.BaseBundle.getValueAt(BaseBundle.java:394)
    	at android.os.BaseBundle.getValue(BaseBundle.java:374)
    	at android.os.BaseBundle.getValue(BaseBundle.java:357)
    	at android.os.BaseBundle.getValue(BaseBundle.java:350)
    	at android.os.BaseBundle.getSerializable(BaseBundle.java:1451)
    	at android.os.Bundle.getSerializable(Bundle.java:1144)
    	at com.termux.shared.activities.ReportActivity.updateUI(ReportActivity.java:136)
    	at com.termux.shared.activities.ReportActivity.onCreate(ReportActivity.java:89)
    	at android.app.Activity.performCreate(Activity.java:8397)
    	at android.app.Activity.performCreate(Activity.java:8370)
    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1403)
    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3837)
    	... 12 more
    Caused by: java.lang.ClassNotFoundException: I0.a
    	at java.lang.Class.classForName(Native Method)
    	at java.lang.Class.forName(Class.java:536)
    	at android.os.Parcel$2.resolveClass(Parcel.java:5090)
    	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1733)
    	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1624)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1902)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1442)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
    	at android.os.Parcel.readSerializableInternal(Parcel.java:5096)
    	... 29 more
    Caused by: java.lang.ClassNotFoundException: I0.a
    	... 38 more
    ```
    
    Related issue termux/termux-api#762
    agnostic-apollo committed May 22, 2025
    Configuration menu
    Copy the full SHA
    4f033b3 View commit details
    Browse the repository at this point in the history
  6. Release: v0.118.3

    agnostic-apollo committed May 22, 2025
    Configuration menu
    Copy the full SHA
    5b657c6 View commit details
    Browse the repository at this point in the history
Loading