├── .npmignore ├── .travis.yml ├── android ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── apsl │ │ └── versionnumber │ │ ├── RNVersionNumberPackage.java │ │ └── RNVersionNumberModule.java └── build.gradle ├── index.d.ts ├── ios ├── RNVersionNumber.h ├── RNVersionNumber.m └── RNVersionNumber.xcodeproj │ └── project.pbxproj ├── index.js ├── react-native-version-number.podspec ├── .gitignore ├── package.json ├── LICENSE ├── README.md └── .eslintrc /.npmignore: -------------------------------------------------------------------------------- 1 | .git 2 | .idea 3 | .eslintrc 4 | .travis.yml -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 6.4.0 4 | -------------------------------------------------------------------------------- /android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-native-version-number' { 2 | export const appVersion: string 3 | export const buildVersion: string 4 | export const bundleIdentifier: string 5 | } -------------------------------------------------------------------------------- /ios/RNVersionNumber.h: -------------------------------------------------------------------------------- 1 | #if __has_include() 2 | #import 3 | #else 4 | #import "RCTBridgeModule.h" 5 | #endif 6 | 7 | @interface RNVersionNumber : NSObject 8 | 9 | @end 10 | 11 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* @flow */ 2 | 3 | import { NativeModules } from 'react-native'; 4 | 5 | const { RNVersionNumber } = NativeModules; 6 | 7 | type VersionObject = { 8 | appVersion: ?string, 9 | buildVersion: ?string, 10 | bundleIdentifier: ?string 11 | }; 12 | 13 | const VersionNumber: VersionObject = { 14 | appVersion: RNVersionNumber && RNVersionNumber.appVersion, 15 | buildVersion: RNVersionNumber && RNVersionNumber.buildVersion, 16 | bundleIdentifier: RNVersionNumber && RNVersionNumber.bundleIdentifier 17 | }; 18 | 19 | export default VersionNumber; 20 | -------------------------------------------------------------------------------- /ios/RNVersionNumber.m: -------------------------------------------------------------------------------- 1 | 2 | #import "RNVersionNumber.h" 3 | 4 | @implementation RNVersionNumber 5 | 6 | - (dispatch_queue_t)methodQueue 7 | { 8 | return dispatch_get_main_queue(); 9 | } 10 | RCT_EXPORT_MODULE() 11 | 12 | - (NSDictionary *)constantsToExport 13 | { 14 | return @{@"appVersion" : [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"], 15 | @"buildVersion": [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey], 16 | @"bundleIdentifier" : [[NSBundle mainBundle] bundleIdentifier] 17 | }; 18 | 19 | } 20 | 21 | + (BOOL)requiresMainQueueSetup 22 | { 23 | return YES; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /react-native-version-number.podspec: -------------------------------------------------------------------------------- 1 | require 'json' 2 | package_json = JSON.parse(File.read('package.json')) 3 | 4 | Pod::Spec.new do |s| 5 | 6 | s.name = "react-native-version-number" 7 | s.version = package_json["version"] 8 | s.summary = package_json["description"] 9 | s.homepage = "https://github.com/APSL/react-native-version-number" 10 | s.license = package_json["license"] 11 | s.author = { package_json["author"] => package_json["author"] } 12 | s.platform = :ios, "7.0" 13 | s.source = { :git => "#{package_json["repository"]["url"]}.git", :tag => "v#{s.version}" } 14 | s.source_files = 'ios/*.{h,m}' 15 | s.dependency 'React' 16 | 17 | end -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | apply plugin: 'com.android.library' 3 | 4 | def DEFAULT_COMPILE_SDK_VERSION = 27 5 | def DEFAULT_BUILD_TOOLS_VERSION = "27.0.3" 6 | def DEFAULT_TARGET_SDK_VERSION = 27 7 | 8 | android { 9 | compileSdkVersion project.hasProperty('compileSdkVersion') ? project.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION 10 | buildToolsVersion project.hasProperty('buildToolsVersion') ? project.buildToolsVersion : DEFAULT_BUILD_TOOLS_VERSION 11 | 12 | defaultConfig { 13 | minSdkVersion 16 14 | targetSdkVersion project.hasProperty('targetSdkVersion') ? project.targetSdkVersion : DEFAULT_TARGET_SDK_VERSION 15 | versionCode 1 16 | versionName "1.0" 17 | ndk { 18 | abiFilters "armeabi-v7a", "x86" 19 | } 20 | } 21 | lintOptions { 22 | warning 'InvalidPackage' 23 | } 24 | } 25 | 26 | dependencies { 27 | implementation 'com.facebook.react:react-native:+' 28 | } 29 | 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | !**/*.xcodeproj 3 | !**/*.pbxproj 4 | !**/*.xcworkspacedata 5 | !**/*.xcsettings 6 | !**/*.xcscheme 7 | *.pbxuser 8 | !default.pbxuser 9 | *.mode1v3 10 | !default.mode1v3 11 | *.mode2v3 12 | !default.mode2v3 13 | *.perspectivev3 14 | !default.perspectivev3 15 | xcuserdata 16 | *.xccheckout 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | *.xcuserstate 22 | project.xcworkspace 23 | 24 | # Gradle 25 | /build/ 26 | /Examples/**/android/app/build/ 27 | /Examples/**/android/app/gradle/ 28 | /Examples/**/android/app/gradlew 29 | /Examples/**/android/app/gradlew.bat 30 | /ReactAndroid/build/ 31 | 32 | # Buck 33 | .buckd 34 | buck-out 35 | /ReactAndroid/src/main/jni/prebuilt/lib/armeabi-v7a/ 36 | /ReactAndroid/src/main/jni/prebuilt/lib/x86/ 37 | 38 | # Android 39 | .idea 40 | .gradle 41 | local.properties 42 | *.iml 43 | 44 | # Node 45 | node_modules 46 | *.log 47 | .nvm 48 | 49 | # OS X 50 | .DS_Store 51 | 52 | # Test generated files 53 | /ReactAndroid/src/androidTest/assets/AndroidTestBundle.js 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-version-number", 3 | "version": "0.3.6", 4 | "description": "Access app version inside React Native", 5 | "main": "index.js", 6 | "scripts": { 7 | "lint": "eslint index.js", 8 | "test": "npm run lint" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/APSL/react-native-version-number.git" 13 | }, 14 | "tags": [ 15 | "react", 16 | "react-native", 17 | "react-component", 18 | "ios" 19 | ], 20 | "keywords": [ 21 | "react", 22 | "react-native", 23 | "ios", 24 | "react-component" 25 | ], 26 | "author": "Alvaro Medina Ballester ", 27 | "license": "MIT", 28 | "bugs": { 29 | "url": "https://github.com/APSL/react-native-version-number/issues" 30 | }, 31 | "homepage": "https://github.com/APSL/react-native-version-number#readme", 32 | "devDependencies": { 33 | "babel-eslint": "^6.1.2", 34 | "eslint": "^3.3.1", 35 | "eslint-plugin-react": "^6.1.2" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /android/src/main/java/com/apsl/versionnumber/RNVersionNumberPackage.java: -------------------------------------------------------------------------------- 1 | 2 | package com.apsl.versionnumber; 3 | 4 | import java.util.Arrays; 5 | import java.util.Collections; 6 | import java.util.List; 7 | 8 | import com.facebook.react.ReactPackage; 9 | import com.facebook.react.bridge.NativeModule; 10 | import com.facebook.react.bridge.ReactApplicationContext; 11 | import com.facebook.react.uimanager.ViewManager; 12 | import com.facebook.react.bridge.JavaScriptModule; 13 | 14 | public class RNVersionNumberPackage implements ReactPackage { 15 | @Override 16 | public List createNativeModules(ReactApplicationContext reactContext) { 17 | return Arrays.asList(new RNVersionNumberModule(reactContext)); 18 | } 19 | 20 | // Deprecated in RN 0.47 - facebook/react-native@ce6fb33 21 | public List> createJSModules() { 22 | return Collections.emptyList(); 23 | } 24 | 25 | @Override 26 | public List createViewManagers(ReactApplicationContext reactContext) { 27 | return Collections.emptyList(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 APSL 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /android/src/main/java/com/apsl/versionnumber/RNVersionNumberModule.java: -------------------------------------------------------------------------------- 1 | 2 | package com.apsl.versionnumber; 3 | 4 | import com.facebook.react.bridge.ReactApplicationContext; 5 | import com.facebook.react.bridge.ReactContextBaseJavaModule; 6 | import com.facebook.react.bridge.ReactMethod; 7 | import com.facebook.react.bridge.Callback; 8 | 9 | import android.content.pm.ApplicationInfo; 10 | import android.content.pm.PackageManager.NameNotFoundException; 11 | import android.content.pm.PackageManager; 12 | 13 | import java.util.HashMap; 14 | import java.util.Map; 15 | 16 | public class RNVersionNumberModule extends ReactContextBaseJavaModule { 17 | 18 | private final ReactApplicationContext reactContext; 19 | 20 | private static final String APP_VERSION = "appVersion"; 21 | private static final String APP_BUILD = "buildVersion"; 22 | private static final String APP_ID = "bundleIdentifier"; 23 | 24 | public RNVersionNumberModule(ReactApplicationContext reactContext) { 25 | super(reactContext); 26 | this.reactContext = reactContext; 27 | } 28 | 29 | @Override 30 | public String getName() { 31 | return "RNVersionNumber"; 32 | } 33 | 34 | @Override 35 | public Map getConstants() { 36 | final Map constants = new HashMap<>(); 37 | final PackageManager packageManager = this.reactContext.getPackageManager(); 38 | final String packageName = this.reactContext.getPackageName(); 39 | try { 40 | constants.put(APP_VERSION, packageManager.getPackageInfo(packageName, 0).versionName); 41 | constants.put(APP_BUILD, packageManager.getPackageInfo(packageName, 0).versionCode); 42 | constants.put(APP_ID, packageName); 43 | } catch (NameNotFoundException e) { 44 | e.printStackTrace(); 45 | } 46 | return constants; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # react-native-version-number 3 | 4 |

