beemdevelopment / Aegis

A free, secure and open source app for Android to manage your 2-step verification tokens.
https://getaegis.app
GNU General Public License v3.0
8.81k stars 371 forks source link

Export doesn't work. #491

Closed nicheosala closed 4 years ago

nicheosala commented 4 years ago
Info
Steps to reproduce
  1. Open Aegis settings
  2. Click on "Export"
  3. Click "Ok"
  4. Sometimes, the app simply does nothing and go back to the main page. Some other times, the following message appears: "Aegis keeps stopping" and then you can choose to view app info or close the app.
What do you expect to happen?

I expected the possibility to store my Aegis backup somewhere.

What happens instead?

The app does not create a backup: it does nothing.

alexbakker commented 4 years ago

Thanks for your report. Could you obtain a log of the crash with ADB (https://github.com/beemdevelopment/Aegis/blob/master/CONTRIBUTING.md#bug-reports) and share it here? As you're using F-Droid, we do not see your crash in the Google Play Console.

nicheosala commented 4 years ago

--------- beginning of main 06-25 11:48:03.182 9644 9644 E velopment.aegi: Unknown bits set in runtime_flags: 0x20000 06-25 11:48:03.188 9644 9644 E velopment.aegi: Not starting debugger since process cannot load the jdwp agent. 06-25 11:48:03.229 9644 9644 I Perf : Connecting to perf service. 06-25 11:48:03.232 9644 9644 I velopment.aegi: [GL_OOM] ClampGrowthLimit 268435456 06-25 11:48:03.233 9644 9644 V Font : Change font:2 06-25 11:48:03.233 9644 9644 V Font : Default family:android.graphics.Typeface@e56d9fd6 06-25 11:48:03.268 9644 9644 V FlingOptimizerScroller: FlingOptimizerOverScroller Init 06-25 11:48:03.301 9644 9644 V ViewRootImpl: The specified message queue synchronization barrier token has not been posted or has already been removed 06-25 11:48:03.313 9644 10522 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@5dbca01[MainActivity] 06-25 11:48:03.315 9644 10525 I AdrenoGLES: QUALCOMM build : 6209c5d, Ifdcc64d6e8 06-25 11:48:03.315 9644 10525 I AdrenoGLES: Build Date : 12/12/19 06-25 11:48:03.315 9644 10525 I AdrenoGLES: OpenGL ES Shader Compiler Version: EV031.27.05.03 06-25 11:48:03.315 9644 10525 I AdrenoGLES: Local Branch : mybranchea1c9b4a-9e05-f149-a3b2-1458d0b52ae8 06-25 11:48:03.315 9644 10525 I AdrenoGLES: Remote Branch : quic/gfx-adreno.lnx.1.0.r85-rel 06-25 11:48:03.315 9644 10525 I AdrenoGLES: Remote Branch : NONE 06-25 11:48:03.315 9644 10525 I AdrenoGLES: Reconstruct Branch : NOTHING 06-25 11:48:03.315 9644 10525 I AdrenoGLES: Build Config : C O 9.0.3 AArch64 06-25 11:48:03.323 9644 10525 I AdrenoGLES: PFP: 0x005ff112, ME: 0x005ff066 06-25 11:48:03.327 9644 10522 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:48:03.362 9644 10525 W Gralloc3: mapper 3.x is not supported 06-25 11:48:03.373 9644 9644 W Choreographer: Already have a pending vsync event. There should only be one at a time. 06-25 11:48:03.377 9644 9644 W velopment.aegi: Accessing hidden method Landroid/widget/AutoCompleteTextView;->doBeforeTextChanged()V (greylist-max-p, reflection, denied) 06-25 11:48:03.377 9644 9644 W velopment.aegi: Accessing hidden method Landroid/widget/AutoCompleteTextView;->doAfterTextChanged()V (greylist-max-p, reflection, denied) 06-25 11:48:03.377 9644 9644 W velopment.aegi: Accessing hidden method Landroid/widget/AutoCompleteTextView;->ensureImeVisible(Z)V (greylist-max-p, reflection, denied) 06-25 11:49:03.294 9644 9644 D OnePlusJankManager: Chor uploadMDM JANK_TYPE_ONCE mViewTitle = com.beemdevelopment.aegis/com.beemdevelopment.aegis.ui.MainActivity--- jank level = 1 06-25 11:49:08.026 9644 10521 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=false inTouchMode=true 06-25 11:52:19.569 9644 10586 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@5dbca01[MainActivity] 06-25 11:52:19.570 9644 10586 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:53:19.607 9644 9644 D OnePlusJankManager: Chor uploadMDM JANK_TYPE_ONCE mViewTitle = com.beemdevelopment.aegis/com.beemdevelopment.aegis.ui.MainActivity--- jank level = 1 06-25 11:53:24.334 9644 10586 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=false inTouchMode=true 06-25 11:54:02.064 9644 10522 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@5dbca01[MainActivity] 06-25 11:54:02.075 9644 10522 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:54:02.279 9644 9644 D OnePlusJankManager: Chor uploadMDM JANK_TYPE_NODRAW mViewTitle = com.beemdevelopment.aegis/com.beemdevelopment.aegis.ui.MainActivity--- jank level = 2 06-25 11:54:05.122 9644 9644 V ViewRootImpl: The specified message queue synchronization barrier token has not been posted or has already been removed 06-25 11:54:05.154 9644 10522 D ViewRootImpl[PopupWindow:d473b6d]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:54:05.190 9644 9644 W Choreographer: Already have a pending vsync event. There should only be one at a time. 06-25 11:54:05.194 9644 10522 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=false inTouchMode=true 06-25 11:54:06.265 9644 10522 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@5dbca01[MainActivity] 06-25 11:54:06.266 9644 10586 D ViewRootImpl[PopupWindow:d473b6d]: windowFocusChanged hasFocus=false inTouchMode=true 06-25 11:54:06.266 9644 10522 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:54:06.274 9644 10522 D ViewRootImpl[MainActivity]: windowFocusChanged hasFocus=false inTouchMode=true 06-25 11:54:06.275 9644 9644 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@5023f17 06-25 11:54:06.289 9644 9644 V ViewRootImpl: The specified message queue synchronization barrier token has not been posted or has already been removed 06-25 11:54:06.294 9644 10522 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@c8536fc[PreferencesActivity] 06-25 11:54:06.295 9644 10522 D ViewRootImpl[PreferencesActivity]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:54:06.302 9644 9644 W ListPreference: Setting a summary with a String formatting marker is no longer supported. You should use a SummaryProvider instead. 06-25 11:54:06.326 9644 9644 W Choreographer: Already have a pending vsync event. There should only be one at a time. 06-25 11:54:06.328 9644 9644 W ListPreference: Setting a summary with a String formatting marker is no longer supported. You should use a SummaryProvider instead. 06-25 11:54:06.592 9644 10525 D OpenGLRenderer: endAllActiveAnimators on 0x7bac84c600 (MenuPopupWindow$MenuDropDownListView) with handle 0x7b589f2da0 06-25 11:54:07.873 9644 9644 D OnePlusJankManager: Chor uploadMDM JANK_TYPE_NODRAW mViewTitle = com.beemdevelopment.aegis/com.beemdevelopment.aegis.ui.PreferencesActivity--- jank level = 2 06-25 11:54:08.659 9644 9644 D OnePlusJankManager: Chor uploadMDM JANK_TYPE_NODRAW mViewTitle = com.beemdevelopment.aegis/com.beemdevelopment.aegis.ui.PreferencesActivity--- jank level = 1 06-25 11:54:09.631 9644 9644 V ViewRootImpl: The specified message queue synchronization barrier token has not been posted or has already been removed 06-25 11:54:09.652 9644 10522 D DecorView: onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@cbd844f[PreferencesActivity] 06-25 11:54:09.654 9644 10522 D ViewRootImpl[PreferencesActivity]: windowFocusChanged hasFocus=true inTouchMode=true 06-25 11:54:09.670 9644 9644 W Choreographer: Already have a pending vsync event. There should only be one at a time. 06-25 11:54:09.680 9644 10522 D ViewRootImpl[PreferencesActivity]: windowFocusChanged hasFocus=false inTouchMode=true 06-25 11:54:10.274 9644 9644 D OnePlusJankManager: Chor uploadMDM JANK_TYPE_NODRAW mViewTitle = com.beemdevelopment.aegis/com.beemdevelopment.aegis.ui.PreferencesActivity--- jank level = 1 06-25 11:54:10.545 9644 9644 D AndroidRuntime: Shutting down VM --------- beginning of crash 06-25 11:54:10.546 9644 9644 E AndroidRuntime: FATAL EXCEPTION: main 06-25 11:54:10.546 9644 9644 E AndroidRuntime: Process: com.beemdevelopment.aegis, PID: 9644 06-25 11:54:10.546 9644 9644 E AndroidRuntime: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CREATE_DOCUMENT cat=[android.intent.category.OPENABLE] typ=application/json (has extras) } 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2248) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1902) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:5205) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:6) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:1) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:7) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:4) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at com.beemdevelopment.aegis.ui.PreferencesFragment.lambda$startExport$13$PreferencesFragment(PreferencesFragment.java:9) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at com.beemdevelopment.aegis.ui.-$$Lambda$PreferencesFragment$bjxfIw0JoB9-3gu0_YMMmwsfKmE.onClick(Unknown Source:4) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:3) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7697) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 06-25 11:54:10.546 9644 9644 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 06-25 11:54:10.564 9644 9644 I Process : Sending signal. PID: 9644 SIG: 9

