[Android] react-android's prefab has no react/renderer/components/scrollview headers, so a library cannot include ScrollView's component descriptor

Đang mở Phù hợp với người mới
#59,929 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
android
Lĩnh vực
build-system, mobile

Hướng nghiên cứu

Đọc packages/react-native/ReactAndroid/build.gradle.kts, đặc biệt là danh sách thư mục thành phần của preparePrefab quanh các dòng 219–227, rồi so sánh với các header thành phần được xuất. Issue báo cáo rằng thiếu rrc_scrollview trong khi các symbol ScrollView có trong libreactnative.so. Thêm các mục xuất header scrollview còn thiếu và xác minh rằng prefab bao gồm các header, đồng thời bản dựng native của reproducer phân giải được ScrollViewComponentDescriptor.h.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Description

The reactnative prefab module in the react-android AAR carries the headers of react/renderer/components/view, image, root, text and textinput, but none of react/renderer/components/scrollview. libreactnative.so defines ScrollView's shadow node and state (ScrollViewShadowNode::layout, ScrollViewShadowNode::updateStateIfNeeded, ScrollViewState::getContentSize, ScrollViewComponentName), so a library or app that builds against the prebuilt AAR can link them but cannot include ScrollViewShadowNode.h, ScrollViewComponentDescriptor.h or ScrollViewState.h; for example, to register a component descriptor that extends ScrollView's.

preparePrefab in packages/react-native/ReactAndroid/build.gradle.kts lists a Pair for each exported component folder (// rrc_textinput and its platform/android/ folder among them) and has none for rrc_scrollview: https://github.com/react/react-native/blob/1273ca128fa378e231dd351a65fb7d63fe0b6526/packages/react-native/ReactAndroid/build.gradle.kts#L219-L227

Steps to reproduce
  1. git clone https://github.com/YevheniiKotyrlo/rn-prefab-scrollview-headers-repro && cd rn-prefab-scrollview-headers-repro
  2. ./reproduce.sh. It installs ReproducerApp (React Native 0.90.0-nightly-20261111-1273ca128) and runs ./gradlew :app:externalNativeBuildDebug -PreactNativeArchitectures=arm64-v8a. The app's src/main/jni/CMakeLists.txt is the default app setup plus one file, scrollview/ScrollViewDescriptorProvider.cpp:
#include <react/renderer/components/view/ViewComponentDescriptor.h>
#include <react/renderer/components/scrollview/ScrollViewComponentDescriptor.h>

namespace facebook::react {

ComponentDescriptorProvider scrollViewComponentDescriptorProvider() {
  return concreteComponentDescriptorProvider<ScrollViewComponentDescriptor>();
}

} // namespace facebook::react

Expected: the scrollview include resolves from the prefab, as the view include on the line before it does.

Seen: the build stops at the scrollview include, and the prefab's react/renderer/components holds no scrollview folder. The release AAR from the same nightly has none either, while its jni/arm64-v8a/libreactnative.so defines the ScrollView symbols above.

React Native Version

0.90.0-nightly-20261111-1273ca128

Affected Platforms

Runtime - Android, Build - Windows

Output of npx @react-native-community/cli info
System:
  OS: Windows 11 10.0.26300
  CPU: "(32) x64 AMD Ryzen 9 9950X3D 16-Core Processor          "
  Memory: 181.10 GB / 255.67 GB
Binaries:
  Node:
    version: 26.12.1
    path: C:\Program Files\nodejs\node.EXE
  Yarn:
    version: 1.22.22
    path: C:\Users\<user>\AppData\Roaming\npm\yarn.CMD
  npm:
    version: 12.2.1
    path: C:\Program Files\nodejs\npm.CMD
  Watchman: Not Found
SDKs:
  Android SDK: Not Found
  Windows SDK:
    AllowDevelopmentWithoutDevLicense: Enabled
    Versions:
      - 10.0.19041.0
      - 10.0.26100.0
IDEs:
  Android Studio: AI-262.9437.185.2621.16467767
  Visual Studio: Not Found
Languages:
  Java:
    version: 17.0.20.1
    path: C:\Program Files\Microsoft\jdk-17.0.20.101-hotspot\bin\javac.EXE
  Ruby: Not Found
npmPackages:
  "@react-native-community/cli":
    installed: 21.0.0-alpha.1
    wanted: 21.0.0-alpha.1
  react:
    installed: 19.3.0
    wanted: 19.3.0
  react-native:
    installed: 0.90.0-nightly-20261111-1273ca128
    wanted: 0.90.0-nightly-20261111-1273ca128
  react-native-windows: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found
Stacktrace or Logs
MINGW64_NT-10.0-26300 x86_64, node v26.12.1, openjdk version "17.0.20.1" 2026-08-18 LTS
react-native 0.90.0-nightly-20261111-1273ca128
== ./gradlew :app:externalNativeBuildDebug -PreactNativeArchitectures=arm64-v8a
C/C++: ReproducerApp/android/app/src/main/jni/scrollview/ScrollViewDescriptorProvider.cpp:4:10: fatal error: 'react/renderer/components/scrollview/ScrollViewComponentDescriptor.h' file not found
BUILD FAILED in 35s
== react/renderer/components in react-android-0.90.0-nightly-20261111-1273ca128-SNAPSHOT-debug/prefab/modules/reactnative/include
androidtextinput
FBReactNativeSpec
image
root
text
textinput
view
SUMMARY: the react-android prefab has no react/renderer/components/scrollview headers
MANDATORY Reproducer

https://github.com/YevheniiKotyrlo/rn-prefab-scrollview-headers-repro

Screenshots and Videos

No response

Ngôn ngữ chính
C++
Star
127k
Fork
25.5k
Merge trung bình
3 ngày 18 giờ
Pull request đã merge (30 ngày)
188

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của react/react-native

Tất cả issue của react/react-native

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.