GVKun编程网logo

How to connect iOS simulator to Chrome for debugging

1

在这里,我们将给大家分享关于HowtoconnectiOSsimulatortoChromefordebugging的知识,同时也会涉及到如何更有效地IOS开发—App在IOS8的simulator运

在这里,我们将给大家分享关于How to connect iOS simulator to Chrome for debugging的知识,同时也会涉及到如何更有效地 IOS 开发 —App 在 IOS 8 的 simulator 运行时,定位卡死 bug 解决、Chrome 开发者工具,不能更改窗口大小,怎么破?(Google Chrome、国内 Chrome 包装浏览器都不可以)、Chrome 扩展 - 如何使用 manifest v3 访问本地 file:// 解决方法:文件系统 API,Chrome 88-90解决方案 1. 扩展框架,Chrome 91+解决方案 2. 扩展窗口/选项卡,Chrome 91+注意事项、chrome-devtools remote-debugging的内容。

本文目录一览:

How to connect iOS simulator to Chrome for debugging

How to connect iOS simulator to Chrome for debugging

Step 1. connect the Mac to SAP-internet (for saving the hassle of configuring proxy)
Step 2. install homebrew
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
Step 3. brew install ios-webkit-debug-proxy
$ brew install ios-webkit-debug-proxy
Step 4. switch back to SAP-corporate connection
Step 5. build and launch the cordova app in the iOS simulator
Step 6. start ios_webkit_debug_proxy in the command line
$ ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html
Step 7. launch Chrome and go to http://localhost:9222/

clipboard1

Step 8. copy the url (file:///Users/…CRM_AHN_01.app/www/index.html) then paste it in a new tab and hit enter
Step 9. dang dang dang!

clipboard2

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

本文同步分享在 博客“汪子熙”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  IOS 开发 —App 在 IOS 8 的 simulator 运行时,定位卡死 bug 解决

IOS 开发 —App 在 IOS 8 的 simulator 运行时,定位卡死 bug 解决

在 iOS 8 上编译会出现以下 log : 

Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.

经搜索得到解决方法如下:

1、修改 info.plist:

    新增 key 值为 NSLocationWhenInUseUsageDescription 或 NSLocationAlwaysUsageDescription(这里,我将两个都加了进去),value 可以为空,也可以设置 YES,不过我得问题还是不能解决,最终还是找到得了问题所在,就是 info.plist 中还需要包含 Supported interface orientations 这个 Array 字段。然后运行就解决了。 

2、修改代码: 

    在调用方法 startUpdatingLocation 的前面加上一句 

?

1
2
3
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
     [locationManager requestWhenInUseAuthorization];
}

3、博客原文修改方法: 

?

1
2
3
4
5
6
7
locationManager = [[CLLocationManager alloc] init];
         locationManager.delegate = self;
         locationManager.desiredAccuracy=kCLLocationAccuracyBest;
         if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
             [locationManager requestWhenInUseAuthorization];
         }
         [locationManager startUpdatingLocation];

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- ( void )locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
 
     if (
         ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)] && status != kCLAuthorizationStatusNotDetermined && status != kCLAuthorizationStatusAuthorizedWhenInUse) ||
         (![locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)] && status != kCLAuthorizationStatusNotDetermined && status != kCLAuthorizationStatusAuthorized)
         ) {
 
         NSString *message = @ "您的手機目前並未開啟定位服務,如欲開啟定位服務,請至設定->隱私->定位服務,開啟本程式的定位服務功能" ;
         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@ "無法定位" message:message delegate:nil cancelButtonTitle:@ "確定" otherButtonTitles: nil];
         [alertView show];
 
     } else {
 
         [locationManager startUpdatingLocation];
     }
}

上面那行是 iOS 8 以上,第二行是 iOS 7 以下,因為 kCLAuthorizationStatusAuthorized 在 iOS 8 完全不能使用。 

?

1
2
3
4
5
6
7
8
9
10
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
     
     if (status == kCLAuthorizationStatusAuthorizedWhenInUse || status == kCLAuthorizationStatusAuthorized) {
 
     // 开始定位
 
} else {
 
     // 预示警告
}


Chrome 开发者工具,不能更改窗口大小,怎么破?(Google Chrome、国内 Chrome 包装浏览器都不可以)

Chrome 开发者工具,不能更改窗口大小,怎么破?(Google Chrome、国内 Chrome 包装浏览器都不可以)

平时在开发中,经常将“Chrome 开发者工具”拉高拉低查看信息,突然间“开发者工具”成了固定大小,1/3 窗口高度,不能调整。

