<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DataStack</title>
    <description>The latest articles on DEV Community by DataStack (@datastack).</description>
    <link>https://dev.to/datastack</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3561605%2F18c2b1ef-7b1b-4443-9772-f2ed06028474.png</url>
      <title>DEV Community: DataStack</title>
      <link>https://dev.to/datastack</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/datastack"/>
    <language>en</language>
    <item>
      <title>HTTPS Packet Capture Process: Proxy Capture, Direct Device Connection via Cable, and TCP Data Analysis</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Tue, 14 Apr 2026 08:41:03 +0000</pubDate>
      <link>https://dev.to/datastack/https-packet-capture-process-proxy-capture-direct-device-connection-via-cable-and-tcp-data-4ehi</link>
      <guid>https://dev.to/datastack/https-packet-capture-process-proxy-capture-direct-device-connection-via-cable-and-tcp-data-4ehi</guid>
      <description>&lt;p&gt;In interface debugging, you may encounter the following issue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The login interface in the app returns an exception&lt;/li&gt;
&lt;li&gt;The server logs show no obvious errors&lt;/li&gt;
&lt;li&gt;The client logs are incomplete, making it difficult to identify the problem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In such cases, one approach is to capture HTTPS requests to inspect the data.&lt;/p&gt;

&lt;p&gt;However, another problem often arises:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;HTTPS from browsers can be captured normally&lt;/li&gt;
&lt;li&gt;HTTPS requests from the app fail directly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The issue lies in whether the packet capture direction is correct.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. First, Use Proxy Capture to Verify the HTTPS Environment
&lt;/h1&gt;

&lt;p&gt;The first step is to use a proxy capture tool, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Charles&lt;/li&gt;
&lt;li&gt;Proxyman&lt;/li&gt;
&lt;li&gt;SniffMaster&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to confirm whether HTTPS can be decrypted.&lt;/p&gt;




&lt;h2&gt;
  
  
  Set Up the Proxy Environment
&lt;/h2&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start SniffMaster&lt;/li&gt;
&lt;li&gt;Check the listening port, e.g., 8888&lt;/li&gt;
&lt;li&gt;Connect the iPhone and computer to the same Wi-Fi network&lt;/li&gt;
&lt;li&gt;Configure the proxy address and port in the iPhone's Wi-Fi settings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After saving, return to the home screen.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71fd8tv5n0ri8mftewmj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71fd8tv5n0ri8mftewmj.png" alt="Port" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Install the HTTPS Certificate
&lt;/h2&gt;

&lt;p&gt;On the iPhone, perform the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use Safari to open the certificate address provided by the proxy tool&lt;/li&gt;
&lt;li&gt;Download the profile file&lt;/li&gt;
&lt;li&gt;Install the certificate&lt;/li&gt;
&lt;li&gt;Enable certificate trust in the system settings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once completed, the proxy tool can decrypt HTTPS.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr5ccjis0m295seku86s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr5ccjis0m295seku86s.png" alt="Install Certificate" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Verify Successful HTTPS Capture
&lt;/h2&gt;

&lt;p&gt;Open Safari and visit an HTTPS website.&lt;/p&gt;

&lt;p&gt;If SniffMaster displays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request URL&lt;/li&gt;
&lt;li&gt;Headers&lt;/li&gt;
&lt;li&gt;Response content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It indicates that the HTTPS capture environment is established.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhajzp95tcll2l7v3u5n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhajzp95tcll2l7v3u5n.png" alt="Proxy Capture" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  2. Capture App HTTPS Requests
&lt;/h1&gt;

&lt;p&gt;In the same proxy environment, open the target app.&lt;/p&gt;

&lt;p&gt;Trigger login or data loading operations.&lt;/p&gt;

&lt;p&gt;Observe SniffMaster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If request records appear → you can view the complete HTTPS data&lt;/li&gt;
&lt;li&gt;If no requests are recorded → further troubleshooting is needed&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  3. Common Symptoms of HTTPS Capture Failure
&lt;/h1&gt;

&lt;p&gt;In this case, the following occurred:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safari requests could be captured&lt;/li&gt;
&lt;li&gt;App requests had no records at all&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This indicates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The proxy is functioning normally&lt;/li&gt;
&lt;li&gt;The app's network requests are not using the system proxy&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  4. Switch HTTPS Capture Modes
&lt;/h1&gt;

&lt;p&gt;When the proxy cannot capture HTTPS requests, switch to a different capture method.&lt;/p&gt;

&lt;p&gt;Here, use SniffMaster's HTTPS brute-force capture.&lt;/p&gt;

&lt;p&gt;This method does not rely on proxy certificates.&lt;/p&gt;


&lt;h2&gt;
  
  
  Use SniffMaster to Capture HTTPS
&lt;/h2&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect the iPhone to the computer via USB&lt;/li&gt;
&lt;li&gt;Keep the device unlocked&lt;/li&gt;
&lt;li&gt;Tap "Trust This Computer" on the phone&lt;/li&gt;
&lt;li&gt;Start SniffMaster&lt;/li&gt;
&lt;li&gt;Select the iPhone from the device list&lt;/li&gt;
&lt;li&gt;Follow prompts to install iOS drivers&lt;/li&gt;
&lt;li&gt;Install the profile file&lt;/li&gt;
&lt;li&gt;Enter &lt;strong&gt;HTTPS Brute-Force Capture Mode&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click Start&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then trigger app requests on the phone.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1je6p57k48mt5j8p5gs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1je6p57k48mt5j8p5gs.png" alt="Enter Brute-Force Capture" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Observe Capture Results
&lt;/h2&gt;

&lt;p&gt;In SniffMaster, you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request domain&lt;/li&gt;
&lt;li&gt;Request path&lt;/li&gt;
&lt;li&gt;Request headers&lt;/li&gt;
&lt;li&gt;Response data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if the app does not use the proxy, HTTPS requests are still visible.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0fhdouitjsbzzoezhe2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0fhdouitjsbzzoezhe2.png" alt="Brute-Force Capture" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  5. When HTTPS Data Is Incomplete
&lt;/h1&gt;

&lt;p&gt;During capture, you might encounter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;URL visible&lt;/li&gt;
&lt;li&gt;Headers visible&lt;/li&gt;
&lt;li&gt;Request body empty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This indicates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPS has been captured&lt;/li&gt;
&lt;li&gt;But the app is not signed with a development certificate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Obtain the app's IPA file&lt;/li&gt;
&lt;li&gt;Re-sign it using an iOS development certificate&lt;/li&gt;
&lt;li&gt;Reinstall the app&lt;/li&gt;
&lt;li&gt;Capture again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After completion, the request body and response body will display normally.&lt;/p&gt;


&lt;h1&gt;
  
  
  6. Aspects of HTTPS Capture Unrelated to Ports
&lt;/h1&gt;

&lt;p&gt;During capture, you may observe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;api.example.com:443
api.example.com:8443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whether it's port 443 or a custom port:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As long as the TLS handshake succeeds&lt;/li&gt;
&lt;li&gt;The capture tool can parse HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ports do not affect decryption capability.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. Limitations of Modifying HTTPS Requests
&lt;/h1&gt;

&lt;p&gt;If you need to modify request parameters, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rewriting interface data&lt;/li&gt;
&lt;li&gt;Simulating different return results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You must use a proxy capture tool.&lt;/p&gt;

&lt;p&gt;In Charles or Proxyman, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Rewrite&lt;/li&gt;
&lt;li&gt;Use Breakpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SniffMaster also supports interceptors, but &lt;strong&gt;only available in HTTPS proxy mode&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Device-level capture modes do not modify data.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6x19gqbxzlmg5cfkm0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6x19gqbxzlmg5cfkm0x.png" alt="Interceptor" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Analyze HTTPS Issues with TCP Layer Analysis
&lt;/h1&gt;

