Skip to content

Commit ec73e52

Browse files
authored
AndroidX migration (#1112)
1 parent a539743 commit ec73e52

File tree

59 files changed

+1678
-846
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1678
-846
lines changed

Gutenberg.podspec

+5-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
22
# Use the same RN version that the JS tools use
33
react_native_version = package['dependencies']['react-native']
4+
# Extract the tagged version if package.json points to a tag
5+
react_native_version = react_native_version.split("#v").last if react_native_version.include? "#v"
46

57
Pod::Spec.new do |s|
68
s.name = 'Gutenberg'
@@ -14,19 +16,11 @@ Pod::Spec.new do |s|
1416
s.source_files = 'react-native-gutenberg-bridge/ios/*.{h,m,swift}'
1517
s.requires_arc = true
1618
s.preserve_paths = 'bundle/ios/*'
19+
s.swift_version = '4.2'
1720

18-
s.dependency 'React/Core', react_native_version
19-
s.dependency 'React/CxxBridge', react_native_version
20-
s.dependency 'React/RCTAnimation', react_native_version
21-
s.dependency 'React/RCTImage', react_native_version
22-
s.dependency 'React/RCTLinkingIOS', react_native_version
23-
s.dependency 'React/RCTNetwork', react_native_version
24-
s.dependency 'React/RCTText', react_native_version
25-
s.dependency 'React/RCTActionSheet', react_native_version
26-
s.dependency 'React/DevSupport', react_native_version
21+
s.dependency 'React', react_native_version
22+
s.dependency 'React-RCTImage', react_native_version
2723

2824
s.dependency 'WordPress-Aztec-iOS'
2925
s.dependency 'RNTAztecView'
30-
31-
s.dependency 'yoga', "#{react_native_version}.React"
3226
end

RNTAztecView.podspec

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ Pod::Spec.new do |s|
1414
s.public_header_files = 'react-native-aztec/ios/RNTAztecView/*.h'
1515
s.requires_arc = true
1616
s.platforms = { :ios => "10.0" }
17+
s.swift_version = '4.2'
1718
s.xcconfig = {'OTHER_LDFLAGS' => '-lxml2',
1819
'HEADER_SEARCH_PATHS' => '/usr/include/libxml2'}
19-
s.dependency 'React'
20+
s.dependency 'React-Core'
2021
s.dependency 'WordPress-Aztec-iOS'
2122

2223
end

__device-tests__/helpers/utils.js

+21-2
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,28 @@ const setupDriver = async () => {
114114

115115
await driver.setImplicitWaitTimeout( 2000 );
116116
await timer( 3000 );
117-
118117
await driver.setOrientation( 'PORTRAIT' );
119-
return driver;
118+
119+
// Proxy driver to patch functions on Android
120+
// This is needed to adapt to changes in the way accessibility ids are being
121+
// assigned after migrating to AndroidX and React Native 0.60. See:
122+
// https://github.com/wordpress-mobile/gutenberg-mobile/pull/1112#issuecomment-501165250
123+
// for more details.
124+
return new Proxy( driver, {
125+
get: ( original, property ) => {
126+
const propertiesToPatch = [
127+
'elementByAccessibilityId',
128+
'hasElementByAccessibilityId',
129+
];
130+
if ( isAndroid() && ( propertiesToPatch.includes( property ) ) ) {
131+
return async function( value, cb ) {
132+
// Add a comma and a space to all ids
133+
return await original[ property ]( `${ value }, `, cb );
134+
};
135+
}
136+
return original[ property ];
137+
},
138+
} );
120139
};
121140

122141
const stopDriver = async ( driver: wd.PromiseChainWebdriver ) => {

__device-tests__/pages/editor-page.js

+20-7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ export default class EditorPage {
2121
headingBlockName = 'Heading';
2222
imageBlockName = 'Image';
2323

24+
// This is needed to adapt to changes in the way accessibility ids are being
25+
// assigned after migrating to AndroidX and React Native 0.60. See:
26+
// https://github.com/wordpress-mobile/gutenberg-mobile/pull/1112#issuecomment-501165250
27+
// for more details.
28+
accessibilityIdSuffix = '';
29+
2430
constructor( driver: wd.PromiseChainWebdriver ) {
2531
this.driver = driver;
2632
this.accessibilityIdKey = 'name';
@@ -29,6 +35,7 @@ export default class EditorPage {
2935
if ( isAndroid() ) {
3036
this.accessibilityIdXPathAttrib = 'content-desc';
3137
this.accessibilityIdKey = 'contentDescription';
38+
this.accessibilityIdSuffix = ', ';
3239
}
3340
}
3441

@@ -50,7 +57,7 @@ export default class EditorPage {
5057
}
5158

5259
async getTextViewForHtmlViewContent() {
53-
const accessibilityId = 'html-view-content';
60+
const accessibilityId = `html-view-content${ this.accessibilityIdSuffix }`;
5461
let blockLocator = `//*[@${ this.accessibilityIdXPathAttrib }="${ accessibilityId }"]`;
5562

5663
if ( ! isAndroid() ) {
@@ -123,11 +130,13 @@ export default class EditorPage {
123130
if ( ! await this.hasBlockAtPosition( position, blockName ) ) {
124131
throw Error( `No Block at position ${ position }` );
125132
}
133+
const parentId = `${ blockName } Block. Row ${ position }.${ this.accessibilityIdSuffix }`;
134+
const parentLocator = `//*[@${ this.accessibilityIdXPathAttrib }="${ parentId }"]`;
126135

127-
const parentLocator = `//*[@${ this.accessibilityIdXPathAttrib }="${ blockName } Block. Row ${ position }."]`;
136+
const blockId = `Move block up from row ${ position } to row ${ position - 1 }${ this.accessibilityIdSuffix }`;
128137
let blockLocator = `${ parentLocator }/following-sibling::*`;
129138
blockLocator += isAndroid() ? '' : '//*';
130-
blockLocator += `[@${ this.accessibilityIdXPathAttrib }="Move block up from row ${ position } to row ${ position - 1 }"]`;
139+
blockLocator += `[@${ this.accessibilityIdXPathAttrib }="${ blockId }"]`;
131140
const moveUpButton = await this.driver.elementByXPath( blockLocator );
132141
await moveUpButton.click();
133142
}
@@ -138,10 +147,13 @@ export default class EditorPage {
138147
throw Error( `No Block at position ${ position }` );
139148
}
140149

141-
const parentLocator = `//*[contains(@${ this.accessibilityIdXPathAttrib }, "${ blockName } Block. Row ${ position }.")]`;
150+
const parentId = `${ blockName } Block. Row ${ position }.`;
151+
const parentLocator = `//*[contains(@${ this.accessibilityIdXPathAttrib }, "${ parentId }")]`;
152+
153+
const blockId = `Move block down from row ${ position } to row ${ position + 1 }${ this.accessibilityIdSuffix }`;
142154
let blockLocator = `${ parentLocator }/following-sibling::*`;
143155
blockLocator += isAndroid() ? '' : '//*';
144-
blockLocator += `[@${ this.accessibilityIdXPathAttrib }="Move block down from row ${ position } to row ${ position + 1 }"]`;
156+
blockLocator += `[@${ this.accessibilityIdXPathAttrib }="${ blockId }"]`;
145157
const moveDownButton = await this.driver.elementByXPath( blockLocator );
146158
await moveDownButton.click();
147159
}
@@ -153,13 +165,14 @@ export default class EditorPage {
153165
throw Error( `No Block at position ${ position }` );
154166
}
155167

156-
const parentLocator = `//*[contains(@${ this.accessibilityIdXPathAttrib }, "${ blockName } Block. Row ${ position }.")]`;
168+
const parentId = `${ blockName } Block. Row ${ position }.`;
169+
const parentLocator = `//*[contains(@${ this.accessibilityIdXPathAttrib }, "${ parentId }")]`;
157170
let removeBlockLocator = `${ parentLocator }/following-sibling::*`;
158171
removeBlockLocator += isAndroid() ? '' : '//*';
159172
let removeButtonIdentifier = `Remove block at row ${ position }`;
160173

161174
if ( isAndroid() ) {
162-
removeButtonIdentifier += ', Double tap to remove the block';
175+
removeButtonIdentifier += `, Double tap to remove the block${ this.accessibilityIdSuffix }`;
163176
const block = await this.getBlockAtPosition( position, blockName );
164177
let checkList = await this.driver.elementsByXPath( removeBlockLocator );
165178
while ( checkList.length === 0 ) {

android/app/build.gradle

+1-6
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,6 @@ repositories {
143143
maven { url "https://jitpack.io" }
144144
}
145145

146-
configurations.all {
147-
resolutionStrategy {
148-
force 'org.webkit:android-jsc:r236355'
149-
}
150-
}
151146

152147
dependencies {
153148
implementation project(':react-native-video')
@@ -156,7 +151,7 @@ dependencies {
156151
implementation project(':react-native-recyclerview-list')
157152
implementation project(':react-native-gutenberg-bridge')
158153
implementation "org.wordpress:utils:$wordpressUtilsVersion"
159-
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
154+
implementation 'androidx.appcompat:appcompat:1.0.0'
160155
implementation "com.facebook.react:react-native:+" // From node_modules
161156
}
162157

android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
buildscript {
22
ext {
33
gradlePluginVersion = '3.3.1'
4-
kotlinVersion = '1.3.0'
4+
kotlinVersion = '1.3.11'
55
buildToolsVersion = "28.0.3"
66
minSdkVersion = 21
77
compileSdkVersion = 28

android/gradle.properties

+2
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@
1616
# This option should only be used with decoupled projects. More details, visit
1717
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
1818
# org.gradle.parallel=true
19+
android.enableJetifier=true
20+
android.useAndroidX=true
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
#Mon Jun 10 13:39:31 EDT 2019
12
distributionBase=GRADLE_USER_HOME
23
distributionPath=wrapper/dists
34
zipStoreBase=GRADLE_USER_HOME
45
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip

bin/generate-podspecs.sh

+39-14
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,48 @@ set -e
77
cd "$( dirname $0 )"
88
cd ..
99

10-
# Check for cocoapods
10+
# Check for cocoapods & jq
1111
command -v pod > /dev/null || ( echo Cocoapods is required to generate podspecs; exit 1 )
12+
command -v jq > /dev/null || ( echo jq is required to generate podspecs; exit 1 )
1213

13-
PODSPECS=$(cat <<EOP
14-
node_modules/react-native/React.podspec
15-
node_modules/react-native/ReactCommon/yoga/yoga.podspec
16-
node_modules/react-native/third-party-podspecs/Folly.podspec
17-
node_modules/react-native/third-party-podspecs/DoubleConversion.podspec
18-
node_modules/react-native/third-party-podspecs/glog.podspec
19-
EOP
20-
)
14+
WD=$(pwd)
15+
DEST="${WD}/react-native-gutenberg-bridge/third-party-podspecs"
2116

22-
DEST="react-native-gutenberg-bridge/third-party-podspecs"
17+
# Generate the external (non-RN podspecs)
18+
EXTERNAL_PODSPECS=$(find "node_modules/react-native/third-party-podspecs" \
19+
"node_modules/react-native-svg" \
20+
"node_modules/react-native-keyboard-aware-scroll-view" \
21+
"node_modules/react-native-recyclerview-list" \
22+
"node_modules/react-native-safe-area" -type f -name "*.podspec" -print)
2323

24-
for podspec in $PODSPECS
24+
for podspec in $EXTERNAL_PODSPECS
2525
do
26-
pod=`basename $podspec .podspec`
26+
pod=$(basename "$podspec" .podspec)
27+
2728
echo "Generating podspec for $pod"
28-
INSTALL_YOGA_WITHOUT_PATH_OPTION=1 pod ipc spec $podspec > "$DEST/$pod.podspec.json"
29-
done
29+
pod ipc spec $podspec > "$DEST/$pod.podspec.json"
30+
done
31+
32+
# Generate the React Native podspecs
33+
# Change to the React Native directory to get relative paths for the RN podspecs
34+
cd "node_modules/react-native"
35+
36+
RN_PODSPECS=$(find * -type f -name "*.podspec" -not -path "third-party-podspecs/*" -print)
37+
TMP_DEST=$(mktemp -d)
38+
39+
for podspec in $RN_PODSPECS
40+
do
41+
pod=$(basename "$podspec" .podspec)
42+
path=$(dirname "$podspec")
43+
44+
echo "Generating podspec for $pod with path $path"
45+
pod ipc spec $podspec > "$TMP_DEST/$pod.podspec.json"
46+
cat "$TMP_DEST/$pod.podspec.json" | jq > "$DEST/$pod.podspec.json"
47+
48+
# Add a "prepare_command" entry to each podspec so that 'pod install' will fetch sources from the correct directory
49+
# and retains the existing prepare_command if it exists
50+
prepare_command="TMP_DIR=\$(mktemp -d); mv * \$TMP_DIR; cp -R \"\$TMP_DIR/${path}\"/* ."
51+
cat "$TMP_DEST/$pod.podspec.json" | jq --arg CMD "$prepare_command" '.prepare_command = "\($CMD) && \(.prepare_command // true)"
52+
# Point to React Native fork. To be removed once https://github.com/facebook/react-native/issues/25349 is closed
53+
| .source.git = "https://github.com/jtreanor/react-native.git"' > "$DEST/$pod.podspec.json"
54+
done

ios/gutenberg.xcodeproj/project.pbxproj

+1-30
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
/* Begin PBXBuildFile section */
1010
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
11-
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
1211
00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; };
1312
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; };
1413
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; };
@@ -64,13 +63,6 @@
6463
remoteGlobalIDString = 134814201AA4EA6300B7C361;
6564
remoteInfo = RCTActionSheet;
6665
};
67-
00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = {
68-
isa = PBXContainerItemProxy;
69-
containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
70-
proxyType = 2;
71-
remoteGlobalIDString = 134814201AA4EA6300B7C361;
72-
remoteInfo = RCTGeolocation;
73-
};
7466
00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = {
7567
isa = PBXContainerItemProxy;
7668
containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
@@ -411,7 +403,6 @@
411403
/* Begin PBXFileReference section */
412404
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
413405
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = "<group>"; };
414-
00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = "<group>"; };
415406
00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = "<group>"; };
416407
00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = "<group>"; };
417408
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = "<group>"; };
@@ -481,7 +472,6 @@
481472
146834051AC3E58100842450 /* libReact.a in Frameworks */,
482473
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
483474
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
484-
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
485475
00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
486476
133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */,
487477
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
@@ -533,14 +523,6 @@
533523
name = Products;
534524
sourceTree = "<group>";
535525
};
536-
00C302B61ABCB90400DB3ED1 /* Products */ = {
537-
isa = PBXGroup;
538-
children = (
539-
00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */,
540-
);
541-
name = Products;
542-
sourceTree = "<group>";
543-
};
544526
00C302BC1ABCB91800DB3ED1 /* Products */ = {
545527
isa = PBXGroup;
546528
children = (
@@ -693,7 +675,6 @@
693675
146833FF1AC3E56700842450 /* React.xcodeproj */,
694676
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
695677
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,
696-
00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
697678
00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
698679
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
699680
00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */,
@@ -938,6 +919,7 @@
938919
developmentRegion = English;
939920
hasScannedForEncodings = 0;
940921
knownRegions = (
922+
English,
941923
en,
942924
Base,
943925
);
@@ -957,10 +939,6 @@
957939
ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;
958940
ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
959941
},
960-
{
961-
ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
962-
ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
963-
},
964942
{
965943
ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */;
966944
ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
@@ -1036,13 +1014,6 @@
10361014
remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */;
10371015
sourceTree = BUILT_PRODUCTS_DIR;
10381016
};
1039-
00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = {
1040-
isa = PBXReferenceProxy;
1041-
fileType = archive.ar;
1042-
path = libRCTGeolocation.a;
1043-
remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */;
1044-
sourceTree = BUILT_PRODUCTS_DIR;
1045-
};
10461017
00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = {
10471018
isa = PBXReferenceProxy;
10481019
fileType = archive.ar;

package.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
"jed": "^1.1.1",
131131
"jest-serializer-enzyme": "^1.0.0",
132132
"js-beautify": "^1.7.5",
133-
"jsc-android": "236355.x.x",
133+
"jsc-android": "^241213.1.0",
134134
"jsdom-jscore-rn": "git+https://github.com/iamcco/jsdom-jscore-rn.git#a562f3d57c27c13e5bfc8cf82d496e69a3ba2800",
135135
"jsx-to-string": "^1.3.1",
136136
"memize": "^1.0.5",
@@ -139,15 +139,15 @@
139139
"moment-timezone": "^0.5.16",
140140
"node-libs-react-native": "^1.0.2",
141141
"node-sass": "^4.12.0",
142-
"react": "16.8.3",
143-
"react-native": "0.59.3",
142+
"react": "16.8.6",
143+
"react-native": "jtreanor/react-native#v0.60.0-patched",
144144
"react-native-hr": "git+https://github.com/Riglerr/react-native-hr.git#2d01a5cf77212d100e8b99e0310cce5234f977b3",
145145
"react-native-keyboard-aware-scroll-view": "git+https://github.com/wordpress-mobile/react-native-keyboard-aware-scroll-view.git#gb-v0.8.7",
146146
"react-native-modal": "^6.5.0",
147-
"react-native-recyclerview-list": "git+https://github.com/wordpress-mobile/react-native-recyclerview-list.git#v1.0.1",
147+
"react-native-recyclerview-list": "git+https://github.com/wordpress-mobile/react-native-recyclerview-list.git#eadaa2f62d2f488d4dc80f9148e52b62047297ab",
148148
"react-native-safe-area": "^0.5.0",
149-
"react-native-svg": "git+https://github.com/wordpress-mobile/react-native-svg.git#55244dc79ab876550599c82dca763c3eba0153c5",
150-
"react-native-video": "git+https://github.com/wordpress-mobile/react-native-video.git#4dc15d1efcfafc4c55c1f073366235d506481a26",
149+
"react-native-svg": "git+https://github.com/wordpress-mobile/react-native-svg.git#f16e9adae71c6cf3158f2356cf95fff5c2075e0f",
150+
"react-native-video": "git+https://github.com/wordpress-mobile/react-native-video.git#3a0e2fa6fc6bf1fe1a54adb2dbf94545b28c2bc4",
151151
"react-redux": "^5.0.7",
152152
"redux": "^3.7.2",
153153
"redux-multi": "^0.1.12",

react-native-aztec/.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ local.properties
3232

3333
# Gradle
3434
.gradle/
35-
gradle.properties
3635

3736
# Generated by gradle
3837
crashlytics.properties

0 commit comments

Comments
 (0)