Skip to content

Commit 0e077b1

Browse files
bozaigaoSteven
andauthored
support to Expo (#486)
* support to Expo * update * update * update --------- Co-authored-by: Steven <steven@Stevens-MacBook-Pro.local>
1 parent 1767fe3 commit 0e077b1

File tree

15 files changed

+7714
-14
lines changed

15 files changed

+7714
-14
lines changed

Example/testHotUpdate/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@
5252
"detox",
5353
"dtrace-provider"
5454
]
55-
}
55+
}

Example/testHotUpdate/src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,4 @@ export default function Root() {
223223
</PaperProvider>
224224
</UpdateProvider>
225225
);
226-
}
226+
}

Example/testHotUpdate/update.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
"appId": 27509,
88
"appKey": "aQz3Uc2pA7gt_prDaQ4rbWRY"
99
}
10-
}
10+
}

Example/testHotUpdate/yarn.lock

Lines changed: 7566 additions & 0 deletions
Large diffs are not rendered by default.

android/build.gradle

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,42 @@ def supportsNamespace() {
2222
return major >= 8
2323
}
2424

25+
def isExpoProject() {
26+
def hasExpoModulesCore = rootProject.subprojects.any { it.name == 'expo-modules-core' }
27+
28+
def packageJsonFile = new File(rootProject.projectDir.parentFile, 'package.json')
29+
def hasExpoDependency = false
30+
if (packageJsonFile.exists()) {
31+
def packageJson = new groovy.json.JsonSlurper().parseText(packageJsonFile.text)
32+
hasExpoDependency = (packageJson.dependencies?.expo != null) ||
33+
(packageJson.devDependencies?.expo != null)
34+
}
35+
36+
return hasExpoModulesCore || hasExpoDependency
37+
}
38+
39+
def expoProject = isExpoProject()
40+
2541
apply plugin: 'com.android.library'
2642
if (isNewArchitectureEnabled()) {
2743
apply plugin: 'com.facebook.react'
2844
}
2945

46+
if (expoProject) {
47+
group = 'expo.modules.pushy'
48+
version = '1.0.0'
3049

31-
android {
50+
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
51+
apply from: expoModulesCorePlugin
52+
applyKotlinExpoModulesCorePlugin()
53+
useCoreDependencies()
54+
useExpoPublishing()
55+
} else {
56+
group = 'cn.reactnative.modules.update'
57+
version = '1.0.0'
58+
}
3259

60+
android {
3361
if (supportsNamespace()) {
3462
namespace "cn.reactnative.modules.update"
3563

@@ -41,7 +69,6 @@ android {
4169
}
4270
compileSdkVersion safeExtGet('compileSdkVersion', 28)
4371
buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
44-
4572
defaultConfig {
4673
minSdkVersion safeExtGet('minSdkVersion', 16)
4774
targetSdkVersion safeExtGet('targetSdkVersion', 27)
@@ -50,6 +77,7 @@ android {
5077
consumerProguardFiles "proguard.pro"
5178
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
5279
}
80+
5381
sourceSets {
5482
main {
5583
// let gradle pack the shared library into apk
@@ -59,6 +87,12 @@ android {
5987
} else {
6088
java.srcDirs += ['src/oldarch']
6189
}
90+
91+
if (expoProject) {
92+
java.srcDirs += ['java/expo/modules/pushy']
93+
} else {
94+
java.exclude 'expo/modules/pushy/**'
95+
}
6296
}
6397
}
6498

@@ -70,6 +104,10 @@ android {
70104
resValue("string", "pushy_build_time", "0")
71105
}
72106
}
107+
108+
lintOptions {
109+
abortOnError false
110+
}
73111
}
74112

75113
repositories {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package cn.reactnative.modules.update;
2+
3+
import androidx.annotation.Nullable;
4+
5+
public interface ReactNativeHostHandler {
6+
@Nullable
7+
String getJSBundleFile(boolean useDeveloperSupport);
8+
9+
@Nullable
10+
String getBundleAssetName(boolean useDeveloperSupport);
11+
12+
void onWillCreateReactInstance(boolean useDeveloperSupport);
13+
}

android/src/main/java/cn/reactnative/modules/update/UpdateContext.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77
import android.os.Build;
88
import android.os.Environment;
99
import android.util.Log;
10-
1110
import com.facebook.react.ReactInstanceManager;
12-
1311
import java.util.HashMap;
1412
import java.util.Map;
1513
import java.util.concurrent.Executor;
1614
import java.util.concurrent.Executors;
17-
1815
import java.io.File;
1916

2017
public class UpdateContext {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package expo.modules.pushy
2+
3+
import expo.modules.kotlin.modules.Module
4+
import expo.modules.kotlin.modules.ModuleDefinition
5+
6+
class ExpoPushyModule : Module() {
7+
override fun definition() = ModuleDefinition {
8+
Name("ExpoPushy")
9+
}
10+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package expo.modules.pushy;
2+
3+
import android.content.Context;
4+
import android.util.Log;
5+
import androidx.annotation.Nullable;
6+
import java.util.ArrayList;
7+
import java.util.HashMap;
8+
import java.util.List;
9+
import java.util.Map;
10+
import cn.reactnative.modules.update.UpdateContext;
11+
import expo.modules.core.interfaces.Package;
12+
import expo.modules.core.interfaces.ReactNativeHostHandler;
13+
14+
public class ExpoPushyPackage implements Package {
15+
@Override
16+
public List<ReactNativeHostHandler> createReactNativeHostHandlers(Context context) {
17+
List<ReactNativeHostHandler> handlers = new ArrayList<>();
18+
handlers.add(new ReactNativeHostHandler() {
19+
@Nullable
20+
@Override
21+
public String getJSBundleFile(boolean useDeveloperSupport) {
22+
return UpdateContext.getBundleUrl(context);
23+
}
24+
});
25+
return handlers;
26+
}
27+
}

expo-module.config.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"platforms": ["apple", "android"],
3+
"apple": {
4+
"modules": ["ExpoPushyModule"],
5+
"reactDelegateHandlers": ["ExpoPushyReactDelegateHandler"],
6+
"podspecPath":"react-native-update.podspec"
7+
},
8+
"android": {
9+
"modules": [
10+
"expo.modules.pushy.ExpoPushyModule"
11+
]
12+
}
13+
}

0 commit comments

Comments
 (0)