Chrome 版本:77.0.3865.90

尝试方法:

1、卸载 Chrome 浏览器重试,仍不能调整大小。
2、安装国内 Chrome 内核浏览器,其开发者工具仍不能调整大小。

问:Chrome 的配置文件究竟在哪,总不至于重装系统吧?

Chrome 扩展 - 如何使用 manifest v3 访问本地 file:// 解决方法:文件系统 API,Chrome 88-90解决方案 1. 扩展框架,Chrome 91+解决方案 2. 扩展窗口/选项卡,Chrome 91+注意事项

Chrome 扩展 - 如何使用 manifest v3 访问本地 file:// 解决方法:文件系统 API,Chrome 88-90解决方案 1. 扩展框架,Chrome 91+解决方案 2. 扩展窗口/选项卡,Chrome 91+注意事项

如何解决Chrome 扩展 - 如何使用 manifest v3 访问本地 file:// 解决方法:文件系统 API,Chrome 88-90解决方案 1. 扩展框架,Chrome 91+解决方案 2. 扩展窗口/选项卡,Chrome 91+注意事项

我有一个 Chrome 扩展程序,它可以(如果您允许访问文件 URL)抓取您在 chrome 中打开的本地 pdf 文件,并将其发送到我们的 API 进行处理。这是通过从后台脚本中获取带有 XMLHttpRequestfile:///Users/user/whatever/testfile.pdf 的 pdf 来完成的。

当为 Chrome 扩展程序迁移到 manifest v3 时,后台脚本将成为服务工作者。在 Service Worker 中,只有 fetch 可用,而不是 XMLHttpRequest。问题是,fetch 只支持 http 和 https,不支持 file:// url。那么,我如何才能实现让 Chrome 扩展程序获取/获取本地文件的相同功能?

编辑:我也尝试过的事情:

  1. 按照回答的建议从注入的 iframe 中创建 XMLHttpRequest。 发出请求时会出现错误 net:ERR_UNKNowN_URL_SCHEME

    net:ERR_UNKNOWN_URL_SCHEME

  2. 从注入的内容脚本生成 XMLHttpRequest。 这给出了错误 Access to XMLHttpRequest at ''file:///.../testfile1.docx.pdf'' from origin ''null'' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http,data,chrome,chrome-extension,chrome-untrusted,https.

    Access to XMLHttpRequest at ''file:///Users/clara.attermo/Downloads/testfile1.docx.pdf'' from origin ''null'' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http,https.

据我从大量研究中了解到,对 file:// 的访问通常被阻止,Chrome 扩展程序后台脚本曾经是一个例外。在我看来,内容脚本或操作弹出窗口从未允许这样做。

我的 manifest.json 供参考:

{
  "manifest_version": 3,"name": "..","version": "0.1","icons": {
    "16": "assets/icon-16x16.png","48": "assets/icon-48x48.png","128": "assets/icon-128x128.png"
  },"action": {
    "default_title": ".."
  },"background": {
    "service_worker": "background.js"
  },"permissions": [
    "webRequest","activeTab","scripting","storage","unlimitedStorage","identity","pageCapture"
  ],"host_permissions": [
    "<all_urls>"
  ],"web_accessible_resources": [{
    "resources": ["iframe.html"],"matches": [],"extension_ids": []
  }]
}

以编程方式注入内容脚本(使用 webextension-polyfill 进行 promise 支持)

browser.action.onClicked.addListener(async (tab: Tab) => {
  await browser.scripting.executeScript({files: [ "inject.js" ],target: {tabId: tab.id}});
});

解决方法

由于您已经提到的原因,您无法在后台 Service Worker 中执行此操作。还有一个 bug 阻止在正常可见的 chrome-extension:// 页面或 iframe 中执行此操作。它已在 Chrome 91 中修复。

解决方法:文件系统 API,Chrome 88-90

ManifestV3 扩展可以使用新的 File System API 来读取文件的内容,例如在通过 web_accessible_resources 公开的 iframe 内。

解决方案 1. 扩展框架,Chrome 91+

使用在带有该 pdf 的选项卡中运行的内容脚本:

    manifest.json 中的
  1. matches 应该包含 <all_urls>file://*/* 并且文件访问应该由用户在 chrome://extensions 扩展程序的 UI。或者你可以使用 activeTab 权限和 programmatic injection 当用户 单击您的扩展程序的图标或通过上下文菜单调用它。
  2. 内容脚本添加了一个不可见的 iframe,指向 web_accessible_resources 中公开的 iframe.html 文件
  3. iframe.html 加载 iframe.js,它照常使用 XMLHttpRequest。由于 iframe 具有 chrome-extension:// URL,因此它的环境 与旧的后台脚本相同,因此您可以执行所有操作 你之前在那里做过。