&lt;p&gt;If HTTPS requests experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timeouts&lt;/li&gt;
&lt;li&gt;Connection drops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can export the data to Wireshark.&lt;/p&gt;

&lt;p&gt;In Wireshark, you can view:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP connection establishment process&lt;/li&gt;
&lt;li&gt;Data retransmissions&lt;/li&gt;
&lt;li&gt;Reasons for connection closure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This layer does not involve certificate issues.&lt;/p&gt;




&lt;p&gt;In practical debugging, follow this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use proxy capture to verify HTTPS&lt;/li&gt;
&lt;li&gt;If the proxy cannot capture app requests, switch to device-level capture&lt;/li&gt;
&lt;li&gt;If data is incomplete, handle signature issues&lt;/li&gt;
&lt;li&gt;If connection issues are involved, analyze TCP data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Reference link: &lt;a href="https://www.sniffmaster.net/tutorial/zh/1/1.html" rel="noopener noreferrer"&gt;https://www.sniffmaster.net/tutorial/zh/1/1.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>software</category>
    </item>
    <item>
      <title>Viewing iPhone Hardware Component Energy Consumption History and Energy Usage</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Fri, 20 Mar 2026 11:10:49 +0000</pubDate>
      <link>https://dev.to/datastack/viewing-iphone-hardware-component-energy-consumption-history-and-energy-usage-53i1</link>
      <guid>https://dev.to/datastack/viewing-iphone-hardware-component-energy-consumption-history-and-energy-usage-53i1</guid>
      <description>&lt;p&gt;In mobile app development, rapid battery drain is a challenging issue to troubleshoot.&lt;br&gt;
Testers often provide vague descriptions, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Significant drop in phone battery level&lt;/li&gt;
&lt;li&gt;Device heating up after using a feature for a while&lt;/li&gt;
&lt;li&gt;Abnormal power consumption during background operation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without detailed device data, such problems are difficult to pinpoint. Battery level itself is just an outcome; the actual energy consumption comes from device hardware components like CPU, display, audio, network, etc.&lt;/p&gt;

&lt;p&gt;This article introduces several &lt;strong&gt;methods to view iPhone hardware energy consumption&lt;/strong&gt; and how to combine various tools for analysis in different scenarios.&lt;/p&gt;




&lt;h1&gt;
  
  
  Which Hardware Typically Causes iPhone Energy Issues
&lt;/h1&gt;

&lt;p&gt;In iOS devices, power consumption mainly comes from several hardware components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;Screen (display)&lt;/li&gt;
&lt;li&gt;Audio components (speaker, microphone)&lt;/li&gt;
&lt;li&gt;Network module&lt;/li&gt;
&lt;li&gt;Bluetooth and location services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an app frequently uses these hardware components, energy consumption increases noticeably.&lt;/p&gt;

&lt;p&gt;Therefore, when troubleshooting issues, it's more important to observe &lt;strong&gt;which hardware is consuming power&lt;/strong&gt; rather than just checking battery percentage.&lt;/p&gt;




&lt;h1&gt;
  
  
  First Level: System Battery Statistics
&lt;/h1&gt;

&lt;p&gt;The simplest method is to check system battery statistics.&lt;/p&gt;

&lt;p&gt;Navigate to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Settings → Battery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power consumption percentages for each app&lt;/li&gt;
&lt;li&gt;Data from the last 24 hours and 10 days&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps confirm:&lt;/p&gt;

&lt;p&gt;Whether a specific app has abnormal power consumption.&lt;/p&gt;

&lt;p&gt;However, system statistics only show &lt;strong&gt;app-level power consumption&lt;/strong&gt; and cannot analyze specific hardware usage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Second Level: Developer Tool Analysis
&lt;/h1&gt;

&lt;p&gt;In a development environment, you can use Xcode Instruments.&lt;/p&gt;

&lt;p&gt;Instruments' Energy Log can display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU activity&lt;/li&gt;
&lt;li&gt;GPU usage&lt;/li&gt;
&lt;li&gt;Network activity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This method is suitable for development phases but has two limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires connection to a Mac&lt;/li&gt;
&lt;li&gt;Not convenient for long-term historical data observation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore, during testing phases, many teams use device monitoring tools for supplementary analysis.&lt;/p&gt;




&lt;h1&gt;
  
  
  Using Keymob Assistant to View Hardware Energy Consumption History
&lt;/h1&gt;

&lt;p&gt;In project testing, I typically use &lt;strong&gt;Keymob Assistant&lt;/strong&gt; to view historical hardware usage on devices.&lt;/p&gt;

&lt;p&gt;This feature allows direct viewing of energy consumption records for various hardware components and enables time-based analysis.&lt;/p&gt;




&lt;h2&gt;
  
  
  Preparation
&lt;/h2&gt;

&lt;p&gt;Before viewing hardware energy consumption, you need to obtain device data.&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect iPhone using a data cable&lt;/li&gt;
&lt;li&gt;Open Keymob Assistant&lt;/li&gt;
&lt;li&gt;Wait for device recognition&lt;/li&gt;
&lt;li&gt;Follow prompts to retrieve device usage records&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Initial data setup is required on first use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Viewing Hardware Energy Consumption Ranking
&lt;/h2&gt;

&lt;p&gt;Navigation path:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Left navigation → Usage Records → Hardware Energy Consumption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this interface, you can see energy consumption for various hardware components, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;Display&lt;/li&gt;
&lt;li&gt;Bluetooth&lt;/li&gt;
&lt;li&gt;Speaker&lt;/li&gt;
&lt;li&gt;Microphone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data is sorted by energy consumption.&lt;/p&gt;

&lt;p&gt;This allows quick identification of which hardware consumes the most.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1y510w1s0v1krj56pqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1y510w1s0v1krj56pqz.png" alt="Hardware Energy Consumption" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Viewing Detailed Hardware Usage
&lt;/h2&gt;

&lt;p&gt;To further analyze a specific hardware component, click &lt;strong&gt;Details&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, select:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audio Speaker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After entering, you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily energy consumption bar chart&lt;/li&gt;
&lt;li&gt;Usage patterns across different time periods&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Clicking on a specific day shows energy consumption data for different time periods that day.&lt;/p&gt;

&lt;p&gt;This helps analyze:&lt;/p&gt;

&lt;p&gt;Whether abnormal usage occurred during a specific time period.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29563r1olxtymtv1y66y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29563r1olxtymtv1y66y.png" alt="Details" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Practical Case
&lt;/h1&gt;

&lt;p&gt;During a test, testers reported:&lt;/p&gt;

&lt;p&gt;"Battery drains quickly during background operation."&lt;/p&gt;

&lt;p&gt;Troubleshooting process:&lt;/p&gt;

&lt;p&gt;First step: Check system battery statistics.&lt;/p&gt;

&lt;p&gt;Found target app had high power consumption percentage.&lt;/p&gt;




&lt;p&gt;Second step: Use Keymob Assistant to view hardware energy consumption ranking.&lt;/p&gt;

&lt;p&gt;Found &lt;strong&gt;abnormal energy consumption in audio components&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Third step: View detailed audio records.&lt;/p&gt;

&lt;p&gt;Found audio activity persisted during background periods.&lt;/p&gt;




&lt;p&gt;Final confirmation of cause:&lt;/p&gt;

&lt;p&gt;The app did not properly stop audio playback in the background.&lt;/p&gt;

&lt;p&gt;After fixing and retesting, energy consumption returned to normal.&lt;/p&gt;




