macos m3 15.1.1 安装 Android DDMS monitor 历程

164 阅读2分钟

macos m3 15.1.1 安装 Android DDMS monitor 历程

ddms 是什么

developer.android.com/studio/prof…

为什么要安装ddms

因为我觉得ddms 调试的时候,方法追踪很好用

当前成功示例环境参数如下:

macOS Sequoia 15.1.1 

芯片 M3

image.png

  1. 最好使用旧版本的 jdk 1.8_144,如果你要使用其他1.8版本,可以自行测试www.oracle.com/java/techno… 选择 jdk-8u144-macosx-x64.dmg 安装即可

  2. 下载Android sdk tools 26.1.1 androidsdkmanager.azurewebsites.net/sdk_tools.h…,解压到你的Android sdk 目录下,或者其他目录下

  3. 进入 monitor 所在的文件目录, 比如我的在这里/Users/jiyuren/Library/Android/sdk/tools/monitor,用 vim 打开这个文件(或者用文本编辑工具打开), 找到 app=lib/monitor-${vmarch}/monitor 这一行文字, 然后把里面的 ${vmarch} 直接改为 x86_64, 改完之后是这样 app=lib/monitor-x86_64/monitor. 最后保存并关闭, 然后再尝试打开 monitor 就可以运行了

此时可能出现白屏卡住的问题

  1. 解决方案就是替换 /Android/sdk/tools/lib/monitor-x86_64/plugins/org.eclipse.swt.cocoa.macosx.x86_64_3.100.1.v4236b.jar 这个文件

  2. 打开这个链接 archive.eclipse.org/eclipse/dow…,我目前选择的是4.8 的版本

image.png

下载后解压,将swt.jar 重命名为 org.eclipse.swt.cocoa.macosx.x86_64_3.100.1.v4236b.jar  放到 monitor-x86_64/plugins/目录下

  1. 打开monitor.app 的info.plist 添加如下内容,设置你的java版本,除非你只有jdk1.8_144 一个java环境,否则不需要修改
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java</string>
  1. 最后运行 monitor 这个可执行文件,成功启动!

image.png

异常示例

启动后报这个错误,极有可能是swt 的版本不适配,需要去手动尝试下载合适的版本,参考上面的第4点,去下载不同版本的swt

!SESSION 2025-03-14 15:03:31.456 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_144
java.vendor=Oracle Corporation
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=zh_CN
Framework arguments:  -keyring /Users/jiyuren/.eclipse_keyring -showlocation
Command-line arguments:  -os macosx -ws cocoa -arch x86_64 -data @noDefault -keyring /Users/jiyuren/.eclipse_keyring -showlocation

!ENTRY org.eclipse.osgi 4 0 2025-03-14 15:03:32.283
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Exception in org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start() of bundle org.eclipse.osgi.
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
	at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.resume(InternalSystemBundle.java:225)
	at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:656)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:274)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
Caused by: java.lang.NullPointerException
	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.setResolved(PackageAdminImpl.java:384)
	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.setResolvedBundles(PackageAdminImpl.java:658)
	at org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start(SystemBundleActivator.java:67)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
	... 12 more
Root exception:
java.lang.NullPointerException
	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.setResolved(PackageAdminImpl.java:384)
	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.setResolvedBundles(PackageAdminImpl.java:658)
	at org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start(SystemBundleActivator.java:67)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
	at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.resume(InternalSystemBundle.java:225)
	at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:656)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:274)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)

!ENTRY org.eclipse.osgi 4 0 2025-03-14 15:03:32.284
!MESSAGE Startup error
!STACK 1
java.lang.RuntimeException: Exception in org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start() of bundle org.eclipse.osgi.
	at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.resume(InternalSystemBundle.java:233)
	at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:656)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:274)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start() of bundle org.eclipse.osgi.
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
	at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.resume(InternalSystemBundle.java:225)
	... 10 more
Caused by: java.lang.NullPointerException
	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.setResolved(PackageAdminImpl.java:384)
	at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.setResolvedBundles(PackageAdminImpl.java:658)
	at org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start(SystemBundleActivator.java:67)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
	... 12 more

参考链接:

解决 mac M1 电脑无法打开 DDMS(monitor) 工具的问题 www.jianshu.com/p/656d15986… 

解决Mac系统android monitor启动时卡住,显示白屏的问题 blog.csdn.net/g241893312/…