hunk.code_window: ### If you choose to build for Android
   The first time you build the project you will be asked whether you'd like to upload a keystore or have us handle it for you. If you don't know what a keystore is, just leave it to us. Otherwise, feel free to upload your own.
   ```javascript
   [exp] No currently active or previous builds for this project.
   Would you like to upload a keystore or have us generate one for you?
   If you don't know what this means, let us handle it! :)
  
hunk.labels: keep keep keep keep keep replace keep keep keep keep keep
hunk.after_edit: ```bash
  
hunk.file_path: docs/versions/unversioned/guides/building-standalone-apps.md
hunk.type: replace
file: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   */
  
  #ifdef __cplusplus
  
  #include <memory>
  
  #import <Foundation/Foundation.h>
  
  /**
   * Type erased wrapper over any cxx value that can be passed as an argument
   * to native method.
   */
  
  @interface ABI28_0_0RCTManagedPointer: NSObject
  
  @property (nonatomic, readonly) void *voidPointer;
  
  - (instancetype)initWithPointer:(std::shared_ptr<void>)pointer;
  
  @end
  
  namespace facebook {
  namespace ReactABI28_0_0 {
  
  template <typename T, typename P>
  ABI28_0_0RCTManagedPointer *managedPointer(P initializer)
  {
    auto ptr = std::shared_ptr<void>(new T(initializer));
    return [[ABI28_0_0RCTManagedPointer alloc] initWithPointer:std::move(ptr)];
  }
  
  } }
  
  #endif
  