&lt;h1&gt;
  
  
  Multi-Tool Combination Process
&lt;/h1&gt;

&lt;p&gt;In actual projects, I typically troubleshoot power consumption issues in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check system battery statistics&lt;/li&gt;
&lt;li&gt;Use device tools to view hardware energy consumption&lt;/li&gt;
&lt;li&gt;Analyze code logic with development tools&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach allows gradual narrowing down of the problem scope.&lt;/p&gt;




&lt;h1&gt;
  
  
  Hardware Energy Consumption Records Are Valuable
&lt;/h1&gt;

&lt;p&gt;Compared to instantaneous performance data, hardware energy consumption history has two advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can view usage over past days or even months&lt;/li&gt;
&lt;li&gt;Can precisely pinpoint time periods when issues occurred&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables correlation between &lt;strong&gt;user-reported time points&lt;/strong&gt; and &lt;strong&gt;device behavior&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;iPhone battery drain issues are typically related to specific hardware components rather than just battery problems. By combining system statistics, development tools, and device monitoring tools, you can progressively analyze how apps use hardware resources during operation.&lt;/p&gt;

&lt;p&gt;Reference link: &lt;a href="https://keymob.com/tutorial/zh/27/27.html" rel="noopener noreferrer"&gt;https://keymob.com/tutorial/zh/27/27.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>software</category>
    </item>
    <item>
      <title>How to Perform Proxy Packet Capture and Data Flow Analysis on Mac</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Fri, 20 Mar 2026 10:11:27 +0000</pubDate>
      <link>https://dev.to/datastack/how-to-perform-proxy-packet-capture-and-data-flow-analysis-on-mac-1bb5</link>
      <guid>https://dev.to/datastack/how-to-perform-proxy-packet-capture-and-data-flow-analysis-on-mac-1bb5</guid>
      <description>&lt;p&gt;When debugging networks on macOS, packet capture is usually the first step.&lt;br&gt;
For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App fails to request an API&lt;/li&gt;
&lt;li&gt;An API returns abnormal data&lt;/li&gt;
&lt;li&gt;Need to confirm parameters sent by the client&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these issues, relying solely on code logs makes it difficult to judge network behavior; packet capture allows direct viewing of requests and responses.&lt;/p&gt;

&lt;p&gt;Below, through a debugging process, several common methods for packet capture on Mac are introduced.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. First, Capture Network Requests from the Mac Itself
&lt;/h1&gt;

&lt;p&gt;If you need to view network requests from programs on the Mac itself, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser accessing APIs&lt;/li&gt;
&lt;li&gt;Desktop applications calling interfaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simplest method is to use proxy packet capture tools, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Charles&lt;/li&gt;
&lt;li&gt;Proxyman&lt;/li&gt;
&lt;li&gt;SniffMaster&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tools run locally and intercept requests via proxy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Configuring Proxy Packet Capture
&lt;/h2&gt;

&lt;p&gt;Steps are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start Charles or SniffMaster on Mac&lt;/li&gt;
&lt;li&gt;Check the proxy listening port, e.g., &lt;strong&gt;8888&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enable system proxy in macOS network settings&lt;/li&gt;
&lt;li&gt;Set HTTP and HTTPS proxy to the local address&lt;/li&gt;
&lt;li&gt;Save settings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once done, local network requests will first pass through the proxy tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installing HTTPS Certificates
&lt;/h2&gt;

&lt;p&gt;If requests use HTTPS, you need to install proxy certificates.&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Access the certificate address provided by the proxy tool in a browser&lt;/li&gt;
&lt;li&gt;Download the certificate&lt;/li&gt;
&lt;li&gt;Install the certificate in macOS Keychain&lt;/li&gt;
&lt;li&gt;Set the certificate to &lt;strong&gt;Always Trust&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once done, the proxy tool can decrypt HTTPS requests.&lt;/p&gt;




&lt;h2&gt;
  
  
  Verifying Successful Packet Capture
&lt;/h2&gt;

&lt;p&gt;Open a browser and visit an HTTPS website.&lt;/p&gt;

&lt;p&gt;If request records appear in the proxy tool and response content can be viewed, the packet capture environment is established.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Capturing iPhone Network Requests on Mac
&lt;/h1&gt;

&lt;p&gt;If you need to debug network behavior of an iOS App, you can route iPhone traffic through the Mac.&lt;/p&gt;

&lt;p&gt;The common method is still proxy packet capture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setting Up iPhone Proxy
&lt;/h2&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect iPhone and Mac to the same Wi-Fi&lt;/li&gt;
&lt;li&gt;Open iPhone Settings → Wi-Fi&lt;/li&gt;
&lt;li&gt;Tap the current network&lt;/li&gt;
&lt;li&gt;Under HTTP Proxy, select &lt;strong&gt;Manual&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter the Mac's IP address&lt;/li&gt;
&lt;li&gt;Enter the proxy port (e.g., 8888)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9sjkdaci9nx9sykqrmk.png" alt="Port Configuration" width="800" height="578"&gt;
Save and return to the home screen.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Installing iOS HTTPS Certificates
&lt;/h2&gt;

&lt;p&gt;In iPhone Safari, access the certificate address provided by the proxy tool:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the profile&lt;/li&gt;
&lt;li&gt;Install the certificate&lt;/li&gt;
&lt;li&gt;Enable certificate trust in iOS Settings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once done, the proxy tool can decrypt iOS HTTPS requests.&lt;/p&gt;




&lt;h2&gt;
  
  
  Testing App Network Requests
&lt;/h2&gt;

&lt;p&gt;Open the App and trigger network operations, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login&lt;/li&gt;
&lt;li&gt;Loading a list&lt;/li&gt;
&lt;li&gt;Submitting a form&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the proxy tool, you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request URL&lt;/li&gt;
&lt;li&gt;Headers&lt;/li&gt;
&lt;li&gt;Request body&lt;/li&gt;
&lt;li&gt;Response content&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  3. When Proxy Fails to Capture App Requests
&lt;/h1&gt;

&lt;p&gt;Sometimes, this situation occurs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safari requests can be captured&lt;/li&gt;
&lt;li&gt;App requests have no records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This indicates the App is not using the system proxy.&lt;/p&gt;

&lt;p&gt;In this case, further adjusting proxy settings won't change the outcome.&lt;/p&gt;

&lt;p&gt;Device-level packet capture is needed.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Using Device-Level Packet Capture Tools on Mac
&lt;/h1&gt;

&lt;p&gt;Device-level packet capture directly reads network data from the device side.&lt;/p&gt;

&lt;p&gt;In this scenario, you can use &lt;strong&gt;SniffMaster&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using SniffMaster to Capture iOS Traffic
&lt;/h2&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect iPhone to Mac via USB&lt;/li&gt;
&lt;li&gt;Keep the device unlocked&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Trust This Computer&lt;/strong&gt; on the phone&lt;/li&gt;
&lt;li&gt;Launch SniffMaster&lt;/li&gt;
&lt;li&gt;Select iPhone from the device list&lt;/li&gt;
&lt;li&gt;Follow prompts to install the profile&lt;/li&gt;
&lt;li&gt;Enter &lt;strong&gt;HTTPS Brute Force Capture Mode&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click Start&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then trigger network requests on the phone.&lt;/p&gt;

&lt;p&gt;Corresponding HTTPS requests will appear in the capture interface.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbxp29mpi6n9lqt0fifl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbxp29mpi6n9lqt0fifl.png" alt="Brute Force Capture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Viewing Only a Specific App's Traffic
&lt;/h2&gt;

