Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Example/testHotUpdate/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,4 @@
"detox",
"dtrace-provider"
]
}
}
2 changes: 1 addition & 1 deletion Example/testHotUpdate/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -223,4 +223,4 @@ export default function Root() {
</PaperProvider>
</UpdateProvider>
);
}
}
2 changes: 1 addition & 1 deletion Example/testHotUpdate/update.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
"appId": 27509,
"appKey": "aQz3Uc2pA7gt_prDaQ4rbWRY"
}
}
}
7,566 changes: 7,566 additions & 0 deletions Example/testHotUpdate/yarn.lock

Large diffs are not rendered by default.

42 changes: 40 additions & 2 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,42 @@ def supportsNamespace() {
return major >= 8
}

def isExpoProject() {
def hasExpoModulesCore = rootProject.subprojects.any { it.name == 'expo-modules-core' }

def packageJsonFile = new File(rootProject.projectDir.parentFile, 'package.json')
def hasExpoDependency = false
if (packageJsonFile.exists()) {
def packageJson = new groovy.json.JsonSlurper().parseText(packageJsonFile.text)
hasExpoDependency = (packageJson.dependencies?.expo != null) ||
(packageJson.devDependencies?.expo != null)
}

return hasExpoModulesCore || hasExpoDependency
}

def expoProject = isExpoProject()

apply plugin: 'com.android.library'
if (isNewArchitectureEnabled()) {
apply plugin: 'com.facebook.react'
}

if (expoProject) {
group = 'expo.modules.pushy'
version = '1.0.0'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个version应该可以从package.json中读取吧

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

expo.modules.pushy属于native代码,不应该读取package.json里面的版本号吧,这里的逻辑借鉴的是
group = 'cn.reactnative.modules.update'
version = '1.0.0'

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

应该统一版本号,不过不是很重要,以后再说吧


android {
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
apply from: expoModulesCorePlugin
applyKotlinExpoModulesCorePlugin()
useCoreDependencies()
useExpoPublishing()
} else {
group = 'cn.reactnative.modules.update'
version = '1.0.0'
}

android {
if (supportsNamespace()) {
namespace "cn.reactnative.modules.update"

Expand All @@ -41,7 +69,6 @@ android {
}
compileSdkVersion safeExtGet('compileSdkVersion', 28)
buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')

defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 16)
targetSdkVersion safeExtGet('targetSdkVersion', 27)
Expand All @@ -50,6 +77,7 @@ android {
consumerProguardFiles "proguard.pro"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
}

sourceSets {
main {
// let gradle pack the shared library into apk
Expand All @@ -59,6 +87,12 @@ android {
} else {
java.srcDirs += ['src/oldarch']
}

if (expoProject) {
java.srcDirs += ['java/expo/modules/pushy']
} else {
java.exclude 'expo/modules/pushy/**'
}
}
}

Expand All @@ -70,6 +104,10 @@ android {
resValue("string", "pushy_build_time", "0")
}
}

lintOptions {
abortOnError false
}
}

