为什么任何 Chromium for Android 版本在运行时都会崩溃?

why any build of chromium for android crash on runtime?

提问人:mohammad 提问时间:8/13/2023 最后编辑:mohammad 更新时间:9/17/2023 访问量:264

问:

我想为 android 构建 chromium,并执行了此页面上的所有说明。

用于构建 Chromium 的命令:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH="$PATH:/path/to/depot_tools"
mkdir ~/chromium && cd ~/chromium
fetch --nohooks android
cd src
echo "target_os = [ 'android' ]" >> ../.gclient
gclient sync -D --force
gn args out/Default
autoninja -C out/Default monochrome_public_bundle

当我将 arg 设置为 true 时,一切都很好,但是当我将其设置为 false 时,构建会在打开应用程序后 2 秒内崩溃。
以下是用于构建 的参数:
is_debugapkapk

target_os = "android"
target_cpu = "arm"  

is_debug = false
symbol_level = 1

这些参数适用于版本 107,但在较新版本中崩溃。我尝试了从 109 到 115 的不同版本的 chromium,并在不同版本的 android 10、11、12、13 上进行了测试,但 chromium 不断崩溃。

错误日志:

Failed to deliver inset state change to w=Window{e2e9dfb u0 org.chromium.chrome.stable/org.chromium.chrome.browser.firstrun.FirstRunActivity EXITING}
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:646)
at android.view.IWindow$Stub$Proxy.insetsControlChanged(IWindow.java:551)
at com.android.server.wm.WindowState.notifyInsetsControlChanged(WindowState.java:4374)
at com.android.server.wm.InsetsStateController.lambda$notifyPendingInsetsControlChanged$5$com-android-server-wm-InsetsStateController(InsetsStateController.java:348)
at com.android.server.wm.InsetsStateController$$ExternalSyntheticLambda4.run(Unknown Source:2)
at com.android.server.wm.WindowAnimator.executeAfterPrepareSurfacesRunnables(WindowAnimator.java:357)
at com.android.server.wm.WindowAnimator.animate(WindowAnimator.java:238)
at com.android.server.wm.WindowAnimator.lambda$new$1$com-android-server-wm-WindowAnimator(WindowAnimator.java:109)
at com.android.server.wm.WindowAnimator$$ExternalSyntheticLambda1.doFrame(Unknown Source:2)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1384)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1394)
at android.view.Choreographer.doCallbacks(Choreographer.java:1013)
at android.view.Choreographer.doFrame(Choreographer.java:904)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1366)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.os.HandlerThread.run(HandlerThread.java:67)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
shouldWaitAnimatingExit: isAnimating: Window{e2e9dfb u0 org.chromium.chrome.stable/org.chromium.chrome.browser.firstrun.FirstRunActivity EXITING}
Exception thrown during dispatchAppVisibility Window{e2e9dfb u0 org.chromium.chrome.stable/org.chromium.chrome.browser.firstrun.FirstRunActivity EXITING}
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:646)
at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:614)
at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:3772)
at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1290)
at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:419)
at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:7277)
at com.android.server.wm.ActivityRecord.onAnimationFinished(ActivityRecord.java:8152)
at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:5888)
at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5860)
at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5864)
at com.android.server.wm.AppTransitionController.handleClosingApps(AppTransitionController.java:1196)
at com.android.server.wm.AppTransitionController.handleAppTransitionReady(AppTransitionController.java:295)
at com.android.server.wm.RootWindowContainer.checkAppTransitionReady(RootWindowContainer.java:1028)
at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:895)
at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:835)
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:199)
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:148)
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:137)
at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:79)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.os.HandlerThread.run(HandlerThread.java:67)
at com.android.server.ServiceThread.run(ServiceThread.java:46)

我该怎么办?

Android Google-Chrome 构建 崩溃 Chromium

评论

0赞 l3l_aze 9/15/2023
在两个网站之间拆分一个 Q 并指向另一个网站以获取更多信息是一个糟糕的主意。两者之间的细微差异也为那些试图将其重新编织在一起的人增加了不必要的复杂性。
0赞 mohammad 9/17/2023
@l3l_aze感谢您的回复。我更新了问题。

答: 暂无答案