[X] I confirm that this issue is not a duplicate and hasn't been reported before.
[X] I agree to follow the project's code of conduct.
[X] I have checked and verified that I am using the latest version of AndroidIDE from GitHub or F-Droid.
Additional terms
[X] I understand that providing incomplete or inaccurate information may result in the issue being closed.
[X] I agree to provide all requested details promptly for a comprehensive bug report.
Issue explanation
I used protoc to generate Java code based on my .proto file, and the resulting file is 4.65mb. AndroidIDE had difficulty parsing the file for class definitions, and the code editor was lagging while editing code that referenced those classes. Then it failed and included a crash log.
Expected behavior
I am running a Pixel 5 with 8gb of RAM, so it should have had plenty of headroom to process the class definitions, even in a large file.
Version name
Version : v2.7.1-beta (27102)
CI Build : false
Branch : HEAD
Commit : 55bb46b31
Variant : arm64-v8a (release)
Build type : OFFICIAL
F-Droid Build : true
F-Droid Version : v2.7.1-beta
F-Droid Version code : 27102
SDK Version : 33
Supported ABIs : [arm64-v8a, armeabi-v7a, armeabi]
Manufacturer : Google
Device : Pixel5
Download source
GitHub
Relevant log output
AndroidIDE Crash Report
Version : v2.7.1-beta (27102)
CI Build : false
Branch : HEAD
Commit : 55bb46b31
Variant : arm64-v8a (release)
Build type : OFFICIAL
F-Droid Build : true
F-Droid Version : v2.7.1-beta
F-Droid Version code : 27102
SDK Version : 33
Supported ABIs : [arm64-v8a, armeabi-v7a, armeabi]
Manufacturer : Google
Device : Pixel5
Stacktrace:
java.lang.OutOfMemoryError: Failed to allocate a 24 byte allocation with 1685072 free bytes and 1645KB until OOM, target footprint 536870912, growth limit 536870912; giving up on allocation because <1% of heap free after GC.
at libcore.util.NativeAllocationRegistry.registerNativeAllocation(NativeAllocationRegistry.java:261)
at android.graphics.Matrix.<init>(Matrix.java:242)
at com.google.android.material.shape.ShapePath$PathOperation.<init>(Unknown Source:5)
at com.google.android.material.shape.ShapePath.lineTo(Unknown Source:2)
at _COROUTINE.ArtificialStackFrames.getEdgePath(Unknown Source:1)
at com.google.android.material.shape.ShapeAppearancePathProvider.calculatePath(Unknown Source:451)
at com.google.android.material.shape.MaterialShapeDrawable.draw(Unknown Source:169)
at android.graphics.drawable.LayerDrawable.draw(LayerDrawable.java:1019)
at android.graphics.drawable.DrawableWrapper.draw(DrawableWrapper.java:241)
at android.graphics.drawable.RippleDrawable.drawContent(RippleDrawable.java:1150)
at android.graphics.drawable.RippleDrawable.drawPatterned(RippleDrawable.java:894)
at android.graphics.drawable.RippleDrawable.draw(RippleDrawable.java:807)
at android.view.View.getDrawableRenderNode(View.java:23555)
at android.view.View.drawBackground(View.java:23484)
at android.view.View.draw(View.java:23258)
at android.view.View.updateDisplayListIfDirty(View.java:22133)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at androidx.recyclerview.widget.RecyclerView.drawChild(Unknown Source:0)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.draw(View.java:23269)
at androidx.recyclerview.widget.RecyclerView.draw(Unknown Source:0)
at android.view.View.updateDisplayListIfDirty(View.java:22133)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.draw(View.java:23269)
at android.view.View.updateDisplayListIfDirty(View.java:22133)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(Unknown Source:13)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at androidx.drawerlayout.widget.DrawerLayout.drawChild(Unknown Source:98)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.updateDisplayListIfDirty(View.java:22124)
at android.view.View.draw(View.java:22997)
at android.view.ViewGroup.drawChild(ViewGroup.java:4529)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290)
at android.view.View.draw(View.java:23269)
at com.android.internal.policy.DecorView.draw(DecorView.java:821)
at android.view.View.updateDisplayListIfDirty(View.java:22133)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:689)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:695)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:793)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4789)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4500)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3687)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2371)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9297)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:832)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7924)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Issue Checklist
Additional terms
Issue explanation
I used protoc to generate Java code based on my .proto file, and the resulting file is 4.65mb. AndroidIDE had difficulty parsing the file for class definitions, and the code editor was lagging while editing code that referenced those classes. Then it failed and included a crash log.
Expected behavior
I am running a Pixel 5 with 8gb of RAM, so it should have had plenty of headroom to process the class definitions, even in a large file.
Version name
Version : v2.7.1-beta (27102) CI Build : false Branch : HEAD Commit : 55bb46b31 Variant : arm64-v8a (release) Build type : OFFICIAL F-Droid Build : true F-Droid Version : v2.7.1-beta F-Droid Version code : 27102 SDK Version : 33 Supported ABIs : [arm64-v8a, armeabi-v7a, armeabi] Manufacturer : Google Device : Pixel5
Download source
GitHub
Relevant log output