&lt;p&gt;Device-level capture includes system network traffic, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DNS requests&lt;/li&gt;
&lt;li&gt;Apple service connections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To more easily locate target requests, you can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Select App&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Check the target application&lt;/li&gt;
&lt;li&gt;Trigger network operations again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The capture list will only show that App's requests.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo8vo86evyzf5whdthur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo8vo86evyzf5whdthur.png" alt="App" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Analyzing TCP or UDP Network Issues
&lt;/h1&gt;

&lt;p&gt;If debugging involves network connection issues, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Request latency&lt;/li&gt;
&lt;li&gt;Connection drops&lt;/li&gt;
&lt;li&gt;Packet loss&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data flow packet capture can be used.&lt;/p&gt;

&lt;p&gt;SniffMaster supports capturing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP data streams&lt;/li&gt;
&lt;li&gt;UDP data streams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmt8mhhnqrorwiqp9dniv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmt8mhhnqrorwiqp9dniv.png" alt="Data Flow Capture" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After capture, data can be exported to &lt;strong&gt;Wireshark&lt;/strong&gt; for analysis.&lt;/p&gt;

&lt;p&gt;In Wireshark, you can view:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP three-way handshake&lt;/li&gt;
&lt;li&gt;Data retransmissions&lt;/li&gt;
&lt;li&gt;Connection closure reasons&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  6. Use Cases for Different Packet Capture Tools
&lt;/h1&gt;

&lt;p&gt;In network packet capture, different tools serve different purposes:&lt;br&gt;
| Tool         | Capture Method   | Main Use Case          |&lt;br&gt;
| ------------ | ---------------- | ---------------------- |&lt;br&gt;
| Charles      | Proxy Capture    | HTTP / HTTPS Debugging |&lt;br&gt;
| Proxyman     | Proxy Capture    | HTTPS Debugging        |&lt;br&gt;
| SniffMaster  | Device-Level Capture | iOS Network Data       |&lt;br&gt;
| Wireshark    | Network Layer Capture | TCP / UDP Analysis     |&lt;/p&gt;




&lt;p&gt;When debugging networks on Mac, you can follow this sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use proxy capture tools to view HTTP / HTTPS requests&lt;/li&gt;
&lt;li&gt;If proxy fails to capture requests, use SniffMaster for device-level capture&lt;/li&gt;
&lt;li&gt;If network connection analysis is needed, export data to Wireshark&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach covers most packet capture scenarios.&lt;/p&gt;

&lt;p&gt;Reference link: &lt;a href="https://www.sniffmaster.net/" rel="noopener noreferrer"&gt;https://www.sniffmaster.net/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>software</category>
    </item>
    <item>
      <title>Complete Guide to H5 Mobile Debugging: Full Practice from Browser Simulation to Real-Device WebView Debugging</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Fri, 05 Dec 2025 10:19:29 +0000</pubDate>
      <link>https://dev.to/datastack/complete-guide-to-h5-mobile-debugging-full-practice-from-browser-simulation-to-real-device-webview-57gi</link>
      <guid>https://dev.to/datastack/complete-guide-to-h5-mobile-debugging-full-practice-from-browser-simulation-to-real-device-webview-57gi</guid>
      <description>&lt;p&gt;In the world of frontend development, "perfect on desktop, broken on mobile" is a classic scenario almost every engineer has experienced.&lt;/p&gt;

&lt;p&gt;A page works fine in Chrome, but on mobile:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elements are misaligned, animations drop frames;&lt;/li&gt;
&lt;li&gt;It works on iPhone but shows a white screen on Android;&lt;/li&gt;
&lt;li&gt;Network requests hang, the console is silent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difficulty of H5 mobile debugging isn't that there are many bugs, but that the problems are invisible.&lt;/p&gt;

&lt;p&gt;In this article, we'll systematically explain how to build an &lt;strong&gt;efficient, reproducible H5 mobile debugging system&lt;/strong&gt; from a frontend practical perspective, covering browser simulation, real-device debugging, WebView analysis, network monitoring, and performance optimization.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Why is H5 Mobile Debugging More Complex Than Desktop?
&lt;/h2&gt;

&lt;p&gt;The essence of debugging is "visually understanding system behavior," and on mobile, the biggest challenge is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;H5 pages run not in a browser, but in a WebView.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Desktop Browser&lt;/th&gt;
&lt;th&gt;Mobile WebView&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kernel&lt;/td&gt;
&lt;td&gt;Unified (Chromium)&lt;/td&gt;
&lt;td&gt;Varies by vendor (WebKit / Blink / X5 / UC)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debug Interface&lt;/td&gt;
&lt;td&gt;Fully open&lt;/td&gt;
&lt;td&gt;Closed or restricted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log Output&lt;/td&gt;
&lt;td&gt;Visible in console&lt;/td&gt;
&lt;td&gt;Invisible within container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network Requests&lt;/td&gt;
&lt;td&gt;Easy to monitor&lt;/td&gt;
&lt;td&gt;Affected by proxies, SDKs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Stable hardware&lt;/td&gt;
&lt;td&gt;Limited by device performance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Thus, the same page may behave completely differently across different phones, apps, and OS versions.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Desktop Simulation Debugging: The First Step in Initial Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1️⃣ Chrome DevTools: Essential Basics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Chrome's device simulation mode is the starting point for mobile debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simulate device dimensions and DPR;&lt;/li&gt;
&lt;li&gt;Simulate touch events;&lt;/li&gt;
&lt;li&gt;Switch network speeds (3G, Slow 4G);&lt;/li&gt;
&lt;li&gt;Simulate user agent (UA).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive layout validation;&lt;/li&gt;
&lt;li&gt;Media query breakpoint testing;&lt;/li&gt;
&lt;li&gt;First-load and lazy-load logic checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only visual simulation;&lt;/li&gt;
&lt;li&gt;Cannot reflect actual WebView behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Desktop simulation debugging = "pre-debugging phase," not the end goal.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2️⃣ Firefox / Edge Debugging&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Firefox offers more intuitive visual debugging for CSS Grid and Flex layouts;&lt;/li&gt;
&lt;li&gt;Edge inherits the Chromium ecosystem, providing a synchronized DevTools debugging experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Chrome simulation + Firefox layout analysis is a classic combination.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. Real-Device Remote Debugging: Entering the "Real Environment"
&lt;/h2&gt;

&lt;p&gt;When issues occur on real devices, simulators are no help.&lt;br&gt;
At this point, real-device remote debugging tools are needed.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;1️⃣ iOS Platform: Safari Remote Debug&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Setup Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Mac's Safari → Preferences → Advanced → Check "Show Develop menu";&lt;/li&gt;
&lt;li&gt;Connect iPhone to computer;&lt;/li&gt;
&lt;li&gt;Open H5 page → Safari → "Develop" → Device → Page;&lt;/li&gt;
&lt;li&gt;Real-time debugging is available.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Viewable Content:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM, CSS, JS debugging;&lt;/li&gt;
&lt;li&gt;Network requests;&lt;/li&gt;
&lt;li&gt;Console logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS only;&lt;/li&gt;
&lt;li&gt;Supports only Safari / WKWebView.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2️⃣ Android Platform: Chrome Inspect&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Operation Method:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Enable Android Developer Options → USB debugging;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect to computer → Enter in Chrome address bar:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   chrome://inspect/#devices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Click "Inspect" to open the remote debugging panel.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View page DOM, JS, network requests;&lt;/li&gt;
&lt;li&gt;Synchronous debugging in real environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only works with Chrome WebView;&lt;/li&gt;
&lt;li&gt;Cannot detect custom kernels like WeChat, Alipay, UC.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. WebView Scenarios: The Biggest "Blind Spot" in Mobile Debugging
&lt;/h2&gt;