解决方案 2. 扩展窗口/选项卡,Chrome 91+

另一种解决方案是使用您的任何其他可见页面 扩展程序,如 action 弹出窗口或选项页面或任何其他 chrome-extension:// 属于您的扩展程序的页面,因为它们可以 只需访问 file:// 网址 就像您之前在后台脚本中所做的那样。

注意事项

  • 应该在 chrome://extensions 页面中为此扩展程序启用文件访问。

chrome-devtools remote-debugging

chrome-devtools remote-debugging

Web
  • Web
  • Fundamentals
  • Tools
  • Updates
  • Case Studies
 
 
 
所有产品
登录
  • Tools for Web Developers
  • HOME
  • CHROME DEVTOOLS
  • LIGHTHOUSE
  • WORKBOX
  • CHROME USER EXPERIENCE REPORT
 
  • Overview
  • Debug Progressive Web Apps
  • Understand Security Issues
  • Run Snippets of Code From Any Page
  • Keyboard Shortcuts Reference
  • UI Reference
  • Inspect and Edit Pages
  • View and Change CSS
  • Inspect and Manage Storage,Caches, and Resources
  • Simulate Mobile Devices with Device Mode
  • Remote Debugging Android Devices
    • Get Started
    • Access Local Servers
    • Remote Debugging WebViews
  • Inspect and Debug JavaScript
  • Using the Console
  • Analyze Runtime Performance
  • Measure Network Performance
  • Fix Memory Problems
  • Extend the Chrome DevTools
  • 目录
  • 要求
  • 第 1 步:发现您的 Android 设备
  • 第 2 步:从您的开发计算机调试 Android 设备上的内容。
    • 更多操作:重新加载、聚焦或关闭一个标签
    • 检查元素
    • Android 设备到开发计算机的抓屏
  • 反馈

远程调试 Android 设备使用入门

Kayce Basques
By  Kayce Basques
Technical Writer at Google

从 Windows、Mac 或 Linux 计算机远程调试 Android 设备上的实时内容。 本教程将向您展示如何:

  • 设置您的 Android 设备进行远程调试,并从开发计算机上发现设备。
  • 从您的开发计算机检查和调试 Android 设备上的实时内容。
  • 将 Android 设备上的内容抓屏到您的开发计算机上的 DevTools 实例中。

远程调试图示

要求

  • 开发计算机上已安装 Chrome 32 或更高版本。
  • 开发计算机上已安装 USB 驱动程序(如果您使用 Windows)。 确保设备管理器报告正确的 USB 驱动程序
  • 拥有一根可以将您的 Android 设备连接至开发计算机的 USB 电缆。
  • Android 4.0 或更高版本。
  • 您的 Android 设备上已安装 Chrome(Android 版)。

第 1 步:发现您的 Android 设备

  1. 在您的 Android 设备上,选择 Settings > Developer Options > Enable USB Debugging。 在运行 Android 4.2 及更新版本的设备上,Developer options 默认情况下处于隐藏状态。 请参阅启用设备上的开发者选项以了解如何启用它。

  2. 在您的开发计算机上打开 Chrome。您应使用您的一个 Google 帐户登录到 Chrome。 远程调试在隐身模式或访客模式下无法运行。

  3. 打开 DevTools。

  4. 在 DevTools 中,点击 Main Menu 主菜单,然后选择 More tools > Remote devices

    打开远程设备抽屉式导航栏

  5. 在 DevTools 中,点击 Settings 标签(如果正在显示另一个标签)。

  6. 确保已启用 Discover USB devices

    已启用 Discover USB devices

  7. 使用一根 USB 电缆将 Android 设备直接连接到您的开发计算机。 请勿使用任何中间 USB 集线器。如果这是您首次将您的 Android 设备连接到此开发计算机,您的设备将显示在 Unknown 中,其下面具有文本 Pending Authorization

    未知的设备,待授权

  8. 如果您的设备显示为 Unknown,则在 Android 设备上接受 Allow USB Debugging 权限提示。 Unknown 被替换为您的 Android 设备的型号名称。 绿色圆圈和 Connected 文本表示您已大功告成,可以从开发计算机远程调试您的 Android 设备。

注:如果您在发现流程中遇到任何问题,您可以通过在 Android 设备上选择 Settings > Developer Options > Revoke USB Debugging Authorizations 重启该流程。

