├── index.js
├── android
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── reactnativerecordersound
│ │ ├── ReactNativeRecordSoundPackager.java
│ │ └── ReactNativeRecordSound.java
└── build.gradle
├── ios
├── RCTRecordSound
│ ├── RCTRecordSound.h
│ └── RCTRecordSound.m
└── RCTRecordSound.xcodeproj
│ └── project.pbxproj
├── .gitignore
├── .npmignore
├── package.json
└── README.md
/index.js:
--------------------------------------------------------------------------------
1 | import { NativeModules } from 'react-native';
2 | module.exports = NativeModules.ReactNativeRecordSound;
3 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ios/RCTRecordSound/RCTRecordSound.h:
--------------------------------------------------------------------------------
1 | //
2 | // RCTRecordSound.h
3 | // RCTRecordSound
4 | //
5 | // Created by Alex Dana on 08/06/16.
6 | // Copyright © 2016 Alex Dana. All rights reserved.
7 | //
8 |
9 | // RecordSound.h
10 | // add AVFoundation Framework in Xcode
11 |
12 | #import
13 | #import
14 |
15 | @interface ReactNativeRecordSound : NSObject
16 | @end
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | project.xcworkspace
24 |
25 | # Android/IJ
26 | #
27 | .idea
28 | .gradle
29 | local.properties
30 |
31 | # node.js
32 | #
33 | node_modules/
34 | npm-debug.log
35 |
36 | # BUCK
37 | buck-out/
38 | \.buckd/
39 | android/app/libs
40 | android/keystores/debug.keystore
41 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | project.xcworkspace
24 |
25 | # Android/IJ
26 | #
27 | .idea
28 | .gradle
29 | local.properties
30 |
31 | # node.js
32 | #
33 | node_modules/
34 | npm-debug.log
35 |
36 | # BUCK
37 | buck-out/
38 | \.buckd/
39 | android/app/libs
40 | android/keystores/debug.keystore
41 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | jcenter()
4 | }
5 |
6 | dependencies {
7 | classpath 'com.android.tools.build:gradle:1.1.3'
8 | }
9 | }
10 |
11 | apply plugin: 'com.android.library'
12 |
13 | android {
14 | compileSdkVersion 23
15 | buildToolsVersion "23.0.1"
16 |
17 | defaultConfig {
18 | minSdkVersion 16
19 | targetSdkVersion 22
20 | versionCode 1
21 | versionName "1.0"
22 | }
23 | lintOptions {
24 | abortOnError false
25 | }
26 | }
27 |
28 | repositories {
29 | mavenCentral()
30 | }
31 |
32 | dependencies {
33 | compile 'com.facebook.react:react-native:0.12.+'
34 | }
35 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-record-sound",
3 | "version": "1.2.6",
4 | "description": "record sound in mp4 from react native for IOS and Android",
5 | "keywords": [
6 | "react-component",
7 | "react-native",
8 | "ios",
9 | "android",
10 | "record"
11 | ],
12 | "main": "index.js",
13 | "scripts": {
14 | "test": "echo \"Error: no test specified\" && exit 1"
15 | },
16 | "repository": {
17 | "type": "git",
18 | "url": "git+https://github.com/MisterAlex95/react-native-record-sound.git"
19 | },
20 | "author": "MisterAlex95 ",
21 | "license": "ISC",
22 | "bugs": {
23 | "url": "https://github.com/MisterAlex95/react-native-record-sound/issues"
24 | },
25 | "homepage": "https://github.com/MisterAlex95/react-native-record-sound#readme"
26 | }
27 |
--------------------------------------------------------------------------------
/android/src/main/java/com/reactnativerecordersound/ReactNativeRecordSoundPackager.java:
--------------------------------------------------------------------------------
1 | package com.reactnativerecordsound;
2 |
3 | import com.facebook.react.bridge.NativeModule;
4 | import com.facebook.react.bridge.ReactApplicationContext;
5 | import com.facebook.react.bridge.ReactContext;
6 | import com.facebook.react.bridge.ReactContextBaseJavaModule;
7 | import com.facebook.react.bridge.ReactMethod;
8 | import com.facebook.react.bridge.JavaScriptModule;
9 | import com.facebook.react.ReactPackage;
10 | import com.facebook.react.uimanager.ViewManager;
11 |
12 | import com.reactnativerecordsound.ReactNativeRecordSound;
13 |
14 | import java.util.Arrays;
15 | import java.util.List;
16 | import java.util.ArrayList;
17 | import java.util.Collections;
18 |
19 | import android.os.Environment;
20 |
21 | public class ReactNativeRecordSoundPackager implements ReactPackage {
22 | @Override
23 | public List createNativeModules(ReactApplicationContext reactContext) {
24 | List modules = new ArrayList<>();
25 | modules.add(new ReactNativeRecordSound(reactContext));
26 | return modules;
27 | }
28 |
29 | @Override
30 | public List> createJSModules() {
31 | return Collections.emptyList();
32 | }
33 |
34 | @Override
35 | public List createViewManagers(ReactApplicationContext reactContext) {
36 | return Arrays.asList();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-native-record-sound
2 |
3 | [DEPRECATED]: I have to update the ObjC and Java code. And update RN version.
4 |
5 | ## Installation
6 |
7 | * Install the module
8 |
9 | ```bash
10 | npm i --save react-native-record-sound
11 | ```
12 |
13 | * In `android/settings.gradle`
14 |
15 | ```gradle
16 | ...
17 | include ':react-native-record-sound', ':app'
18 | project(':react-native-record-sound').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-record-sound/android')
19 | ```
20 |
21 | * In `android/app/build.gradle`
22 |
23 | ```gradle
24 | ...
25 | dependencies {
26 | ...
27 | compile project(':react-native-record-sound')
28 | }
29 | ```
30 |
31 | * Register module (in MainActivity.java)
32 |
33 | ```java
34 | import com.reactnativerecordsound.ReactNativeRecordSoundPackager; // <--- import
35 |
36 | public class MainActivity extends ReactActivity {
37 | ......
38 | @Override
39 | protected List getPackages() {
40 | return Arrays.asList(
41 | new MainReactPackage(),
42 | new ReactNativeRecordSoundPackager() // <------ add here
43 | );
44 | }
45 | ......
46 |
47 | }
48 | ```
49 |
50 | ## How to use
51 |
52 | ```javascript
53 | import Record from 'react-native-record-sound';
54 | let isRecording = false;
55 | ...
56 | recordSound() {
57 | if (isRecording === false)
58 | Record.startRecord(path + 'sound.mp4', (err) => {console.log(err)});
59 | else
60 | Record.stopRecord();
61 | isRecording = !isRecording;
62 | }
63 | ```
64 |
--------------------------------------------------------------------------------
/android/src/main/java/com/reactnativerecordersound/ReactNativeRecordSound.java:
--------------------------------------------------------------------------------
1 | package com.reactnativerecordsound;
2 |
3 | import android.media.MediaRecorder;
4 | import java.io.IOException;
5 |
6 | import com.facebook.react.bridge.NativeModule;
7 | import com.facebook.react.bridge.ReactApplicationContext;
8 | import com.facebook.react.bridge.ReactContext;
9 | import com.facebook.react.bridge.ReactContextBaseJavaModule;
10 | import com.facebook.react.bridge.ReactMethod;
11 | import com.facebook.react.bridge.Callback;
12 |
13 | import java.util.Map;
14 |
15 | public class ReactNativeRecordSound extends ReactContextBaseJavaModule {
16 |
17 | private static final String LOG_TAG = "RecordModule";
18 | private MediaRecorder mRecorder = null;
19 |
20 | public ReactNativeRecordSound(ReactApplicationContext reactContext) {
21 | super(reactContext);
22 | }
23 |
24 | @Override
25 | public String getName() {
26 | return "ReactNativeRecordSound";
27 | }
28 |
29 | @ReactMethod
30 | public void startRecord(String filename, Callback res) {
31 | if (mRecorder == null) {
32 | mRecorder = new MediaRecorder();
33 | mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
34 | mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
35 | mRecorder.setAudioChannels(1); // Mono 1 Stereo 2
36 | mRecorder.setOutputFile(filename);
37 | mRecorder.setAudioEncodingBitRate(8000);
38 | mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
39 |
40 | try {
41 | mRecorder.prepare();
42 | } catch (IOException e) {
43 | res.invoke(LOG_TAG + e.toString());
44 | }
45 | mRecorder.start();
46 | }
47 | }
48 |
49 | @ReactMethod
50 | public void stopRecord() {
51 | if (mRecorder != null) {
52 | mRecorder.stop();
53 | mRecorder.release();
54 | mRecorder = null;
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/ios/RCTRecordSound/RCTRecordSound.m:
--------------------------------------------------------------------------------
1 | //
2 | // RCTRecordSound.m
3 | // RCTRecordSound
4 | //
5 | // Created by Alex Dana on 08/06/16.
6 | // Copyright © 2016 Alex Dana. All rights reserved.
7 | //
8 |
9 | #import "RCTRecordSound.h"
10 | #import
11 | #import
12 | #import
13 | #import
14 |
15 | @implementation ReactNativeRecordSound {
16 | NSDictionary* recordSettings;
17 | AVAudioSession* audioSession;
18 | AVAudioRecorder* _audioRecord;
19 | }
20 |
21 | RCT_EXPORT_MODULE();
22 |
23 |
24 | RCT_EXPORT_METHOD(startRecord:(NSString *)filename : (RCTResponseSenderBlock)callback) {
25 |
26 | AVAudioSessionRecordPermission permissionStatus = [[AVAudioSession sharedInstance] recordPermission];
27 | switch (permissionStatus) {
28 | case AVAudioSessionRecordPermissionUndetermined:
29 | NSLog(@("undetermined"));
30 | break;
31 | case AVAudioSessionRecordPermissionDenied:
32 | NSLog(@("denied"));
33 | break;
34 | case AVAudioSessionRecordPermissionGranted:
35 | NSLog(@("granted"));
36 | break;
37 | default:
38 | NSLog(@("Error checking device authorization status."));
39 | break;
40 | }
41 |
42 | NSNumber *_audioQuality = [NSNumber numberWithInt:AVAudioQualityHigh];
43 | NSNumber *_audioEncoding = [NSNumber numberWithInt:kAudioFormatMPEG4AAC];
44 | NSNumber *_audioChannels = [NSNumber numberWithInt:1];
45 | NSNumber *_audioSampleRate = [NSNumber numberWithFloat:16000.0];
46 |
47 | recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
48 | _audioQuality, AVEncoderAudioQualityKey,
49 | _audioEncoding, AVFormatIDKey,
50 | _audioChannels, AVNumberOfChannelsKey,
51 | _audioSampleRate, AVSampleRateKey,
52 | nil];
53 |
54 | NSError* err = nil;
55 |
56 | AVAudioSession* audioSession = [AVAudioSession sharedInstance];
57 | [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord
58 | error:nil];
59 |
60 | NSURL *soundFileURL = [NSURL fileURLWithPath:filename];
61 |
62 | _audioRecord = [[AVAudioRecorder alloc]
63 | initWithURL: soundFileURL
64 | settings:recordSettings
65 | error: &err];
66 | _audioRecord.delegate = self;
67 |
68 | if (err) {
69 | NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
70 | return;
71 | } else {
72 | [_audioRecord prepareToRecord];
73 | NSLog(@"audioSession: launch record");
74 | }
75 |
76 | if (!_audioRecord.recording) {
77 | [_audioRecord record];
78 | [audioSession setActive:YES error:nil];
79 | }
80 | }
81 |
82 | RCT_EXPORT_METHOD(stopRecord) {
83 | if (_audioRecord.recording) {
84 | NSLog(@"audioSession: stop record");
85 | [_audioRecord stop];
86 | [audioSession setActive:NO error:nil];
87 | }
88 | }
89 |
90 | @end
--------------------------------------------------------------------------------
/ios/RCTRecordSound.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 47;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | FA40C5061D085B5900EF80D7 /* RCTRecordSound.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = FA40C5051D085B5900EF80D7 /* RCTRecordSound.h */; };
11 | FA40C5081D085B5900EF80D7 /* RCTRecordSound.m in Sources */ = {isa = PBXBuildFile; fileRef = FA40C5071D085B5900EF80D7 /* RCTRecordSound.m */; };
12 | /* End PBXBuildFile section */
13 |
14 | /* Begin PBXCopyFilesBuildPhase section */
15 | FA40C5001D085B5900EF80D7 /* CopyFiles */ = {
16 | isa = PBXCopyFilesBuildPhase;
17 | buildActionMask = 2147483647;
18 | dstPath = "include/$(PRODUCT_NAME)";
19 | dstSubfolderSpec = 16;
20 | files = (
21 | FA40C5061D085B5900EF80D7 /* RCTRecordSound.h in CopyFiles */,
22 | );
23 | runOnlyForDeploymentPostprocessing = 0;
24 | };
25 | /* End PBXCopyFilesBuildPhase section */
26 |
27 | /* Begin PBXFileReference section */
28 | FA40C5021D085B5900EF80D7 /* libRCTRecordSound.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTRecordSound.a; sourceTree = BUILT_PRODUCTS_DIR; };
29 | FA40C5051D085B5900EF80D7 /* RCTRecordSound.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRecordSound.h; sourceTree = ""; };
30 | FA40C5071D085B5900EF80D7 /* RCTRecordSound.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRecordSound.m; sourceTree = ""; };
31 | /* End PBXFileReference section */
32 |
33 | /* Begin PBXFrameworksBuildPhase section */
34 | FA40C4FF1D085B5900EF80D7 /* Frameworks */ = {
35 | isa = PBXFrameworksBuildPhase;
36 | buildActionMask = 2147483647;
37 | files = (
38 | );
39 | runOnlyForDeploymentPostprocessing = 0;
40 | };
41 | /* End PBXFrameworksBuildPhase section */
42 |
43 | /* Begin PBXGroup section */
44 | FA40C4F91D085B5900EF80D7 = {
45 | isa = PBXGroup;
46 | children = (
47 | FA40C5041D085B5900EF80D7 /* RCTRecordSound */,
48 | FA40C5031D085B5900EF80D7 /* Products */,
49 | );
50 | sourceTree = "";
51 | };
52 | FA40C5031D085B5900EF80D7 /* Products */ = {
53 | isa = PBXGroup;
54 | children = (
55 | FA40C5021D085B5900EF80D7 /* libRCTRecordSound.a */,
56 | );
57 | name = Products;
58 | sourceTree = "";
59 | };
60 | FA40C5041D085B5900EF80D7 /* RCTRecordSound */ = {
61 | isa = PBXGroup;
62 | children = (
63 | FA40C5051D085B5900EF80D7 /* RCTRecordSound.h */,
64 | FA40C5071D085B5900EF80D7 /* RCTRecordSound.m */,
65 | );
66 | path = RCTRecordSound;
67 | sourceTree = "";
68 | };
69 | /* End PBXGroup section */
70 |
71 | /* Begin PBXHeadersBuildPhase section */
72 | FA4E3A121D08683D00B5A3F9 /* Headers */ = {
73 | isa = PBXHeadersBuildPhase;
74 | buildActionMask = 2147483647;
75 | files = (
76 | );
77 | runOnlyForDeploymentPostprocessing = 0;
78 | };
79 | /* End PBXHeadersBuildPhase section */
80 |
81 | /* Begin PBXNativeTarget section */
82 | FA40C5011D085B5900EF80D7 /* RCTRecordSound */ = {
83 | isa = PBXNativeTarget;
84 | buildConfigurationList = FA40C50B1D085B5900EF80D7 /* Build configuration list for PBXNativeTarget "RCTRecordSound" */;
85 | buildPhases = (
86 | FA40C4FE1D085B5900EF80D7 /* Sources */,
87 | FA40C5001D085B5900EF80D7 /* CopyFiles */,
88 | FA40C4FF1D085B5900EF80D7 /* Frameworks */,
89 | FA4E3A121D08683D00B5A3F9 /* Headers */,
90 | );
91 | buildRules = (
92 | );
93 | dependencies = (
94 | );
95 | name = RCTRecordSound;
96 | productName = RCTRecordSound;
97 | productReference = FA40C5021D085B5900EF80D7 /* libRCTRecordSound.a */;
98 | productType = "com.apple.product-type.library.static";
99 | };
100 | /* End PBXNativeTarget section */
101 |
102 | /* Begin PBXProject section */
103 | FA40C4FA1D085B5900EF80D7 /* Project object */ = {
104 | isa = PBXProject;
105 | attributes = {
106 | LastUpgradeCheck = 0730;
107 | ORGANIZATIONNAME = "Alex Dana";
108 | TargetAttributes = {
109 | FA40C5011D085B5900EF80D7 = {
110 | CreatedOnToolsVersion = 7.3.1;
111 | };
112 | };
113 | };
114 | buildConfigurationList = FA40C4FD1D085B5900EF80D7 /* Build configuration list for PBXProject "RCTRecordSound" */;
115 | compatibilityVersion = "Xcode 6.3";
116 | developmentRegion = English;
117 | hasScannedForEncodings = 0;
118 | knownRegions = (
119 | en,
120 | );
121 | mainGroup = FA40C4F91D085B5900EF80D7;
122 | productRefGroup = FA40C5031D085B5900EF80D7 /* Products */;
123 | projectDirPath = "";
124 | projectRoot = "";
125 | targets = (
126 | FA40C5011D085B5900EF80D7 /* RCTRecordSound */,
127 | );
128 | };
129 | /* End PBXProject section */
130 |
131 | /* Begin PBXSourcesBuildPhase section */
132 | FA40C4FE1D085B5900EF80D7 /* Sources */ = {
133 | isa = PBXSourcesBuildPhase;
134 | buildActionMask = 2147483647;
135 | files = (
136 | FA40C5081D085B5900EF80D7 /* RCTRecordSound.m in Sources */,
137 | );
138 | runOnlyForDeploymentPostprocessing = 0;
139 | };
140 | /* End PBXSourcesBuildPhase section */
141 |
142 | /* Begin XCBuildConfiguration section */
143 | FA40C5091D085B5900EF80D7 /* Debug */ = {
144 | isa = XCBuildConfiguration;
145 | buildSettings = {
146 | ALWAYS_SEARCH_USER_PATHS = NO;
147 | CLANG_ANALYZER_NONNULL = YES;
148 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
149 | CLANG_CXX_LIBRARY = "libc++";
150 | CLANG_ENABLE_MODULES = YES;
151 | CLANG_ENABLE_OBJC_ARC = YES;
152 | CLANG_WARN_BOOL_CONVERSION = YES;
153 | CLANG_WARN_CONSTANT_CONVERSION = YES;
154 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
155 | CLANG_WARN_EMPTY_BODY = YES;
156 | CLANG_WARN_ENUM_CONVERSION = YES;
157 | CLANG_WARN_INT_CONVERSION = YES;
158 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
159 | CLANG_WARN_UNREACHABLE_CODE = YES;
160 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
161 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
162 | COPY_PHASE_STRIP = NO;
163 | DEBUG_INFORMATION_FORMAT = dwarf;
164 | ENABLE_STRICT_OBJC_MSGSEND = YES;
165 | ENABLE_TESTABILITY = YES;
166 | GCC_C_LANGUAGE_STANDARD = gnu99;
167 | GCC_DYNAMIC_NO_PIC = NO;
168 | GCC_NO_COMMON_BLOCKS = YES;
169 | GCC_OPTIMIZATION_LEVEL = 0;
170 | GCC_PREPROCESSOR_DEFINITIONS = (
171 | "DEBUG=1",
172 | "$(inherited)",
173 | );
174 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
175 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
176 | GCC_WARN_UNDECLARED_SELECTOR = YES;
177 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
178 | GCC_WARN_UNUSED_FUNCTION = YES;
179 | GCC_WARN_UNUSED_VARIABLE = YES;
180 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
181 | MTL_ENABLE_DEBUG_INFO = YES;
182 | ONLY_ACTIVE_ARCH = YES;
183 | SDKROOT = iphoneos;
184 | };
185 | name = Debug;
186 | };
187 | FA40C50A1D085B5900EF80D7 /* Release */ = {
188 | isa = XCBuildConfiguration;
189 | buildSettings = {
190 | ALWAYS_SEARCH_USER_PATHS = NO;
191 | CLANG_ANALYZER_NONNULL = YES;
192 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
193 | CLANG_CXX_LIBRARY = "libc++";
194 | CLANG_ENABLE_MODULES = YES;
195 | CLANG_ENABLE_OBJC_ARC = YES;
196 | CLANG_WARN_BOOL_CONVERSION = YES;
197 | CLANG_WARN_CONSTANT_CONVERSION = YES;
198 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
199 | CLANG_WARN_EMPTY_BODY = YES;
200 | CLANG_WARN_ENUM_CONVERSION = YES;
201 | CLANG_WARN_INT_CONVERSION = YES;
202 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
203 | CLANG_WARN_UNREACHABLE_CODE = YES;
204 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
205 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
206 | COPY_PHASE_STRIP = NO;
207 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
208 | ENABLE_NS_ASSERTIONS = NO;
209 | ENABLE_STRICT_OBJC_MSGSEND = YES;
210 | GCC_C_LANGUAGE_STANDARD = gnu99;
211 | GCC_NO_COMMON_BLOCKS = YES;
212 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
213 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
214 | GCC_WARN_UNDECLARED_SELECTOR = YES;
215 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
216 | GCC_WARN_UNUSED_FUNCTION = YES;
217 | GCC_WARN_UNUSED_VARIABLE = YES;
218 | IPHONEOS_DEPLOYMENT_TARGET = 9.3;
219 | MTL_ENABLE_DEBUG_INFO = NO;
220 | SDKROOT = iphoneos;
221 | VALIDATE_PRODUCT = YES;
222 | };
223 | name = Release;
224 | };
225 | FA40C50C1D085B5900EF80D7 /* Debug */ = {
226 | isa = XCBuildConfiguration;
227 | buildSettings = {
228 | ALWAYS_SEARCH_USER_PATHS = NO;
229 | HEADER_SEARCH_PATHS = (
230 | "$(inherite)",
231 | "$(SRCROOT)/../../../React/**",
232 | "$(SRCROOT)/../../react-native/React/**",
233 | "$(SRCROOT)/node_modules/react-native/Libraries/**",
234 | "$(SRCROOT)/node_modules/**",
235 | "$(SRCROOT)/../../node_modules/react-native/React/**/**",
236 | "$(SRCROOT)/../../React/**/**",
237 | );
238 | LD_RUNPATH_SEARCH_PATHS = "$(SRCROOT)/../../node_modules/react-native/React/**";
239 | LIBRARY_SEARCH_PATHS = "$(inherite)";
240 | OTHER_LDFLAGS = "-ObjC";
241 | PRODUCT_NAME = "$(TARGET_NAME)";
242 | SKIP_INSTALL = YES;
243 | USER_HEADER_SEARCH_PATHS = "";
244 | };
245 | name = Debug;
246 | };
247 | FA40C50D1D085B5900EF80D7 /* Release */ = {
248 | isa = XCBuildConfiguration;
249 | buildSettings = {
250 | ALWAYS_SEARCH_USER_PATHS = NO;
251 | HEADER_SEARCH_PATHS = (
252 | "$(inherite)",
253 | "$(SRCROOT)/../../../React/**",
254 | "$(SRCROOT)/../../react-native/React/**",
255 | "$(SRCROOT)/node_modules/**",
256 | "$(SRCROOT)/node_modules/react-native/Libraries/**",
257 | "$(SRCROOT)/../../node_modules/react-native/React/**/**",
258 | "$(SRCROOT)/../../React/**/**",
259 | );
260 | LD_RUNPATH_SEARCH_PATHS = "$(SRCROOT)/../../node_modules/react-native/React/**";
261 | LIBRARY_SEARCH_PATHS = "$(inherite)";
262 | OTHER_LDFLAGS = "-ObjC";
263 | PRODUCT_NAME = "$(TARGET_NAME)";
264 | SKIP_INSTALL = YES;
265 | USER_HEADER_SEARCH_PATHS = "";
266 | };
267 | name = Release;
268 | };
269 | /* End XCBuildConfiguration section */
270 |
271 | /* Begin XCConfigurationList section */
272 | FA40C4FD1D085B5900EF80D7 /* Build configuration list for PBXProject "RCTRecordSound" */ = {
273 | isa = XCConfigurationList;
274 | buildConfigurations = (
275 | FA40C5091D085B5900EF80D7 /* Debug */,
276 | FA40C50A1D085B5900EF80D7 /* Release */,
277 | );
278 | defaultConfigurationIsVisible = 0;
279 | defaultConfigurationName = Release;
280 | };
281 | FA40C50B1D085B5900EF80D7 /* Build configuration list for PBXNativeTarget "RCTRecordSound" */ = {
282 | isa = XCConfigurationList;
283 | buildConfigurations = (
284 | FA40C50C1D085B5900EF80D7 /* Debug */,
285 | FA40C50D1D085B5900EF80D7 /* Release */,
286 | );
287 | defaultConfigurationIsVisible = 0;
288 | defaultConfigurationName = Release;
289 | };
290 | /* End XCConfigurationList section */
291 | };
292 | rootObject = FA40C4FA1D085B5900EF80D7 /* Project object */;
293 | }
294 |
--------------------------------------------------------------------------------