&lt;p&gt;Most mobile H5 pages don't run directly in a browser,&lt;br&gt;
but are embedded in &lt;strong&gt;WebViews within various Apps&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Issues in these environments typically include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;White screen with no console output;&lt;/li&gt;
&lt;li&gt;Requests intercepted by SDKs or proxies;&lt;/li&gt;
&lt;li&gt;JS errors without accessible logs;&lt;/li&gt;
&lt;li&gt;Inconsistent behavior between iOS and Android.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditional DevTools "can't see inside" in such scenarios.&lt;br&gt;
Here, more specialized WebView debugging tools are needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. WebDebugX: Making WebView Debugging "Visible"
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;WebDebugX&lt;/strong&gt; is a cross-platform WebView remote debugging tool that can debug &lt;strong&gt;iOS and Android&lt;/strong&gt; WebView pages on &lt;strong&gt;Windows / macOS / Linux&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Its goal is simple: make debugging H5 pages in Apps as seamless as in Chrome.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Core Features&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature Module&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DOM Debugging&lt;/td&gt;
&lt;td&gt;Real-time view / modify page structure and styles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JS Debugging&lt;/td&gt;
&lt;td&gt;Supports breakpoints, variable inspection, stack traces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network Monitoring&lt;/td&gt;
&lt;td&gt;Packet capture, interception, replay, response simulation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance Analysis&lt;/td&gt;
&lt;td&gt;View FPS, memory usage, CPU time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log Capture&lt;/td&gt;
&lt;td&gt;Collect console.log and error info in WebView&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Platform Support&lt;/td&gt;
&lt;td&gt;One tool for all platforms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Real Project Case&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A WeChat-embedded H5 activity page randomly showed a white screen on Android phones.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;WebDebugX&lt;/strong&gt;, debugging revealed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JS executed too early during WebView initialization;&lt;/li&gt;
&lt;li&gt;Some scripts were blocked by CSP policies;&lt;/li&gt;
&lt;li&gt;After adjusting load order, the issue disappeared completely.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Traditional DevTools couldn't see this information at all.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Integration with Other Tools&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chrome DevTools&lt;/td&gt;
&lt;td&gt;Desktop simulation&lt;/td&gt;
&lt;td&gt;Initial development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Charles / Fiddler&lt;/td&gt;
&lt;td&gt;Network capture&lt;/td&gt;
&lt;td&gt;Integration phase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vConsole / Eruda&lt;/td&gt;
&lt;td&gt;Log output&lt;/td&gt;
&lt;td&gt;WeChat-embedded pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebDebugX&lt;/td&gt;
&lt;td&gt;Real-device WebView&lt;/td&gt;
&lt;td&gt;Terminal testing &amp;amp; performance optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  6. Performance Debugging: Making H5 Pages "Fast and Smooth"
&lt;/h2&gt;

&lt;p&gt;Performance issues on mobile often hide in JS and the rendering layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Lighthouse (Desktop)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Analyze first-load, interaction delays;&lt;/li&gt;
&lt;li&gt;Automatically generate performance scores and optimization suggestions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;WebDebugX Performance Module (Real Device)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;View FPS curves, rendering block points;&lt;/li&gt;
&lt;li&gt;Detect memory leaks and long tasks;&lt;/li&gt;
&lt;li&gt;Identify bottlenecks in image, font resource loading.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Desktop performance ≠ real-device performance. WebDebugX makes performance optimization data more realistic.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  7. Building a Complete Mobile Debugging System
&lt;/h2&gt;

&lt;p&gt;A mature frontend team should integrate debugging into the engineering system, not treat it as "emergency firefighting."&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Tool Combination&lt;/th&gt;
&lt;th&gt;Goal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Chrome DevTools + vConsole&lt;/td&gt;
&lt;td&gt;Logic and style validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration&lt;/td&gt;
&lt;td&gt;Charles / Postman&lt;/td&gt;
&lt;td&gt;Interface and network troubleshooting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real Device&lt;/td&gt;
&lt;td&gt;Safari / Chrome Inspect / WebDebugX&lt;/td&gt;
&lt;td&gt;Mobile debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Lighthouse / WebDebugX&lt;/td&gt;
&lt;td&gt;Load and render optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Treat debugging as a process, not a temporary action.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  8. Debugging Mindset: Hypothesize First, Then Verify
&lt;/h2&gt;

&lt;p&gt;Frontend debugging isn't "by feeling," but "hypothesis-driven verification."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thought Process:&lt;/strong&gt;&lt;br&gt;
 Reproduce issue →&lt;br&gt;
 Hypothesize cause →&lt;br&gt;
 Locate level (logic / network / WebView) →&lt;br&gt;
 Choose right tool to verify →&lt;br&gt;
 Quantify results and document.&lt;/p&gt;

&lt;p&gt;The biggest benefit: even after a bug is fixed, you retain traceable debugging knowledge.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>software</category>
      <category>mobile</category>
    </item>
    <item>
      <title>iOS Performance Tools Review: Comparison and recommended mixes of six common solutions (2025).</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Thu, 04 Dec 2025 03:37:09 +0000</pubDate>
      <link>https://dev.to/datastack/ios-performance-tools-review-comparison-and-recommended-mixes-of-six-common-solutions-2025-3nnm</link>
      <guid>https://dev.to/datastack/ios-performance-tools-review-comparison-and-recommended-mixes-of-six-common-solutions-2025-3nnm</guid>
      <description>&lt;p&gt;In the era of mobile applications, competition has shifted from feature wars to &lt;strong&gt;performance wars&lt;/strong&gt;. Whether it's gaming apps, social applications, or financial tools, performance smoothness and resource consumption directly determine user retention. For iOS developers, finding a suitable performance monitoring tool often means debugging and optimization efficiency can be improved several times.&lt;/p&gt;

&lt;p&gt;This article is based on the latest iOS 26 system and selects six widely used performance monitoring tools in the developer community for in-depth evaluation: &lt;strong&gt;Xcode Instruments, Firebase Performance, New Relic, KeyMob, TestFlight Metrics, PerfDog&lt;/strong&gt;. Through comparisons in dimensions such as functionality, accuracy, ease of use, and platform support, it helps developers choose the performance monitoring solution that suits their team.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Evaluation Standards and Test Environment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Test Platform:&lt;/strong&gt; iPhone 15 Pro (iOS 26.0)&lt;br&gt;
&lt;strong&gt;Test Application:&lt;/strong&gt; A social app with complex animations and network requests&lt;br&gt;
&lt;strong&gt;Evaluation Dimensions:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CPU / Memory / GPU / Network / Energy consumption monitoring capabilities&lt;/li&gt;
&lt;li&gt;Monitoring accuracy and real-time performance&lt;/li&gt;
&lt;li&gt;Cross-platform compatibility&lt;/li&gt;
&lt;li&gt;Log analysis and export capabilities&lt;/li&gt;
&lt;li&gt;Long-term operation stability&lt;/li&gt;
&lt;li&gt;Support for development processes (CI/CD)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All tools were tested under the same environment to ensure data consistency.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Xcode Instruments — The Official Benchmark Tool
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Official development tool&lt;br&gt;
&lt;strong&gt;Applicable Stage:&lt;/strong&gt; Development and local debugging&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU and call stack analysis (Time Profiler)&lt;/li&gt;
&lt;li&gt;Memory allocation and leak detection (Allocations, Leaks)&lt;/li&gt;
&lt;li&gt;GPU rendering efficiency (Core Animation)&lt;/li&gt;
&lt;li&gt;Battery and energy consumption analysis (Energy Log)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;br&gt;
 Extremely high sampling accuracy, suitable for low-level performance analysis&lt;br&gt;
 Perfect integration with Xcode, smooth debugging experience&lt;br&gt;
 Can directly view symbolized call stacks&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;br&gt;
 Cannot cross-platform&lt;br&gt;
 Affects performance during runtime, cannot sample for long periods&lt;br&gt;
 Does not support online or non-development signed applications&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt; Code-level performance debugging, short-term sampling analysis&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Firebase Performance — The Preferred Cloud Performance Monitoring Tool
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Cloud monitoring tool&lt;br&gt;
&lt;strong&gt;Applicable Stage:&lt;/strong&gt; Beta testing and official release stages&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Startup time and network latency monitoring&lt;/li&gt;
&lt;li&gt;Page rendering and interaction performance analysis&lt;/li&gt;
&lt;li&gt;Regional distribution and device difference reports&lt;/li&gt;
&lt;li&gt;Automatic collection of user-side performance data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;br&gt;
 Can continuously collect real user data&lt;br&gt;
 No additional operations required, automatic reporting&lt;br&gt;
 Perfect integration with Crashlytics&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;br&gt;
 Limited sampling frequency, cannot obtain frame rate and GPU metrics&lt;br&gt;
 Cannot view detailed CPU usage inside the app&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt; Online performance trend analysis, performance regression verification after release&lt;/p&gt;