alexbakker commented 4 years ago

Can you try this patch built into the following debug APK: https://alexbakker.me/u/t4wvxsghkk.apk?

nicheosala commented 4 years ago

I've installed the debug APK and I've repeated the procedure that leads to the error. The problem persists. The behaviour is the same as in the "official" APK.

alexbakker commented 4 years ago

Thanks for reporting back. That's very surprising. For some reason the system app that supports the android.intent.action.CREATE_DOCUMENT intent, required for the Storage Access Framework, can not be found. Did you make any customizations to the stock OxygenOS ROM that could be relevant?

nicheosala commented 4 years ago

Actually, I removed some apps in order to debloat my phone, following a guide like this: https://forum.xda-developers.com/oneplus-7-pro/how-to/debloat-root-via-adb-t3946625 Is it possible that the error is linked to this action?

alexbakker commented 4 years ago

Can you check whether com.android.documentsui is still installed on your phone?

nicheosala commented 4 years ago

It seems it isn't. I connected the phone to the computer, opened a shell and:

adb devices
adb shell
pm list package | grep com.android.documentsui

It returns nothing. I tried to re-install it through pm install --user 0 com.android.documentsui but it returns an error: "Can't open file: com.android.documentsui"

alexbakker commented 4 years ago

That may explain it, as com.android.documentsui is the app that handles the android.intent.action.CREATE_DOCUMENT intent on most devices: https://source.android.com/devices/architecture/modular-system/documentsui. The package name may also be com.google.android.documentsui. It's also possible that OxygenOS ships with its own system file manager with a different package name. Either way, the DocumentsUi component appears to be missing and you need to figure out how to reinstall it. Lots of other apps also rely on it being present.