repositories {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package cn.reactnative.modules.update;

import androidx.annotation.Nullable;

public interface ReactNativeHostHandler {
@Nullable
String getJSBundleFile(boolean useDeveloperSupport);

@Nullable
String getBundleAssetName(boolean useDeveloperSupport);

void onWillCreateReactInstance(boolean useDeveloperSupport);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@
import android.os.Build;
import android.os.Environment;
import android.util.Log;

import com.facebook.react.ReactInstanceManager;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import java.io.File;

public class UpdateContext {
Expand Down
10 changes: 10 additions & 0 deletions android/src/main/java/expo/modules/pushy/ExpoPushyModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package expo.modules.pushy

import expo.modules.kotlin.modules.Module
import expo.modules.kotlin.modules.ModuleDefinition

class ExpoPushyModule : Module() {
override fun definition() = ModuleDefinition {
Name("ExpoPushy")
}
}
27 changes: 27 additions & 0 deletions android/src/main/java/expo/modules/pushy/ExpoPushyPackage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package expo.modules.pushy;

import android.content.Context;
import android.util.Log;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.reactnative.modules.update.UpdateContext;
import expo.modules.core.interfaces.Package;
import expo.modules.core.interfaces.ReactNativeHostHandler;

public class ExpoPushyPackage implements Package {
@Override
public List<ReactNativeHostHandler> createReactNativeHostHandlers(Context context) {
List<ReactNativeHostHandler> handlers = new ArrayList<>();
handlers.add(new ReactNativeHostHandler() {
@Nullable
@Override
public String getJSBundleFile(boolean useDeveloperSupport) {
return UpdateContext.getBundleUrl(context);
}
});
return handlers;
}
}
13 changes: 13 additions & 0 deletions expo-module.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"platforms": ["apple", "android"],
"apple": {
"modules": ["ExpoPushyModule"],
"reactDelegateHandlers": ["ExpoPushyReactDelegateHandler"],
"podspecPath":"react-native-update.podspec"
},
"android": {
"modules": [
"expo.modules.pushy.ExpoPushyModule"
]
}
}
7 changes: 7 additions & 0 deletions ios/Expo/ExpoPushyModule.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import ExpoModulesCore

public class ExpoPushyModule: Module {
public func definition() -> ModuleDefinition {
Name("ExpoPushy")
}
}
10 changes: 10 additions & 0 deletions ios/Expo/ExpoPushyReactDelegateHandler.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import ExpoModulesCore
import react_native_update

public final class ExpoPushyReactDelegateHandler: ExpoReactDelegateHandler {
private weak var reactDelegate: ExpoReactDelegate?

public override func bundleURL(reactDelegate: ExpoReactDelegate) -> URL? {
return RCTPushy.bundleURL()
}
}
27 changes: 23 additions & 4 deletions react-native-update.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Pod::Spec.new do |s|
s.platform = :ios, "8.0"
s.platforms = { :ios => "11.0" }
s.source = { :git => 'https://github.com/reactnativecn/react-native-update.git', :tag => '#{s.version}' }
s.source_files = "ios/**/*.{h,m,mm,swift}"
s.source_files = Dir.glob("ios/**/*.{h,m,mm,swift}").reject { |f| f.start_with?("ios/Expo/") }
s.libraries = 'bz2', 'z'
s.vendored_libraries = 'RCTPushy/libRCTPushy.a'
s.pod_target_xcconfig = {
Expand All @@ -33,11 +33,25 @@ Pod::Spec.new do |s|
s.dependency "React-Core"
s.dependency 'SSZipArchive'

project_root = File.expand_path('../../', __dir__)
project_package_json = File.join(project_root, 'package.json')
is_expo_project = false

if (File.exist?(project_package_json))
package_json = JSON.parse(File.read(project_package_json))
has_expo_dependency = package_json['dependencies'] && package_json['dependencies']['expo']
has_expo_modules_core = Dir.exist?('node_modules/expo-modules-core')
is_expo_project = has_expo_dependency || has_expo_modules_core
if is_expo_project
s.dependency 'ExpoModulesCore'
end
end

s.subspec 'RCTPushy' do |ss|
ss.source_files = 'ios/RCTPushy/*.{h,m,mm,swift}'
ss.public_header_files = ['ios/RCTPushy/RCTPushy.h']
end

s.subspec 'HDiffPatch' do |ss|
ss.source_files = ['ios/RCTPushy/HDiffPatch/**/*.{h,m,c}',
'android/jni/hpatch.{h,c}',
Expand All @@ -47,7 +61,13 @@ Pod::Spec.new do |s|
'android/jni/lzma/C/Lzma2Dec.{h,c}']
ss.public_header_files = 'ios/RCTPushy/HDiffPatch/**/*.h'
end


if is_expo_project
s.subspec 'Expo' do |ss|
ss.source_files = 'ios/Expo/**/*.{h,m,mm,swift}'
end
end

if defined?(install_modules_dependencies()) != nil
install_modules_dependencies(s);
else
Expand All @@ -60,7 +80,6 @@ Pod::Spec.new do |s|
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
}

s.dependency "React-Codegen"
s.dependency "RCT-Folly"
s.dependency "RCTRequired"
Expand Down
2 changes: 1 addition & 1 deletion src/provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -316,10 +316,10 @@
[parseTestPayload],
);

useEffect(() => {

Check failure on line 319 in src/provider.tsx

View workflow job for this annotation

GitHub Actions / lint (20.x)

Delete `⏎····`
const parseLinking = (url: string | null) => {
if (!url) {

Check failure on line 321 in src/provider.tsx

View workflow job for this annotation

GitHub Actions / lint (20.x)

Delete `··`
return;

Check failure on line 322 in src/provider.tsx

View workflow job for this annotation

GitHub Actions / lint (20.x)

Replace `····},⏎····[client],⏎··` with `··},·[client]`
}
const params = new URL(url).searchParams;
const payload = {
Expand Down Expand Up @@ -368,4 +368,4 @@
};

/** @deprecated Please use `UpdateProvider` instead */
export const PushyProvider = UpdateProvider;
export const PushyProvider = UpdateProvider;
2 changes: 1 addition & 1 deletion src/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,4 @@
export interface UpdateTestPayload {
type: '__rnPushyVersionHash' | string | null;
data: any;
}
}

Check failure on line 97 in src/type.ts

View workflow job for this annotation

GitHub Actions / lint (20.x)

Insert `⏎`

Check warning on line 97 in src/type.ts

View workflow job for this annotation

GitHub Actions / lint (20.x)

Newline required at end of file but not found
Loading