&lt;h3&gt;
  
  
  4. New Relic Mobile — Enterprise-Level Performance Visualization Platform
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Commercial monitoring solution&lt;br&gt;
&lt;strong&gt;Applicable Stage:&lt;/strong&gt; Enterprise versions and long-term operation analysis&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time performance dashboard&lt;/li&gt;
&lt;li&gt;User interaction and error path visualization&lt;/li&gt;
&lt;li&gt;Network request performance tracking&lt;/li&gt;
&lt;li&gt;Multi-version comparative analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;br&gt;
 Supports centralized monitoring of multiple apps&lt;br&gt;
 Intuitive dashboard, suitable for large team collaboration&lt;br&gt;
 Can integrate with CI/CD, Jenkins&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;br&gt;
 Complex installation and configuration&lt;br&gt;
 Higher cost for individual developers&lt;br&gt;
 Cannot monitor GPU/frame rate and other visual performance metrics&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt; Large teams, continuous performance analysis of online versions&lt;/p&gt;




&lt;h3&gt;
  
  
  5. KeyMob — All-in-One Performance Monitoring Tool from a Developer's Perspective
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Cross-platform performance and file analysis tool&lt;br&gt;
&lt;strong&gt;Applicable Stage:&lt;/strong&gt; Development, debugging, testing&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time CPU, GPU, memory, network, FPS monitoring&lt;/li&gt;
&lt;li&gt;Lag detection, energy consumption analysis, log export&lt;/li&gt;
&lt;li&gt;Supports app file decryption and historical performance records&lt;/li&gt;
&lt;li&gt;Supports multiple frameworks such as Swift, Flutter, Unity, Cocos2d&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;br&gt;
 Can run on non-jailbroken devices&lt;br&gt;
 Supports Windows, macOS, Linux&lt;br&gt;
 Intuitive data visualization, clear historical curve comparison&lt;br&gt;
 Can cross-app monitor mini-programs and container performance&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;br&gt;
 Cannot directly integrate with cloud statistical systems (requires data export)&lt;br&gt;
 Requires manual integration for analysis reports&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt; Performance debugging, file analysis, performance verification during development&lt;/p&gt;




&lt;h3&gt;
  
  
  6. TestFlight Metrics — Performance Metric Collection in Beta Stage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Apple's official beta data collection service&lt;br&gt;
&lt;strong&gt;Applicable Stage:&lt;/strong&gt; Test distribution and user experience tracking&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crash rate and stability statistics&lt;/li&gt;
&lt;li&gt;Startup time and response speed&lt;/li&gt;
&lt;li&gt;Installation retention and device information statistics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;br&gt;
 No additional configuration required, automatic data collection&lt;br&gt;
 Integrated with Xcode Connect&lt;br&gt;
 Secure, reliable, and privacy-compliant&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;br&gt;
 Limited metric dimensions (no CPU/GPU monitoring)&lt;br&gt;
 Cannot export detailed logs or time-series data&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt; Performance verification before app release and gray-scale testing&lt;/p&gt;




&lt;h3&gt;
  
  
  7. PerfDog — Performance Tool for Gaming and Multimedia Apps
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type:&lt;/strong&gt; Third-party real-time performance testing platform&lt;br&gt;
&lt;strong&gt;Applicable Stage:&lt;/strong&gt; Performance analysis for gaming and high-frame-rate applications&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Functions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU rendering time analysis&lt;/li&gt;
&lt;li&gt;Network jitter and latency detection&lt;/li&gt;
&lt;li&gt;CPU/GPU temperature monitoring&lt;/li&gt;
&lt;li&gt;Cross-platform performance data collection (iOS/Android)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantages:&lt;/strong&gt;&lt;br&gt;
 Clear performance charts, high testing accuracy&lt;br&gt;
 Supports long-term operation and comparative reports&lt;br&gt;
 Especially suitable for performance tuning of gaming apps&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt;&lt;br&gt;
 Installation depends on a computer-side client&lt;br&gt;
 Not suitable for fine-grained debugging of conventional apps&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios:&lt;/strong&gt; Gaming performance testing, cross-platform performance comparison&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Horizontal Comparison of Six Tools
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool Name&lt;/th&gt;
&lt;th&gt;Monitoring Dimensions&lt;/th&gt;
&lt;th&gt;Real-time&lt;/th&gt;
&lt;th&gt;Cloud Support&lt;/th&gt;
&lt;th&gt;Cross-platform&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;th&gt;Recommended Stage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Xcode Instruments&lt;/td&gt;
&lt;td&gt;CPU/Memory/GPU/Energy&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Development Debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firebase Performance&lt;/td&gt;
&lt;td&gt;Startup/Network/Rendering&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Online Monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New Relic Mobile&lt;/td&gt;
&lt;td&gt;CPU/Network/Crash&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Enterprise Monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KeyMob&lt;/td&gt;
&lt;td&gt;CPU/GPU/Memory/Logs&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;All Stages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TestFlight Metrics&lt;/td&gt;
&lt;td&gt;Startup/Stability&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Beta Testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PerfDog&lt;/td&gt;
&lt;td&gt;FPS/Temperature/Network&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Gaming Testing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Comprehensive Evaluation Results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Development Stage Tools:&lt;/strong&gt; KeyMob + Instruments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Release Stage Tools:&lt;/strong&gt; Firebase + New Relic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Testing Combination:&lt;/strong&gt; PerfDog + KeyMob (suitable for high-frame-rate applications)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  9. Multi-Tool Combination Strategy Recommendations
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;(1) Development Stage: Precise Sampling + System Log Analysis&lt;/strong&gt;&lt;br&gt;
 Use &lt;strong&gt;Xcode Instruments + KeyMob&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Instruments locates function performance bottlenecks, KeyMob supplements system-level CPU, memory, network trends.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;(2) Testing Stage: Beta Users and Real Device Verification&lt;/strong&gt;&lt;br&gt;
 Use &lt;strong&gt;TestFlight Metrics + KeyMob&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Collect performance metrics from test devices, while monitoring real-time data and crash logs with KeyMob.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;(3) Release Stage: Real-time Performance Regression&lt;/strong&gt;&lt;br&gt;
 Use &lt;strong&gt;Firebase Performance + New Relic&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Continuously collect performance trends in the cloud, enabling comparative analysis between versions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;(4) Gaming/High-Performance Scenarios&lt;/strong&gt;&lt;br&gt;
 Use &lt;strong&gt;PerfDog + KeyMob&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Simultaneously capture frame rate fluctuations and device temperature to identify performance bottlenecks.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  10. Conclusion: Best Practices for Performance Monitoring