nicheosala commented 4 years ago

@alexbakker, thank you for your patience. I'll try to figure out how to reinstall documentsui.

A tip: instead of crashing, Aegis could allow the user to copy the contents of the json file to the clipboard. This approach is adopted, for example, by Samourai Wallet.

alexbakker commented 4 years ago

Sure thing. I don't want to be too dismissive, but this seems like something that's out of our hands. Please do let us know if you do manage to fix this. It may be useful if other users ever have this issue.

We can certainly show an error instead of crashing the app, but I would be hesitant to copy the entire vault to the clipboard. Any app would have the ability to read it.

On a side note, we received a report that sounds similar to yours on /r/2fa 2 days ago. Was that you? It'd be good to know whether more users are experiencing this.

nicheosala commented 4 years ago

About the report: no, it wasn't me. For sure, I'll write the solution here, if I'll find it.

nicheosala commented 4 years ago

Solution.

In order to reinstall a system app removed through pm uninstall --user 0 <package_name>, you can use:

adb shell
cmd package install-existing <package_name>

When com.android.documentsui is re-installed, Aegis export works well.

It would be good if Aegis export could also work with other file managers, such as Simple File Manager.

alexbakker commented 4 years ago

Thanks for reporting back. Glad to hear export is now working for you!

It would be good if Aegis export could also work with other file managers, such as Simple File Manager.

As far as I know, there can only be one DocumentsUi module, and it must be provided by the system.