第 2 步:从您的开发计算机调试 Android 设备上的内容。

  1. 如果您尚未在 Android 设备上打开 Chrome,则现在打开它。

  2. 返回 DevTools,点击与设备的型号名称匹配的标签。 在此页面的顶部,您会看到 Android 设备的型号名称,后面紧跟着其序列号。 在型号名称下面,您可以看到在设备上运行的 Chrome 的版本,版本号在括号里。每个打开的 Chrome 标签都会有自己的区域。您可以从此区域与该标签交互。 如果有任何使用 WebView 的应用,您也会看到针对每个应用的区域。 下面的屏幕截图没有任何打开的标签或 WebViews。

    连接的远程设备

  3. 在 New tab 旁输入一个网址,然后点击 Open。此页面将在 Android 设备上的新标签中打开。

  4. 点击您刚刚打开的网址旁的 Inspect。这将打开一个新的 DevTools 实例。 您的 Android 设备上运行的 Chrome 的版本决定在开发计算机上打开的 DevTools 的版本。因此,如果您的 Android 设备正在运行一个非常旧的 Chrome 版本,则 DevTools 实例看上去可能与您常用的实例有很大的差别。

更多操作:重新加载、聚焦或关闭一个标签

点击您要重新加载、聚焦或关闭的标签旁的 More Options 更多选项

重新加载、聚焦或关闭一个标签

检查元素

转到您的 DevTools 实例的 Elements 面板,将鼠标悬停在一个元素上以在 Android 设备的视口中突出显示它。

您还可以在 Android 设备屏幕上点按一个元素,以在 Elements 面板中选中它。 点击您的 DevTools 实例上的 Select Element Select
Element,然后在您的 Android 设备屏幕上点按此元素。 请注意,Select Element 将在第一次触摸后停用,因此,每次想要使用此功能时您都需要重新启用它。

Android 设备到开发计算机的抓屏

点按 Toggle Screencast ![Toggle Screencast][screencast]{:.devtools-inline} 以在您的 DevTools 实例中查看 Android 设备的内容。

您可以通过多种方式与抓屏互动:

  • 将点击转变为点按,在设备上触发适当的触摸事件。
  • 将计算机上的按键发送至设备。
  • 要模拟双指张合手势,请按住 Shift 拖动。
  • 要滚动,请使用您的触控板或鼠标滚轮,或者使用您的鼠标指针抛式滚动。

关于抓屏的一些注意事项:

  • 抓屏仅显示页面内容。抓屏的透明部分表示设备界面,如 Chrome 多功能框、Android 状态栏或 Android 键盘。
  • 抓屏会对帧率产生负面影响。在测量滚动或动画时停用抓屏,以更准确地了解页面的性能。
  • 如果您的 Android 设备屏幕锁定,您的抓屏内容将消失。 将您的 Android 设备屏幕解锁可自动恢复抓屏。

反馈

如果您想帮助我们改进此教程,请回答下面的问题!

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. For details, see our Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

上次更新日期:一月 5, 2018

  • Chromium Blog
    The latest news on the Chromium blog.
  • GitHub
    Fork our code samples and other open-source projects.
  • Twitter
    Connect with @ChromiumDev on Twitter.
  • Videos
    Check out our videos.
  • event
    Events
    Attend a developer event and get hacking.
  • Key Topics

    • Building for Billions
    • Chrome Extension Docs
    • Developer Feedback Program
    • Progressive Web Apps
  • More Training

    • Instructor Led Training
    • PWA Training for Agencies
    • Web Courses at Udacity
  • Contribute

    • File an Issue
    • View Page Source
    • Resources
    • Translating
    • Android
    • Chrome
    • Firebase
    • Google Cloud Platform
    • 所有产品
             Bahasa Indonesia                         Deutsch                         English                         español                         français                         Português Brasileiro                         Русский                         日本語                         简体中文                         繁體中文                         한국어           
简体中文
 
条款 隐私权
Sign up for the Google Developers newsletter
订阅

今天关于How to connect iOS simulator to Chrome for debugging的讲解已经结束,谢谢您的阅读,如果想了解更多关于 IOS 开发 —App 在 IOS 8 的 simulator 运行时,定位卡死 bug 解决、Chrome 开发者工具,不能更改窗口大小,怎么破?(Google Chrome、国内 Chrome 包装浏览器都不可以)、Chrome 扩展 - 如何使用 manifest v3 访问本地 file:// 解决方法:文件系统 API,Chrome 88-90解决方案 1. 扩展框架,Chrome 91+解决方案 2. 扩展窗口/选项卡,Chrome 91+注意事项、chrome-devtools remote-debugging的相关知识,请在本站搜索。

本文标签: