How to create a comparison video like this:
comparison-nometrics.mp4
You can create videos using one of the following methods
| {"lastUpload":"2020-07-10T16:01:40.846Z","extensionVersion":"v3.4.3"} |
The current project.pbxproj used by the iOS project is damaged in some way. While XCode can open the file and read its contents correctly, attempting to save it results in a crash. This files that crash, making the file editable again.
Well, pbxproj files are finicky. They are a constant source of pain when fixing merge conflicts, something that happens frequently in our project because of React Native updates.
While I can't say what caused the error with a lot of confidence, here's how it was diagnosed and fixed, for future reference when needed.
Diagnosis
XCode crashes create crash logs that go into ~/Library/Logs/DiagnosticReports/. In there, we could get a crash report that looked like this:
| function getCoordinatesCenter(coordinates) { | |
| let xcos = 0.0; | |
| let ycos = 0.0; | |
| let zsin = 0.0; | |
| coordinates.forEach(coord => { | |
| const lat = (coord.latitude * Math.PI) / 180; | |
| const lng = (coord.longitude * Math.PI) / 180; | |
| const acos = Math.cos(lat) * Math.cos(lng); |
| import * as React from "react"; | |
| import { NativeModules } from "react-native" | |
| export default class App extends React.Component { | |
| componentDidMount() { | |
| if (IS_IOS) { | |
| NativeModules.AccessibilityManager.setAccessibilityContentSizeMultipliers({ | |
| extraSmall: 0.823, | |
| small: 0.882, |
| const globalFetch = global.fetch; | |
| global.fetch = (url: string, params: Object): Promise<*> => { | |
| return new Promise((resolve: any => void, reject: string => void) => { | |
| StatusBar.setNetworkActivityIndicatorVisible(true); | |
| globalFetch(url, params) | |
| .then(resolve) | |
| .then(reject) | |
| .finaly(() => { |
| import { Slider, NativeModules } from 'react-native'; | |
| <Slider | |
| maximumValue={ 2 } | |
| minimumValue={ 1 } | |
| onValueChange={ (value) => { | |
| NativeModules.AccessibilityManager.setAccessibilityContentSizeMultipliers({ | |
| extraSmall: value, | |
| small: value, | |
| medium: value, |
| // @flow | |
| import React from 'react'; | |
| import { Linking, Text } from 'react-native'; | |
| import { parsePhoneNumber, type TextChild } from 'utils/strings'; | |
| type Props = { | |
| linkStyle: PassedStyle, | |
| text: string, |
| // @flow | |
| import React from 'react'; | |
| import { TouchableOpacity } from 'react-native'; | |
| import debounce from 'lodash.debounce'; | |
| const TouchableDebounce = ({ | |
| children, | |
| onPress, | |
| ...props |