Commit Graph

11 Commits

Author SHA1 Message Date
Caleb Clarke
3e95645f45 Fix release builds on Android, take 2 (#1329)
Summary:
Changelog: Fixed react-native-flipper causing Android release builds to fail

https://github.com/facebook/flipper/issues/1325 made progress but did not quite fix https://github.com/facebook/flipper/issues/1303. Android Release builds would still fail because `PackageList` depended on `FlipperPackage` and couldn't find it in release builds. There doesn't appear to be a clear way to set up a debug-only package with React Native's Android autolinking (see https://github.com/react-native-community/cli/issues/1211), so this change creates an empty `FlipperPackage` to satisfy that dependency, while still avoiding bundling the Flipper library into the release build.

(manual linking also works, but seems less-desirable for consumers of the library)

## Changelog

Add an empty `FlipperPackage` to the `release` folder to satisfy the reference put in `PackageList` by the autolinker for release builds.

Pull Request resolved: https://github.com/facebook/flipper/pull/1329

Test Plan:
Verified that release builds did fail without this change (using ReactNativeFlipperExample app)

Successfully built a React Native Android Release app from Android Studio using this library and verified that the APK still did not contain Flipper. Built debug and verified that Flipper still worked as before.

Reviewed By: passy

Differential Revision: D23292543

Pulled By: mweststrate

fbshipit-source-id: cb897a0e6dcdc04e29d676596447ca9dd68182c8
2020-08-24 14:46:11 -07:00
Joao Alves
51e37311d0 Fix: Release builds on android (#1325)
Summary:
After `react-native-flipper` 0.48.0 I cannot build releases on android (I think that passed on CI tests because the example was running an older version of this package, 0.47.0).
So I moved all the `android/src/main` content to `android/src/debug` because we will not use Flipper in another Build Variant

## Changelog

I moved all content from `react-native-flipper/android/src/main` to `react-native-flipper/android/src/debug`.

Probably solves https://github.com/facebook/flipper/issues/1303
Pull Request resolved: https://github.com/facebook/flipper/pull/1325

Test Plan: Maybe create a custom CI script to verify if Flipper deps are present on Release Builds, [something like this](https://github.com/facebook/flipper/issues/1274#issue-641197153)

Reviewed By: cekkaewnumchai

Differential Revision: D22333432

Pulled By: passy

fbshipit-source-id: 4abbab5ecbe08d44752b2138569ff60d25724087
2020-07-02 04:07:59 -07:00
Janic Duplessis
912bfed0f8 Allow Flipper module instances to be created by applications (#786)
Summary:
This allows using the flipper RN module with TurboModules instead of using FlipperPackage.

## Changelog

[react-native-flipper] Allow Flipper module instances to be created by applications
Pull Request resolved: https://github.com/facebook/flipper/pull/786

Test Plan:
An instance of the Flipper module can now be created like this when using TurboModules:

```java
  Override
  public NativeModule getModule(String name, ReactApplicationContext reactContext) {
    switch (name) {
      ...
      case FlipperModule.NAME:
        return new FlipperModule(FlipperReactNativeJavaScriptPluginManager.getInstance(), reactContext);
      ...
    }
  }
```

Tested that it builds

Reviewed By: mweststrate

Differential Revision: D19812912

Pulled By: passy

fbshipit-source-id: 401b3e4552ea0cdb7444a2cf5d170c408edab4db
2020-02-10 05:54:55 -08:00
Pascal Hartig
3d66df2d86 Cleanup 4/4
Summary: I think that's it. Some more minor changes and removing an unused BUCK file.

Reviewed By: mweststrate

Differential Revision: D19471282

fbshipit-source-id: ceb85111f03a41141dca0bdd445cda12dfbac1c4
2020-01-24 07:00:15 -08:00
Pascal Hartig
2ec539acb1 Cleanup 3/n
Summary: Same treatment for FlipperReactNativeJavaScriptPlugin.

Reviewed By: mweststrate

Differential Revision: D19471257

fbshipit-source-id: b51d92074ae411c089f0010057f2b61ef6500de0
2020-01-24 07:00:15 -08:00
Pascal Hartig
4e77b37831 Cleanup 2/n
Summary:
Some more minor cleanups that don't (well, barely) affect
semantics.

- Fix singleton management in multi-threaded environments.
- Remove double assignment.
- Make all things final where they can be.
- Use ugly Hungarian notation.
- Weaken some types.

Reviewed By: mweststrate

Differential Revision: D19471227

fbshipit-source-id: 18833c3fe940f51b8d4cb3948a63387b8cd9316c
2020-01-24 07:00:14 -08:00
Pascal Hartig
6864556912 Cleanup 1/n
Summary:
Making some changes to make this more idiomatic and abide by
the Flipper/FB standards. This one just removes some unused
variables and annotations.

Reviewed By: jknoxville

Differential Revision: D19470676

fbshipit-source-id: 4beb516f00228b1d33e4e1b42d9bc4f8c29af565
2020-01-24 05:02:07 -08:00
Michel Weststrate
e306aeb010 Don't die when flipper isn't initialized and a plugin is used
Summary: This diff makes sure that the app doesn't die, or dies in a meaningful way if things are misconfigured.

Reviewed By: passy

Differential Revision: D19468273

fbshipit-source-id: 2471c263391906113446af57d795d1199eb1730e
2020-01-23 07:11:30 -08:00
Michel Weststrate
28fd95589f Made flipper plugins a little more robust
Summary: Added some assertions and string casts to make plugins a bit more robust

Reviewed By: passy

Differential Revision: D19427909

fbshipit-source-id: 46a3138805db865b538f745fae25ce1897e35736
2020-01-16 05:06:22 -08:00
Michel Weststrate
08e2d54f62 Make sure callbacks are not reused and reloading works
Summary:
This diff is part of the bigger task T60496135

This diff changes the RN support from crude to decent citizen, making sure we don't recycle callbacks over the bridge, use subscriptions were possible, and making sure connecting, disconnecting, etc works correctly

For example, connect and disconnect hooks should work.

Finally, throw in hot reloading into the mix, which causes the registerPlugin to be triggered another time, without the old one every been unloaded.
This should trigger a new 'onConnect' on the client, to make sure it can restore any state / subscriptions necessary, even though the never disappeared in the Java world.

These cases should all be handled well.

Reviewed By: jknoxville

Differential Revision: D19347330

fbshipit-source-id: de64a08f4043f01528c794430ccc3c717abf0180
2020-01-16 05:06:22 -08:00
Michel Weststrate
c7158f4517 Make it possible to write JS only plugins
Summary:
This diff is part of the bigger task T60496135

This diff is based on D18706643, extracting only the react native module parts

It implements the entire Android client api for JavaScript, so that there is feature parity. However this implementation is happy path only, and edge cases will be handled in separate diffs

Reviewed By: jknoxville

Differential Revision: D19310265

fbshipit-source-id: 589716fe059952bdde98df84ed250c5c6feaa118
2020-01-16 05:06:22 -08:00