&lt;/h3&gt;

&lt;p&gt;iOS performance optimization is no longer a matter of single-point tuning but a systematic engineering effort. From Xcode's low-level sampling to KeyMob's real-time monitoring, and Firebase's online trend analysis, a multi-tool collaborative combination is necessary to build a truly reliable performance assurance system.&lt;/p&gt;

&lt;p&gt;Performance data is not just "monitoring results"; it is the &lt;strong&gt;basis for development decisions&lt;/strong&gt;. Mastering performance means mastering the initiative in user experience.&lt;/p&gt;

</description>
      <category>mobile</category>
      <category>software</category>
    </item>
    <item>
      <title>Complete Analysis of iOS Submission Process for uni-app: Full Practice from Packaging to Release</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Sat, 08 Nov 2025 08:02:22 +0000</pubDate>
      <link>https://dev.to/datastack/complete-analysis-of-ios-submission-process-for-uni-app-full-practice-from-packaging-to-release-4cg4</link>
      <guid>https://dev.to/datastack/complete-analysis-of-ios-submission-process-for-uni-app-full-practice-from-packaging-to-release-4cg4</guid>
      <description>&lt;p&gt;uni-app, as a cross-platform development framework, has become the first choice for many teams and individual developers due to its "write once, run everywhere" feature.&lt;/p&gt;

&lt;p&gt;However, many developers often encounter complex processes, scattered tools, and tedious reviews during the &lt;strong&gt;iOS app submission phase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This article will focus on the &lt;strong&gt;iOS submission process for uni-app&lt;/strong&gt;, combining practical experience to detail the entire process from certificate preparation to TestFlight distribution and App Store release, and provide tool combination solutions for different stages.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Preparation Phase: iOS Certificates and Provisioning Profiles
&lt;/h2&gt;