5 | 6 | 7 | 8 |

9 | 10 | Returns the `CFBundleShortVersionString` and the `CFBundleVersion` and `bundleIdentifier` on IOS. For Android, returns the `versionName`, `versionCode` and `applicationId`. 11 | 12 | 13 | | | iOS | Android | Example | 14 | | --- | --- | --- | --- | 15 | | appVersion | `CFBundleShortVersionString` | `versionName` | `1.0.2` | 16 | | buildVersion | `CFBundleVersion` | `versionCode` | `42` | 17 | | bundleIdentifier | `bundleIdentifier` | `applicationId` | `com.foo.bar.MyApp`| 18 | 19 | 20 | ## Getting started 21 | 22 | Install the package 23 | 24 | `$ yarn add react-native-version-number` 25 | 26 | Link 27 | 28 | `$ react-native link react-native-version-number` 29 | 30 | #### Manual installation 31 | 32 | **Android:** 33 | 34 | 1. In your android/settings.gradle file, make the following additions: 35 | ```java 36 | include ':react-native-version-number' 37 | project(':react-native-version-number').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-version-number/android') 38 | ``` 39 | 40 | 2. In your android/app/build.gradle file, add the `:react-native-version-number` project as a compile-time dependency: 41 | 42 | ```java 43 | ... 44 | dependencies { 45 | ... 46 | compile project(':react-native-version-number') 47 | } 48 | ``` 49 | 50 | 3. Update the MainApplication.java file to use `react-native-version-number` via the following changes: 51 | 52 | ```java 53 | import com.apsl.versionnumber.RNVersionNumberPackage; 54 | 55 | public class MainApplication extends Application implements ReactApplication { 56 | 57 | private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 58 | ... 59 | @Override 60 | protected List getPackages() { 61 | return Arrays.asList( 62 | new MainReactPackage(), 63 | new RNVersionNumberPackage(), // here 64 | ); 65 | } 66 | }; 67 | ... 68 | } 69 | ``` 70 | 71 | 72 | ## Usage 73 | ```javascript 74 | import VersionNumber from 'react-native-version-number'; 75 | 76 | console.log(VersionNumber.appVersion); 77 | console.log(VersionNumber.buildVersion); 78 | console.log(VersionNumber.bundleIdentifier); 79 | 80 | ``` 81 | 82 | ## License 83 | MIT. 84 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "parser": "babel-eslint", 3 | 4 | "parserOptions": { 5 | "ecmaFeatures": { 6 | "jsx": true, 7 | "modules": true, 8 | "experimentalObjectRestSpread": true 9 | } 10 | }, 11 | 12 | "env": { 13 | "es6": true, 14 | "jasmine": true, 15 | "node": 1 16 | }, 17 | 18 | "plugins": [ 19 | "react" 20 | ], 21 | 22 | "globals": { 23 | "__DEV__": true, 24 | "__dirname": false, 25 | "__fbBatchedBridgeConfig": false, 26 | "cancelAnimationFrame": false, 27 | "clearImmediate": true, 28 | "clearInterval": false, 29 | "clearTimeout": false, 30 | "console": false, 31 | "document": false, 32 | "escape": false, 33 | "exports": false, 34 | "fetch": false, 35 | "global": false, 36 | "jest": false, 37 | "Map": true, 38 | "module": false, 39 | "navigator": false, 40 | "process": false, 41 | "Promise": true, 42 | "requestAnimationFrame": true, 43 | "require": false, 44 | "Set": true, 45 | "setImmediate": true, 46 | "setInterval": false, 47 | "setTimeout": false, 48 | "window": false, 49 | "XMLHttpRequest": false, 50 | "pit": false, 51 | "FormData": true 52 | }, 53 | 54 | "rules": { 55 | "comma-dangle": 0, 56 | "no-cond-assign": 1, 57 | "no-console": 0, 58 | "no-constant-condition": 0, 59 | "no-control-regex": 1, 60 | "no-debugger": 1, 61 | "no-dupe-keys": 1, 62 | "no-empty": 0, 63 | "no-empty-character-class": 1, 64 | "no-ex-assign": 1, 65 | "no-extra-boolean-cast": 1, 66 | "no-extra-parens": 0, 67 | "no-extra-semi": 1, 68 | "no-func-assign": 1, 69 | "no-inner-declarations": 0, 70 | "no-invalid-regexp": 1, 71 | "no-negated-in-lhs": 1, 72 | "no-obj-calls": 1, 73 | "no-regex-spaces": 1, 74 | "no-reserved-keys": 0, 75 | "no-sparse-arrays": 1, 76 | "no-unreachable": 1, 77 | "use-isnan": 1, 78 | "valid-jsdoc": 0, 79 | "valid-typeof": 1, 80 | "block-scoped-var": 0, 81 | "complexity": 0, 82 | "consistent-return": 0, 83 | "curly": 1, 84 | "default-case": 0, 85 | "dot-notation": 1, 86 | "eqeqeq": 1, 87 | "guard-for-in": 0, 88 | "no-alert": 1, 89 | "no-caller": 1, 90 | "no-div-regex": 1, 91 | "no-else-return": 0, 92 | "no-labels": 1, 93 | "no-eq-null": 0, 94 | "no-eval": 1, 95 | "no-extend-native": 1, 96 | "no-extra-bind": 1, 97 | "no-fallthrough": 1, 98 | "no-floating-decimal": 1, 99 | "no-implied-eval": 1, 100 | "no-iterator": 1, 101 | "no-lone-blocks": 1, 102 | "no-loop-func": 0, 103 | "no-multi-str": 0, 104 | "no-native-reassign": 0, 105 | "no-new": 1, 106 | "no-new-func": 1, 107 | "no-new-wrappers": 1, 108 | "no-octal": 1, 109 | "no-octal-escape": 1, 110 | "no-proto": 1, 111 | "no-redeclare": 0, 112 | "no-return-assign": 1, 113 | "no-script-url": 1, 114 | "no-self-compare": 1, 115 | "no-sequences": 1, 116 | "no-unused-expressions": 0, 117 | "no-void": 1, 118 | "no-warning-comments": 0, 119 | "no-with": 1, 120 | "radix": 1, 121 | "vars-on-top": 0, 122 | "wrap-iife": 0, 123 | "yoda": 1, 124 | 125 | "strict": 0, 126 | 127 | "no-catch-shadow": 1, 128 | "no-delete-var": 1, 129 | "no-label-var": 1, 130 | "no-shadow": 1, 131 | "no-shadow-restricted-names": 1, 132 | "no-undef": 2, 133 | "no-undefined": 0, 134 | "no-undef-init": 1, 135 | "no-unused-vars": [1, {"vars": "all", "args": "none"}], 136 | "no-use-before-define": 0, 137 | "handle-callback-err": 1, 138 | "no-mixed-requires": 1, 139 | "no-new-require": 1, 140 | "no-path-concat": 1, 141 | "no-process-exit": 0, 142 | "no-restricted-modules": 1, 143 | "no-sync": 0, 144 | 145 | "key-spacing": 0, 146 | "comma-spacing": 0, 147 | "no-multi-spaces": 0, 148 | "brace-style": 0, 149 | "camelcase": 0, 150 | "consistent-this": [1, "self"], 151 | "eol-last": 1, 152 | "func-names": 0, 153 | "func-style": 0, 154 | "new-cap": 0, 155 | "new-parens": 1, 156 | "no-nested-ternary": 0, 157 | "no-array-constructor": 1, 158 | "no-lonely-if": 0, 159 | "no-new-object": 1, 160 | "no-spaced-func": 1, 161 | "semi-spacing": 1, 162 | "no-ternary": 0, 163 | "no-trailing-spaces": 1, 164 | "no-underscore-dangle": 0, 165 | "no-mixed-spaces-and-tabs": 1, 166 | "quotes": [1, "single", "avoid-escape"], 167 | "quote-props": 0, 168 | "semi": 0, 169 | "sort-vars": 0, 170 | "keyword-spacing": [0, { "before": true }], 171 | "space-in-brackets": 0, 172 | "space-in-parens": 0, 173 | "space-infix-ops": 1, 174 | "space-unary-ops": [1, { "words": true, "nonwords": false }], 175 | "max-nested-callbacks": 0, 176 | "one-var": 0, 177 | "wrap-regex": 0, 178 | 179 | "max-depth": 0, 180 | "max-len": 0, 181 | "max-params": 0, 182 | "max-statements": 0, 183 | "no-bitwise": 1, 184 | "no-plusplus": 0, 185 | 186 | "react/display-name": 0, 187 | "react/jsx-boolean-value": 0, 188 | "react/jsx-no-undef": 1, 189 | "react/jsx-sort-props": 0, 190 | "react/jsx-uses-react": 0, 191 | "react/jsx-uses-vars": 1, 192 | "react/no-did-mount-set-state": 1, 193 | "react/no-did-update-set-state": 1, 194 | "react/no-multi-comp": 0, 195 | "react/no-unknown-property": 0, 196 | "react/prop-types": 0, 197 | "react/react-in-jsx-scope": 0, 198 | "react/self-closing-comp": 1, 199 | "react/wrap-multilines": 0 200 | } 201 | } 202 | -------------------------------------------------------------------------------- /ios/RNVersionNumber.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 2858ECCA1F8B91B400610575 /* RNVersionNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNVersionNumber.m */; }; 11 | B3E7B58A1CC2AC0600A0062D /* RNVersionNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNVersionNumber.m */; }; 12 | /* End PBXBuildFile section */ 13 | 14 | /* Begin PBXCopyFilesBuildPhase section */ 15 | 2858ECCC1F8B91B400610575 /* CopyFiles */ = { 16 | isa = PBXCopyFilesBuildPhase; 17 | buildActionMask = 2147483647; 18 | dstPath = "include/$(PRODUCT_NAME)"; 19 | dstSubfolderSpec = 16; 20 | files = ( 21 | ); 22 | runOnlyForDeploymentPostprocessing = 0; 23 | }; 24 | 58B511D91A9E6C8500147676 /* CopyFiles */ = { 25 | isa = PBXCopyFilesBuildPhase; 26 | buildActionMask = 2147483647; 27 | dstPath = "include/$(PRODUCT_NAME)"; 28 | dstSubfolderSpec = 16; 29 | files = ( 30 | ); 31 | runOnlyForDeploymentPostprocessing = 0; 32 | }; 33 | /* End PBXCopyFilesBuildPhase section */ 34 | 35 | /* Begin PBXFileReference section */ 36 | 134814201AA4EA6300B7C361 /* libRNVersionNumber.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNVersionNumber.a; sourceTree = BUILT_PRODUCTS_DIR; }; 37 | 2858ECD01F8B91B400610575 /* libRNVersionNumber-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libRNVersionNumber-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 38 | B3E7B5881CC2AC0600A0062D /* RNVersionNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNVersionNumber.h; sourceTree = ""; }; 39 | B3E7B5891CC2AC0600A0062D /* RNVersionNumber.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNVersionNumber.m; sourceTree = ""; }; 40 | /* End PBXFileReference section */ 41 | 42 | /* Begin PBXFrameworksBuildPhase section */ 43 | 2858ECCB1F8B91B400610575 /* Frameworks */ = { 44 | isa = PBXFrameworksBuildPhase; 45 | buildActionMask = 2147483647; 46 | files = ( 47 | ); 48 | runOnlyForDeploymentPostprocessing = 0; 49 | }; 50 | 58B511D81A9E6C8500147676 /* Frameworks */ = { 51 | isa = PBXFrameworksBuildPhase; 52 | buildActionMask = 2147483647; 53 | files = ( 54 | ); 55 | runOnlyForDeploymentPostprocessing = 0; 56 | }; 57 | /* End PBXFrameworksBuildPhase section */ 58 | 59 | /* Begin PBXGroup section */ 60 | 134814211AA4EA7D00B7C361 /* Products */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | 134814201AA4EA6300B7C361 /* libRNVersionNumber.a */, 64 | ); 65 | name = Products; 66 | sourceTree = ""; 67 | }; 68 | 58B511D21A9E6C8500147676 = { 69 | isa = PBXGroup; 70 | children = ( 71 | B3E7B5881CC2AC0600A0062D /* RNVersionNumber.h */, 72 | B3E7B5891CC2AC0600A0062D /* RNVersionNumber.m */, 73 | 134814211AA4EA7D00B7C361 /* Products */, 74 | 2858ECD01F8B91B400610575 /* libRNVersionNumber-tvOS.a */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | /* End PBXGroup section */ 79 | 80 | /* Begin PBXNativeTarget section */ 81 | 2858ECC81F8B91B400610575 /* RNVersionNumber-tvOS */ = { 82 | isa = PBXNativeTarget; 83 | buildConfigurationList = 2858ECCD1F8B91B400610575 /* Build configuration list for PBXNativeTarget "RNVersionNumber-tvOS" */; 84 | buildPhases = ( 85 | 2858ECC91F8B91B400610575 /* Sources */, 86 | 2858ECCB1F8B91B400610575 /* Frameworks */, 87 | 2858ECCC1F8B91B400610575 /* CopyFiles */, 88 | ); 89 | buildRules = ( 90 | ); 91 | dependencies = ( 92 | ); 93 | name = "RNVersionNumber-tvOS"; 94 | productName = RCTDataManager; 95 | productReference = 2858ECD01F8B91B400610575 /* libRNVersionNumber-tvOS.a */; 96 | productType = "com.apple.product-type.library.static"; 97 | }; 98 | 58B511DA1A9E6C8500147676 /* RNVersionNumber */ = { 99 | isa = PBXNativeTarget; 100 | buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNVersionNumber" */; 101 | buildPhases = ( 102 | 58B511D71A9E6C8500147676 /* Sources */, 103 | 58B511D81A9E6C8500147676 /* Frameworks */, 104 | 58B511D91A9E6C8500147676 /* CopyFiles */, 105 | ); 106 | buildRules = ( 107 | ); 108 | dependencies = ( 109 | ); 110 | name = RNVersionNumber; 111 | productName = RCTDataManager; 112 | productReference = 134814201AA4EA6300B7C361 /* libRNVersionNumber.a */; 113 | productType = "com.apple.product-type.library.static"; 114 | }; 115 | /* End PBXNativeTarget section */ 116 | 117 | /* Begin PBXProject section */ 118 | 58B511D31A9E6C8500147676 /* Project object */ = { 119 | isa = PBXProject; 120 | attributes = { 121 | LastUpgradeCheck = 0610; 122 | ORGANIZATIONNAME = Facebook; 123 | TargetAttributes = { 124 | 58B511DA1A9E6C8500147676 = { 125 | CreatedOnToolsVersion = 6.1.1; 126 | }; 127 | }; 128 | }; 129 | buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNVersionNumber" */; 130 | compatibilityVersion = "Xcode 3.2"; 131 | developmentRegion = English; 132 | hasScannedForEncodings = 0; 133 | knownRegions = ( 134 | en, 135 | ); 136 | mainGroup = 58B511D21A9E6C8500147676; 137 | productRefGroup = 58B511D21A9E6C8500147676; 138 | projectDirPath = ""; 139 | projectRoot = ""; 140 | targets = ( 141 | 58B511DA1A9E6C8500147676 /* RNVersionNumber */, 142 | 2858ECC81F8B91B400610575 /* RNVersionNumber-tvOS */, 143 | ); 144 | }; 145 | /* End PBXProject section */ 146 | 147 | /* Begin PBXSourcesBuildPhase section */ 148 | 2858ECC91F8B91B400610575 /* Sources */ = { 149 | isa = PBXSourcesBuildPhase; 150 | buildActionMask = 2147483647; 151 | files = ( 152 | 2858ECCA1F8B91B400610575 /* RNVersionNumber.m in Sources */, 153 | ); 154 | runOnlyForDeploymentPostprocessing = 0; 155 | }; 156 | 58B511D71A9E6C8500147676 /* Sources */ = { 157 | isa = PBXSourcesBuildPhase; 158 | buildActionMask = 2147483647; 159 | files = ( 160 | B3E7B58A1CC2AC0600A0062D /* RNVersionNumber.m in Sources */, 161 | ); 162 | runOnlyForDeploymentPostprocessing = 0; 163 | }; 164 | /* End PBXSourcesBuildPhase section */ 165 | 166 | /* Begin XCBuildConfiguration section */ 167 | 2858ECCE1F8B91B400610575 /* Debug */ = { 168 | isa = XCBuildConfiguration; 169 | buildSettings = { 170 | HEADER_SEARCH_PATHS = ( 171 | "$(inherited)", 172 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 173 | "$(SRCROOT)/../../../React/**", 174 | "$(SRCROOT)/../../react-native/React/**", 175 | ); 176 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 177 | OTHER_LDFLAGS = "-ObjC"; 178 | PRODUCT_NAME = "$(TARGET_NAME)"; 179 | SDKROOT = appletvos; 180 | SKIP_INSTALL = YES; 181 | }; 182 | name = Debug; 183 | }; 184 | 2858ECCF1F8B91B400610575 /* Release */ = { 185 | isa = XCBuildConfiguration; 186 | buildSettings = { 187 | HEADER_SEARCH_PATHS = ( 188 | "$(inherited)", 189 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 190 | "$(SRCROOT)/../../../React/**", 191 | "$(SRCROOT)/../../react-native/React/**", 192 | ); 193 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 194 | OTHER_LDFLAGS = "-ObjC"; 195 | PRODUCT_NAME = "$(TARGET_NAME)"; 196 | SDKROOT = appletvos; 197 | SKIP_INSTALL = YES; 198 | }; 199 | name = Release; 200 | }; 201 | 58B511ED1A9E6C8500147676 /* Debug */ = { 202 | isa = XCBuildConfiguration; 203 | buildSettings = { 204 | ALWAYS_SEARCH_USER_PATHS = NO; 205 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 206 | CLANG_CXX_LIBRARY = "libc++"; 207 | CLANG_ENABLE_MODULES = YES; 208 | CLANG_ENABLE_OBJC_ARC = YES; 209 | CLANG_WARN_BOOL_CONVERSION = YES; 210 | CLANG_WARN_CONSTANT_CONVERSION = YES; 211 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 212 | CLANG_WARN_EMPTY_BODY = YES; 213 | CLANG_WARN_ENUM_CONVERSION = YES; 214 | CLANG_WARN_INT_CONVERSION = YES; 215 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 216 | CLANG_WARN_UNREACHABLE_CODE = YES; 217 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 218 | COPY_PHASE_STRIP = NO; 219 | ENABLE_STRICT_OBJC_MSGSEND = YES; 220 | GCC_C_LANGUAGE_STANDARD = gnu99; 221 | GCC_DYNAMIC_NO_PIC = NO; 222 | GCC_OPTIMIZATION_LEVEL = 0; 223 | GCC_PREPROCESSOR_DEFINITIONS = ( 224 | "DEBUG=1", 225 | "$(inherited)", 226 | ); 227 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 228 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 229 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 230 | GCC_WARN_UNDECLARED_SELECTOR = YES; 231 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 232 | GCC_WARN_UNUSED_FUNCTION = YES; 233 | GCC_WARN_UNUSED_VARIABLE = YES; 234 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 235 | MTL_ENABLE_DEBUG_INFO = YES; 236 | ONLY_ACTIVE_ARCH = YES; 237 | SDKROOT = iphoneos; 238 | }; 239 | name = Debug; 240 | }; 241 | 58B511EE1A9E6C8500147676 /* Release */ = { 242 | isa = XCBuildConfiguration; 243 | buildSettings = { 244 | ALWAYS_SEARCH_USER_PATHS = NO; 245 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 246 | CLANG_CXX_LIBRARY = "libc++"; 247 | CLANG_ENABLE_MODULES = YES; 248 | CLANG_ENABLE_OBJC_ARC = YES; 249 | CLANG_WARN_BOOL_CONVERSION = YES; 250 | CLANG_WARN_CONSTANT_CONVERSION = YES; 251 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 252 | CLANG_WARN_EMPTY_BODY = YES; 253 | CLANG_WARN_ENUM_CONVERSION = YES; 254 | CLANG_WARN_INT_CONVERSION = YES; 255 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 256 | CLANG_WARN_UNREACHABLE_CODE = YES; 257 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 258 | COPY_PHASE_STRIP = YES; 259 | ENABLE_NS_ASSERTIONS = NO; 260 | ENABLE_STRICT_OBJC_MSGSEND = YES; 261 | GCC_C_LANGUAGE_STANDARD = gnu99; 262 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 263 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 264 | GCC_WARN_UNDECLARED_SELECTOR = YES; 265 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 266 | GCC_WARN_UNUSED_FUNCTION = YES; 267 | GCC_WARN_UNUSED_VARIABLE = YES; 268 | IPHONEOS_DEPLOYMENT_TARGET = 7.0; 269 | MTL_ENABLE_DEBUG_INFO = NO; 270 | SDKROOT = iphoneos; 271 | VALIDATE_PRODUCT = YES; 272 | }; 273 | name = Release; 274 | }; 275 | 58B511F01A9E6C8500147676 /* Debug */ = { 276 | isa = XCBuildConfiguration; 277 | buildSettings = { 278 | HEADER_SEARCH_PATHS = ( 279 | "$(inherited)", 280 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 281 | "$(SRCROOT)/../../../React/**", 282 | "$(SRCROOT)/../../react-native/React/**", 283 | "$(BUILT_PRODUCTS_DIR)", 284 | ); 285 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 286 | OTHER_LDFLAGS = "-ObjC"; 287 | PRODUCT_NAME = RNVersionNumber; 288 | SKIP_INSTALL = YES; 289 | }; 290 | name = Debug; 291 | }; 292 | 58B511F11A9E6C8500147676 /* Release */ = { 293 | isa = XCBuildConfiguration; 294 | buildSettings = { 295 | HEADER_SEARCH_PATHS = ( 296 | "$(inherited)", 297 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, 298 | "$(SRCROOT)/../../../React/**", 299 | "$(SRCROOT)/../../react-native/React/**", 300 | "$(BUILT_PRODUCTS_DIR)", 301 | ); 302 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 303 | OTHER_LDFLAGS = "-ObjC"; 304 | PRODUCT_NAME = RNVersionNumber; 305 | SKIP_INSTALL = YES; 306 | }; 307 | name = Release; 308 | }; 309 | /* End XCBuildConfiguration section */ 310 | 311 | /* Begin XCConfigurationList section */ 312 | 2858ECCD1F8B91B400610575 /* Build configuration list for PBXNativeTarget "RNVersionNumber-tvOS" */ = { 313 | isa = XCConfigurationList; 314 | buildConfigurations = ( 315 | 2858ECCE1F8B91B400610575 /* Debug */, 316 | 2858ECCF1F8B91B400610575 /* Release */, 317 | ); 318 | defaultConfigurationIsVisible = 0; 319 | defaultConfigurationName = Release; 320 | }; 321 | 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNVersionNumber" */ = { 322 | isa = XCConfigurationList; 323 | buildConfigurations = ( 324 | 58B511ED1A9E6C8500147676 /* Debug */, 325 | 58B511EE1A9E6C8500147676 /* Release */, 326 | ); 327 | defaultConfigurationIsVisible = 0; 328 | defaultConfigurationName = Release; 329 | }; 330 | 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNVersionNumber" */ = { 331 | isa = XCConfigurationList; 332 | buildConfigurations = ( 333 | 58B511F01A9E6C8500147676 /* Debug */, 334 | 58B511F11A9E6C8500147676 /* Release */, 335 | ); 336 | defaultConfigurationIsVisible = 0; 337 | defaultConfigurationName = Release; 338 | }; 339 | /* End XCConfigurationList section */ 340 | }; 341 | rootObject = 58B511D31A9E6C8500147676 /* Project object */; 342 | } 343 | --------------------------------------------------------------------------------