&lt;p&gt;In a uni-app project, to successfully package and submit an iOS app, you must first apply for &lt;strong&gt;iOS development certificates&lt;/strong&gt; and &lt;strong&gt;distribution certificates&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mac users&lt;/strong&gt;: Can generate a CSR file via Xcode or Keychain Access, then apply for certificates in the Apple Developer Center.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform users (Windows/Linux)&lt;/strong&gt;: Can use &lt;strong&gt;Appuploader&lt;/strong&gt; to directly generate p12 certificates and provisioning profiles without a Mac.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Team practical experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is recommended to uniformly export as &lt;code&gt;.p12&lt;/code&gt; files and set certificate naming conventions (e.g., &lt;code&gt;UniApp_Project_Dist_2025.p12&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Store certificates and provisioning profiles centrally in a team repository to avoid packaging failures due to loss of personal computers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Packaging Phase: Generating ipa from HBuilderX
&lt;/h2&gt;

&lt;p&gt;uni-app packaging has two main methods:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Cloud Packaging (Recommended for small teams/without Mac environment)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;HBuilderX → Distribution → Native App - Cloud Packaging&lt;/strong&gt;, upload certificates and provisioning profiles.&lt;/li&gt;
&lt;li&gt;The cloud directly generates the ipa file.&lt;/li&gt;
&lt;li&gt;Suitable for teams without Macs to quickly deliver.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Local Packaging (Requires Mac environment)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use HBuilderX to export the Xcode project.&lt;/li&gt;
&lt;li&gt;Open the project in Xcode on a Mac, perform &lt;strong&gt;Archive&lt;/strong&gt; packaging, and export the ipa file.&lt;/li&gt;
&lt;li&gt;More flexible, suitable for teams requiring customized configurations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Upload Phase: Choices for Multi-Tool Combinations
&lt;/h2&gt;

&lt;p&gt;After generating the ipa, it needs to be uploaded to Apple's servers to enter TestFlight or the App Store.&lt;/p&gt;

&lt;p&gt;Common solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Xcode upload&lt;/strong&gt;: Intuitive, but limited to Mac users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transporter&lt;/strong&gt;: Apple's official standalone upload tool, suitable for stable scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Appuploader&lt;/strong&gt;: Supports Windows/Linux/Mac, cross-platform upload without Mac.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fastlane&lt;/strong&gt;: Command-line tool, suitable for CI/CD automated workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small teams tend to use Appuploader for convenient cross-platform uploads.&lt;/li&gt;
&lt;li&gt;Medium to large teams often use Fastlane + Jenkins for automation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Distribution Phase: Internal and External Testing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Internal Testing (TestFlight Internal Testing)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Supports up to 25 accounts, with immediate installation.&lt;/li&gt;
&lt;li&gt;Suitable for internal team validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. External Testing (TestFlight External Testing)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Supports up to 10,000 users.&lt;/li&gt;
&lt;li&gt;Requires Apple review after upload (approximately 24 hours).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Alternative Solutions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;For small-scale testing, Ad Hoc packages can be used for direct distribution.&lt;/li&gt;
&lt;li&gt;Appuploader supports generating QR codes for installation, facilitating temporary experiences.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. App Store Review and Release
&lt;/h2&gt;

&lt;p&gt;Review is the final step in iOS submission and a common challenge for many uni-app developers.&lt;/p&gt;

&lt;p&gt;Preparation required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App name, subtitle, keywords.&lt;/li&gt;
&lt;li&gt;Screenshots and videos (can be batch uploaded via Appuploader).&lt;/li&gt;
&lt;li&gt;Privacy policy and permission descriptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important notes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uni-app projects are easily misjudged as "shell apps"; ensure complete functionality and reasonable interactions.&lt;/li&gt;
&lt;li&gt;Avoid scenarios where only H5 web pages are loaded, as this may lead to rejection.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Team Practical Case: Submission Process for a uni-app E-commerce App
&lt;/h2&gt;

&lt;p&gt;We once assisted a 5-person team in submitting a uni-app-based e-commerce app, with the process as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Operations (Windows)&lt;/strong&gt;: Used Appuploader to apply for certificates and manage them uniformly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development (Windows + Mac)&lt;/strong&gt;: Used HBuilderX cloud packaging to generate the ipa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing (Windows)&lt;/strong&gt;: Used Appuploader to upload the ipa to TestFlight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product Manager (Mac)&lt;/strong&gt;: Configured information and screenshots in App Store Connect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Final Step&lt;/strong&gt;: After collecting feedback via TestFlight external testing, submitted for App Store review.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ultimately, the team completed the entire process relying on only one Mac.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Experience Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Centralized certificate management&lt;/strong&gt;: Avoid packaging failures due to certificate expiration or loss.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible packaging method selection&lt;/strong&gt;: Cloud packaging suits small teams, local packaging suits customization needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tool upload combinations&lt;/strong&gt;: Appuploader, Xcode, Transporter, Fastlane each have their scenarios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliant review&lt;/strong&gt;: uni-app projects must avoid being misjudged as shell apps.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The process of submitting a uni-app app to iOS, though complex, can be significantly simplified by rationally utilizing tools.&lt;br&gt;
Through the combination of &lt;strong&gt;HBuilderX, Appuploader, Xcode, Fastlane, TestFlight&lt;/strong&gt;, both independent developers and cross-platform teams can successfully complete the entire process from development to App Store release.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>software</category>
    </item>
    <item>
      <title>What Are the iOS Packet Capture Tools? Comprehensive Overview and Functional Comparison of Mainstream Tools</title>
      <dc:creator>DataStack</dc:creator>
      <pubDate>Tue, 28 Oct 2025 09:56:44 +0000</pubDate>
      <link>https://dev.to/datastack/what-are-the-ios-packet-capture-tools-comprehensive-overview-and-functional-comparison-of-3lcc</link>
      <guid>https://dev.to/datastack/what-are-the-ios-packet-capture-tools-comprehensive-overview-and-functional-comparison-of-3lcc</guid>
      <description>&lt;p&gt;In mobile app development and testing, packet capture is one of the most commonly used debugging methods. Whether troubleshooting interface issues, monitoring network performance, or conducting security analysis, developers and testers need an efficient packet capture tool. Especially on the &lt;strong&gt;iOS platform&lt;/strong&gt;, due to its relatively closed system, choosing the right tool is particularly important.&lt;/p&gt;

&lt;p&gt;So, what are the common iOS packet capture tools on the market? What are their advantages, disadvantages, and applicable scenarios? This article will provide a systematic overview.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Charles
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User-friendly interface, cross-platform support (Windows / macOS)&lt;/li&gt;
&lt;li&gt;Intuitive operation, simple configuration&lt;/li&gt;
&lt;li&gt;Supports HTTPS decryption and proxy packet capture&lt;/li&gt;
&lt;li&gt;Supports rule filtering and request/response modification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires manual Wi-Fi proxy configuration&lt;/li&gt;
&lt;li&gt;Certificate installation and trust steps are cumbersome&lt;/li&gt;
&lt;li&gt;Cannot bypass SSL pinning or mutual authentication&lt;/li&gt;
&lt;li&gt;Beginners may easily get stuck on certificate trust issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily development debugging&lt;/li&gt;
&lt;li&gt;Quick validation of web interfaces&lt;/li&gt;
&lt;li&gt;Simple network testing and analysis&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Fiddler
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classic packet capture tool for Windows&lt;/li&gt;
&lt;li&gt;Supports HTTP/HTTPS traffic analysis&lt;/li&gt;
&lt;li&gt;Can modify and replay requests&lt;/li&gt;
&lt;li&gt;Rich community documentation, low learning curve&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iOS configuration process is relatively complex&lt;/li&gt;
&lt;li&gt;HTTPS decryption is not enabled by default&lt;/li&gt;
&lt;li&gt;Cannot bypass SSL pinning&lt;/li&gt;
&lt;li&gt;Mac user experience is average&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows users debugging interfaces&lt;/li&gt;
&lt;li&gt;Simple network troubleshooting&lt;/li&gt;
&lt;li&gt;Web service testing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Sniffmaster
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;USB direct connection to iOS devices&lt;/strong&gt;, no Wi-Fi proxy or certificate installation required&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatically decrypts HTTPS&lt;/strong&gt;, can bypass SSL pinning and mutual authentication&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports capturing only specified apps&lt;/strong&gt;, avoiding interference from system requests&lt;/li&gt;
&lt;li&gt;Built-in interceptor, can modify requests/responses using JavaScript&lt;/li&gt;
&lt;li&gt;Can export data streams for deep analysis with Wireshark&lt;/li&gt;
&lt;li&gt;Cross-platform support for Windows / macOS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires additional client installation compared to traditional tools&lt;/li&gt;
&lt;li&gt;Initial use requires familiarity with direct connection mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging high-security apps with SSL pinning&lt;/li&gt;
&lt;li&gt;Mobile network security analysis&lt;/li&gt;
&lt;li&gt;Scenarios requiring precise analysis of single-app traffic&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Proxyman
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modern packet capture tool built specifically for macOS&lt;/li&gt;
&lt;li&gt;Clean and intuitive interface, experience similar to Charles&lt;/li&gt;
&lt;li&gt;Supports HTTPS decryption and rule filtering&lt;/li&gt;
&lt;li&gt;Active updates, fast feature iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only supports macOS&lt;/li&gt;
&lt;li&gt;Cannot resolve SSL pinning&lt;/li&gt;
&lt;li&gt;Overlaps in functionality with Charles, lacks breakthrough advantages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS developers replacing Charles&lt;/li&gt;
&lt;li&gt;Interface debugging and quick troubleshooting&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Wireshark
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network protocol analysis powerhouse&lt;/li&gt;
&lt;li&gt;Can capture underlying data like TCP/UDP/TLS handshakes, DNS, etc.&lt;/li&gt;
&lt;li&gt;Completely free, extremely powerful features&lt;/li&gt;
&lt;li&gt;Suitable for performance analysis and security research&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cannot directly decrypt HTTPS&lt;/li&gt;
&lt;li&gt;Interface is not user-friendly for beginners&lt;/li&gt;
&lt;li&gt;High analysis difficulty, steep learning curve&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network layer troubleshooting&lt;/li&gt;
&lt;li&gt;Performance analysis and packet loss detection&lt;/li&gt;
&lt;li&gt;Security research and protocol learning&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. mitmproxy
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Command-line tool, lightweight and flexible&lt;/li&gt;
&lt;li&gt;Extensible with Python scripts&lt;/li&gt;
&lt;li&gt;Supports custom request/response, suitable for automated testing&lt;/li&gt;
&lt;li&gt;Very convenient for simulating interface anomalies (delays, error codes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No GUI, steep learning curve&lt;/li&gt;
&lt;li&gt;Not suitable for temporary debugging&lt;/li&gt;
&lt;li&gt;Also cannot bypass pinning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Applicable Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automated interface testing&lt;/li&gt;
&lt;li&gt;Constructing anomaly scenarios&lt;/li&gt;
&lt;li&gt;Network debugging in continuous integration environments&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Tool Comparison Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Key Scenarios&lt;/th&gt;
&lt;th&gt;Limitations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Charles&lt;/td&gt;
&lt;td&gt;Cross-platform, user-friendly, quick debugging&lt;/td&gt;
&lt;td&gt;Cannot bypass pinning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fiddler&lt;/td&gt;
&lt;td&gt;Commonly used by Windows users, mature community&lt;/td&gt;
&lt;td&gt;Complex iOS configuration, limited by pinning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sniffmaster&lt;/td&gt;
&lt;td&gt;USB direct connection, bypasses pinning, precise app capture&lt;/td&gt;
&lt;td&gt;Requires additional installation, learning needed initially&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proxyman&lt;/td&gt;
&lt;td&gt;Native macOS experience, modern UI&lt;/td&gt;
&lt;td&gt;Limited to macOS, overlaps with Charles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wireshark&lt;/td&gt;
&lt;td&gt;Network protocol analysis, suitable for performance and security research&lt;/td&gt;
&lt;td&gt;Cannot directly decrypt HTTPS, high learning threshold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mitmproxy&lt;/td&gt;
&lt;td&gt;Scriptable, automated testing, suitable for anomaly simulation&lt;/td&gt;
&lt;td&gt;No GUI, steep learning curve&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily Debugging&lt;/strong&gt;: Charles and Fiddler are sufficient for most development needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Testing&lt;/strong&gt;: mitmproxy is more suitable for constructing anomalies and scripted validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep Analysis&lt;/strong&gt;: Wireshark is a powerful tool for protocol research and performance troubleshooting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Security Scenarios&lt;/strong&gt;: Sniffmaster is a reliable choice for bypassing SSL pinning and mutual authentication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For iOS developers, the optimal solution is typically: &lt;strong&gt;Charles/Fiddler + Sniffmaster + Wireshark&lt;/strong&gt;, which enables quick debugging and addresses packet capture challenges in high-security applications.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>networking</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
