diff --git a/.gitattributes b/.gitattributes index 030ef14..e27f70f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,3 @@ *.pbxproj -text # specific for windows script files -*.bat text eol=crlf \ No newline at end of file +*.bat text eol=crlf diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..6e42fec --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,67 @@ +name: 🐛 Bug report +description: Report a reproducible bug or regression in this library. +labels: [bug] +body: + - type: markdown + attributes: + value: | + # Bug report + + 👋 Hi! + + **Please fill the following carefully before opening a new issue ❗** + *(Your issue may be closed if it doesn't provide the required pieces of information)* + - type: checkboxes + attributes: + label: Before submitting a new issue + description: Please perform simple checks first. + options: + - label: I tested using the latest version of the library, as the bug might be already fixed. + required: true + - label: I tested using a [supported version](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md) of react native. + required: true + - label: I checked for possible duplicate issues, with possible answers. + required: true + - type: textarea + id: summary + attributes: + label: Bug summary + description: | + Provide a clear and concise description of what the bug is. + If needed, you can also provide other samples: error messages / stack traces, screenshots, gifs, etc. + validations: + required: true + - type: input + id: library-version + attributes: + label: Library version + description: What version of the library are you using? + placeholder: "x.x.x" + validations: + required: true + - type: textarea + id: react-native-info + attributes: + label: Environment info + description: Run `react-native info` in your terminal and paste the results here. + render: shell + validations: + required: true + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce + description: | + You must provide a clear list of steps and code to reproduce the problem. + value: | + 1. … + 2. … + validations: + required: true + - type: input + id: reproducible-example + attributes: + label: Reproducible example repository + description: Please provide a link to a repository on GitHub with a reproducible example. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..5bc358e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Feature Request 💡 + url: https://github.com/exzos28/react-native-audio-analyzer/discussions/new?category=ideas + about: If you have a feature request, please create a new discussion on GitHub. + - name: Discussions on GitHub 💬 + url: https://github.com/exzos28/react-native-audio-analyzer/discussions + about: If this library works as promised but you need help, please ask questions there. diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index fb98c79..a613332 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -5,13 +5,13 @@ runs: using: composite steps: - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version-file: .nvmrc - - name: Cache dependencies + - name: Restore dependencies id: yarn-cache - uses: actions/cache@v3 + uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | **/node_modules @@ -25,3 +25,12 @@ runs: if: steps.yarn-cache.outputs.cache-hit != 'true' run: yarn install --immutable shell: bash + + - name: Cache dependencies + if: steps.yarn-cache.outputs.cache-hit != 'true' + uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + with: + path: | + **/node_modules + .yarn/install-state.gz + key: ${{ steps.yarn-cache.outputs.cache-primary-key }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c7ff3c..30a92d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup uses: ./.github/actions/setup @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup uses: ./.github/actions/setup @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup uses: ./.github/actions/setup @@ -56,13 +56,16 @@ jobs: TURBO_CACHE_DIR: .turbo/android steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup uses: ./.github/actions/setup + - name: Generate nitrogen code + run: yarn nitrogen + - name: Cache turborepo for Android - uses: actions/cache@v3 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ${{ env.TURBO_CACHE_DIR }} key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }} @@ -79,7 +82,7 @@ jobs: - name: Install JDK if: env.turbo_cache_hit != 1 - uses: actions/setup-java@v3 + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 with: distribution: 'zulu' java-version: '17' @@ -91,7 +94,7 @@ jobs: - name: Cache Gradle if: env.turbo_cache_hit != 1 - uses: actions/cache@v3 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: | ~/.gradle/wrapper @@ -107,18 +110,22 @@ jobs: yarn turbo run build:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" build-ios: - runs-on: macos-14 + runs-on: macos-latest env: + XCODE_VERSION: 16.2 TURBO_CACHE_DIR: .turbo/ios steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup uses: ./.github/actions/setup + - name: Generate nitrogen code + run: yarn nitrogen + - name: Cache turborepo for iOS - uses: actions/cache@v3 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: path: ${{ env.TURBO_CACHE_DIR }} key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }} @@ -133,24 +140,19 @@ jobs: echo "turbo_cache_hit=1" >> $GITHUB_ENV fi - - name: Cache cocoapods + - name: Use appropriate Xcode version if: env.turbo_cache_hit != 1 - id: cocoapods-cache - uses: actions/cache@v3 + uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 with: - path: | - **/ios/Pods - key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }} - restore-keys: | - ${{ runner.os }}-cocoapods- + xcode-version: ${{ env.XCODE_VERSION }} - name: Install cocoapods if: env.turbo_cache_hit != 1 && steps.cocoapods-cache.outputs.cache-hit != 'true' run: | - cd example/ios - pod install - env: - NO_FLIPPER: 1 + cd example + bundle install + bundle exec pod repo update --verbose + bundle exec pod install --project-directory=ios - name: Build example for iOS run: | diff --git a/.gitignore b/.gitignore index 148db35..77eda3f 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,7 @@ DerivedData *.ipa *.xcuserstate project.xcworkspace -.xcode.env.local +**/.xcode.env.local # Android/IJ # @@ -81,3 +81,8 @@ lib/ # React Native Codegen ios/generated android/generated + +# React Native Nitro Modules +nitrogen/ + +libs/generated diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..07c82da --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libs/miniaudio"] + path = libs/miniaudio + url = https://github.com/mackron/miniaudio.git diff --git a/.java-version b/.java-version deleted file mode 100644 index 98d9bcb..0000000 --- a/.java-version +++ /dev/null @@ -1 +0,0 @@ -17 diff --git a/.nvmrc b/.nvmrc index 3f430af..5f53e87 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18 +v20.19.0 diff --git a/AudioAnalyzer.podspec b/AudioAnalyzer.podspec new file mode 100644 index 0000000..ad4e5bd --- /dev/null +++ b/AudioAnalyzer.podspec @@ -0,0 +1,59 @@ +require "json" + +package = JSON.parse(File.read(File.join(__dir__, "package.json"))) + +# Run the miniaudio preparation script +script_path = File.join(__dir__, "scripts", "prepare_miniaudio.rb") +if File.exist?(script_path) + system("ruby #{script_path}") +else + puts "Warning: Miniaudio preparation script not found at #{script_path}" +end + +Pod::Spec.new do |s| + s.name = "AudioAnalyzer" + s.version = package["version"] + s.summary = package["description"] + s.homepage = package["homepage"] + s.license = package["license"] + s.authors = package["author"] + + s.platforms = { :ios => min_ios_version_supported } + s.source = { :git => "https://github.com/exzos28/react-native-audio-analyzer.git", :tag => "#{s.version}" } + + # Use pod_target_xcconfig instead of compiler_flags + s.pod_target_xcconfig = { + # C++ compiler flags for miniaudio on iOS + 'GCC_PREPROCESSOR_DEFINITIONS' => 'MA_NO_PTHREAD_IN_HEADER=1', + 'OTHER_CFLAGS' => '-DMA_NO_PTHREAD_IN_HEADER', + 'OTHER_LDFLAGS' => '-lm -lpthread', + 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++11', + 'CLANG_CXX_LIBRARY' => 'libstdc++' + } + + # Required frameworks for iOS audio (Core Audio) + s.frameworks = [ + 'AVFoundation' + ] + + s.source_files = [ + # Implementation (Swift) + "ios/**/*.{swift}", + # Autolinking/Registration (Objective-C++) + "ios/**/*.{m,mm}", + # Miniaudio implementation - compile as Objective-C (generated) + "libs/generated/miniaudio.m", + "libs/miniaudio/miniaudio.h", + # Implementation (C++ objects) + "cpp/**/*.{hpp,cpp}", + ] + s.public_header_files = "libs/miniaudio/miniaudio.h" + + s.dependency 'React-jsi' + s.dependency 'React-callinvoker' + + load 'nitrogen/generated/ios/AudioAnalyzer+autolinking.rb' + add_nitrogen_files(s) + + install_modules_dependencies(s) +end diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 78683cb..26db22c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,6 +19,21 @@ yarn > Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development. +This project uses Nitro Modules. If you're not familiar with how Nitro works, make sure to check the [Nitro Modules Docs](https://nitro.margelo.com/). + +You need to run [Nitrogen](https://nitro.margelo.com/docs/nitrogen) to generate the boilerplate code required for this project. The example app will not build without this step. + +Run **Nitrogen** in following cases: + +- When you make changes to any `*.nitro.ts` files. +- When running the project for the first time (since the generated files are not committed to the repository). + +To invoke **Nitrogen**, use the following command: + +```sh +yarn nitrogen +``` + The [example app](/example/) demonstrates usage of the library. You need to run it to test any changes you make. It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app. @@ -47,6 +62,14 @@ To run the example app on iOS: yarn example ios ``` +To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this: + +```sh +Running "AudioAnalyzerExample" with {"fabric":true,"initialProps":{"concurrentRoot":true},"rootTag":1} +``` + +Note the `"fabric":true` and `"concurrentRoot":true` properties. + Make sure your code passes TypeScript and ESLint. Run the following to verify: ```sh diff --git a/LICENSE b/LICENSE index e498e4c..c3ec4f7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 exzos +Copyright (c) 2025 exzos Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights diff --git a/README.md b/README.md index 2085f55..7896567 100644 --- a/README.md +++ b/README.md @@ -8,34 +8,203 @@ This package offers robust tools that enable developers to process audio files e With this library, unleash creativity by generating captivating audio waveforms from your audio tracks, providing an engaging visual representation of sound. -

- example -

+![Audio Waveform Example](https://github.com/exzos28/react-native-audio-analyzer/raw/main/images/image.png) -## Usage 🎶 +## Features ✨ -Usage example you can [find here](example/src/App.tsx) +- **Audio Analysis**: Easily analyze audio tracks to obtain amplitude data for visualization or analysis purposes +- **Flexible Visualization**: Visualize amplitude data in a customizable manner, allowing developers to create diverse representations based on audio characteristics, including stunning audio waveforms +- **Sample and Scale Data**: Utilize functions to sample and scale amplitude data, providing more granular control over visualization output +- **Platform Compatibility**: Compatible with both Android and iOS platforms, ensuring a consistent experience across devices +- **High Performance**: Built with C++ and miniaudio library for optimal performance +- **TypeScript Support**: Full TypeScript support with comprehensive type definitions ## Installation 🚀 -```sh -yarn add react-native-audio-analyzer +```bash +npm install react-native-audio-analyzer react-native-nitro-modules +# or +yarn add react-native-audio-analyzer react-native-nitro-modules +``` + +> **Note**: `react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/). + +### iOS Setup + +```bash cd ios && pod install ``` -## Features ✨ -- __Audio Analysis__: Easily analyze audio tracks to obtain amplitude data for visualization or analysis purposes. +## Usage 🎶 + +### Basic Usage + +```typescript +import { computeAmplitude } from 'react-native-audio-analyzer'; + +// Analyze audio file and get amplitude data +const amplitudeData = computeAmplitude('/path/to/audio.mp3', 1000); +console.log('Amplitude data:', amplitudeData); +``` + +### Creating Audio Waveforms + +```typescript +import React, { useCallback, useEffect, useState } from 'react'; +import { View, StyleSheet, ScrollView } from 'react-native'; +import { computeAmplitude } from 'react-native-audio-analyzer'; + +export default function AudioWaveform() { + const [amplitudeData, setAmplitudeData] = useState([]); + + const analyzeAudio = useCallback(async () => { + try { + const result = computeAmplitude( + '/path/to/your/audio.mp3', + 1000 // Number of amplitude samples to generate + ); + setAmplitudeData(result); + } catch (error) { + console.error('Error analyzing audio:', error); + } + }, []); + + useEffect(() => { + analyzeAudio(); + }, [analyzeAudio]); + + return ( + + + {amplitudeData.map((amplitude, index) => ( + + ))} + + + ); +} + +const styles = StyleSheet.create({ + container: { + flexGrow: 1, + }, + waveform: { + flex: 1, + flexDirection: 'row', + alignItems: 'center', + columnGap: 1, + }, + bar: { + width: 3, + backgroundColor: '#007AFF', + borderRadius: 1, + }, +}); +``` + +### Advanced Usage + +```typescript +import { computeAmplitude } from 'react-native-audio-analyzer'; + +// Customize the number of amplitude samples +const highResolution = computeAmplitude('/audio.mp3', 2000); // More detailed +const lowResolution = computeAmplitude('/audio.mp3', 100); // Less detailed + +// Process the amplitude data for different visualizations +const normalizedData = highResolution.map(amplitude => + Math.min(amplitude * 100, 1.0) // Normalize to 0-1 range +); + +// Create different visualization styles +const createWaveform = (data: number[], style: 'bars' | 'line' | 'area') => { + switch (style) { + case 'bars': + return data.map((amp, i) => ({ x: i, y: amp })); + case 'line': + return data.map((amp, i) => ({ x: i, y: amp })); + case 'area': + return data.map((amp, i) => ({ x: i, y: amp, height: amp })); + } +}; +``` + +## API Reference 📚 + +### `computeAmplitude(filePath: string, outputSampleCount: number): number[]` + +Analyzes an audio file and returns an array of amplitude values. + +#### Parameters -- __Flexible Visualization__: Visualize amplitude data in a customizable manner, allowing developers to create diverse representations based on audio characteristics, including stunning audio waveforms. +- `filePath` (string): Path to the audio file to analyze +- `outputSampleCount` (number): Number of amplitude samples to generate -- __Sample and Scale Data__: Utilize functions to sample and scale amplitude data, providing more granular control over visualization output. +#### Returns -- __Platform Compatibility__: Compatible with both Android and iOS platforms, ensuring a consistent experience across devices. +- `number[]`: Array of amplitude values between 0 and 1 +#### Example + +```typescript +const amplitudes = computeAmplitude('/path/to/song.mp3', 500); +// Returns: [0.1, 0.3, 0.5, 0.2, ...] (500 values) +``` + +## Supported Audio Formats 🎼 + +This library supports various audio formats through the miniaudio library: + +- **Lossy**: MP3, AAC, OGG Vorbis, Opus +- **Lossless**: FLAC, WAV, AIFF +- **Other**: WMA, M4A, and more + +## Performance Considerations ⚡ + +- The library uses native C++ code for optimal performance +- Audio processing is done efficiently with minimal memory usage +- Large audio files are processed in chunks to maintain responsiveness +- Consider using appropriate `outputSampleCount` values based on your visualization needs + +## Platform Support 📱 + +- ✅ iOS 12.0+ +- ✅ Android API 21+ +- ✅ React Native 0.70+ ## Contributing 🤝 -We welcome [contributions](CONTRIBUTING.md)! Learn more about how to contribute to this repository by checking out our contributing guide and development workflow. + +We welcome contributions! Please see our [contributing guide](CONTRIBUTING.md) to learn how to contribute to this repository and the development workflow. + +### Development Setup + +```bash +# Clone the repository +git clone https://github.com/exzos28/react-native-audio-analyzer.git +cd react-native-audio-analyzer + +# Install dependencies +yarn install + +# Run the example app +yarn example +``` ## License 📝 -This project is licensed under the MIT License. +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## Related Projects 🔗 + +- [react-native-nitro-modules](https://github.com/margelo/react-native-nitro-modules) - The underlying native module system +- [miniaudio](https://github.com/mackron/miniaudio) - The audio processing library + +--- + +Made with ❤️ by the React Native community diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt index 34b16d0..fca0988 100644 --- a/android/CMakeLists.txt +++ b/android/CMakeLists.txt @@ -1,54 +1,44 @@ +project(audioanalyzer) cmake_minimum_required(VERSION 3.9.0) -project(simple) +set(PACKAGE_NAME audioanalyzer) +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_CXX_STANDARD 20) +# Miniaudio compilation flags +add_definitions(-DMA_NO_PTHREAD_IN_HEADER=1) +set(CACHE_DIR ${CMAKE_SOURCE_DIR}/build) -set (BUILD_DIR ${CMAKE_SOURCE_DIR}/build) -set (FFMPEG_DIR ${BUILD_DIR}/ffmpeg) -set (FFMPEG_SO_DIR ${FFMPEG_DIR}/ffmpeg-built-6.1) -set (FFMPEG_ARCH_DIR ${FFMPEG_SO_DIR}/${ANDROID_ABI}) -set (FFMPEG_HEADERS ${FFMPEG_DIR}/ffmpeg-headers-5.1/include) +file(GLOB_RECURSE CORE_SRC RELATIVE ${CMAKE_SOURCE_DIR} "./src/main/cpp/*.cpp") +file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "../cpp/*.cpp") -add_library(simple - SHARED - ../cpp/AudioAnalyzer.cpp - ../cpp/AnalyzerRuntime.cpp - cpp-adapter.cpp -) - -include_directories( - ../cpp - ${FFMPEG_HEADERS} -) +# Add miniaudio source +set(MINIAUDIO_SRC "../libs/miniaudio/miniaudio.c") -set_target_properties(simple PROPERTIES - CXX_STANDARD 20 - CXX_STANDARD_REQUIRED ON - CXX_EXTENSIONS OFF - POSITION_INDEPENDENT_CODE ON +add_library( + ${PACKAGE_NAME} + SHARED + ${CORE_SRC} + ${SOURCES} + ${MINIAUDIO_SRC} ) -find_package(ReactAndroid REQUIRED CONFIG) -find_package(fbjni REQUIRED CONFIG) - -target_link_libraries(simple - ReactAndroid::jsi - ReactAndroid::turbomodulejsijni - ReactAndroid::react_nativemodule_core - android - fbjni::fbjni -) +# Add Nitrogen specs :) +include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/audioanalyzer+autolinking.cmake) -include_directories(${FFMPEG_ARCH_DIR}/include) +# Set up local includes +include_directories("src/main/cpp" "../cpp" "../libs/miniaudio") -add_library(avcodec SHARED IMPORTED) -add_library(avformat SHARED IMPORTED) -add_library(avutil SHARED IMPORTED) -add_library(swresample SHARED IMPORTED) +target_include_directories(${PACKAGE_NAME} PRIVATE "${CACHE_DIR}/download-cache") -set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${FFMPEG_ARCH_DIR}/libavcodec.so) -set_target_properties(avformat PROPERTIES IMPORTED_LOCATION ${FFMPEG_ARCH_DIR}/libavformat.so) -set_target_properties(avutil PROPERTIES IMPORTED_LOCATION ${FFMPEG_ARCH_DIR}/libavutil.so) -set_target_properties(swresample PROPERTIES IMPORTED_LOCATION ${FFMPEG_ARCH_DIR}/libswresample.so) +find_library(LOG_LIB log) +find_library(OPENSLES_LIB OpenSLES) +find_library(ANDROID_LIB android) -target_link_libraries(simple avcodec avformat avutil swresample log) +# Link all libraries together +target_link_libraries( + ${PACKAGE_NAME} + ${LOG_LIB} + ${OPENSLES_LIB} + ${ANDROID_LIB} +) diff --git a/android/build.gradle b/android/build.gradle index 3990bf8..4633c63 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,16 +1,7 @@ -def WORKING_DIRECTORY = "ffmpeg" - -def SO_SRC_URL = "https://github.com/exzos28/ffmpeg-built/archive/refs/tags/6.1.zip" -//TODO: Change name -def ARTIFACT_SO_LOCAL = "ffmpeg-built-6.1" - -def HEADER_SRC_URL = "https://github.com/exzos28/ffmpeg-headers/archive/refs/tags/5.1.zip" -//TODO: Change name -def ARTIFACT_HEADERS_LOCAL = "ffmpeg-headers-5.1" - buildscript { - // Buildscript is evaluated before everything else so we can't use getExtOrDefault - def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["AudioAnalyzer_kotlinVersion"] + ext.getExtOrDefault = {name -> + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['AudioAnalyzer_' + name] + } repositories { google() @@ -18,12 +9,9 @@ buildscript { } dependencies { - classpath "com.android.tools.build:gradle:7.2.1" + classpath "com.android.tools.build:gradle:8.7.2" // noinspection DifferentKotlinGradleVersion - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - - - classpath("de.undercouch:gradle-download-task:5.0.1") + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}" } } @@ -32,55 +20,19 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -def isNewArchitectureEnabled() { - return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" -} - apply plugin: "com.android.library" apply plugin: "kotlin-android" -apply plugin: "de.undercouch.download" - - -if (isNewArchitectureEnabled()) { - apply plugin: "com.facebook.react" -} +apply from: '../nitrogen/generated/android/audioanalyzer+autolinking.gradle' -def resolveBuildType() { - Gradle gradle = getGradle() - String tskReqStr = gradle.getStartParameter().getTaskRequests()['args'].toString() - - return tskReqStr.contains('Release') ? 'release' : 'debug' -} - -def getExtOrDefault(name) { - return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["AudioAnalyzer_" + name] -} +apply plugin: "com.facebook.react" def getExtOrIntegerDefault(name) { return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["AudioAnalyzer_" + name]).toInteger() } -def supportsNamespace() { - def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.') - def major = parsed[0].toInteger() - def minor = parsed[1].toInteger() - - // Namespace support was added in 7.3.0 - return (major == 7 && minor >= 3) || major >= 8 -} - android { - if (supportsNamespace()) { - namespace "com.audioanalyzer" + namespace "com.margelo.nitro.audioanalyzer" - sourceSets { - main { - manifest.srcFile "src/main/AndroidManifestNew.xml" - } - } - } - - ndkVersion getExtOrDefault("ndkVersion") compileSdkVersion getExtOrIntegerDefault("compileSdkVersion") defaultConfig { @@ -89,17 +41,22 @@ android { externalNativeBuild { cmake { - arguments "-DANDROID_STL=c++_shared" - cppFlags "-O2 -frtti -fexceptions -Wall -fstack-protector-all" + cppFlags "-frtti -fexceptions -Wall -fstack-protector-all" + arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON" abiFilters (*reactNativeArchitectures()) + + buildTypes { + debug { + cppFlags "-O1 -g" + } + release { + cppFlags "-O2" + } + } } } } - buildFeatures { - prefab true - } - externalNativeBuild { cmake { path "CMakeLists.txt" @@ -107,18 +64,31 @@ android { } packagingOptions { - doNotStrip resolveBuildType() == 'debug' ? "**/**/*.so" : '' excludes = [ - "META-INF", - "META-INF/**", - "**/libjsi.so", - "**/libc++_shared.so", - "**/libreact_nativemodule_core.so", - "**/libturbomodulejsijni.so", - "**/libfbjni.so" + "META-INF", + "META-INF/**", + "**/libc++_shared.so", + "**/libfbjni.so", + "**/libjsi.so", + "**/libfolly_json.so", + "**/libfolly_runtime.so", + "**/libglog.so", + "**/libhermes.so", + "**/libhermes-executor-debug.so", + "**/libhermes_executor.so", + "**/libreactnative.so", + "**/libreactnativejni.so", + "**/libturbomodulejsijni.so", + "**/libreact_nativemodule_core.so", + "**/libjscexecutor.so" ] } + buildFeatures { + buildConfig true + prefab true + } + buildTypes { release { minifyEnabled false @@ -134,36 +104,13 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - - tasks.register('downloadAarFile', Download) { - src SO_SRC_URL - onlyIfNewer true - overwrite false - dest layout.buildDirectory.file(ARTIFACT_SO_LOCAL) - } - - tasks.register('downloadAndUnzipAarFile', Copy) { - dependsOn downloadAarFile - from zipTree(downloadAarFile.dest) - into layout.buildDirectory.dir(WORKING_DIRECTORY) - } - - tasks.register('downloadHeaders', Download) { - src HEADER_SRC_URL - onlyIfNewer true - overwrite false - dest layout.buildDirectory.file(ARTIFACT_HEADERS_LOCAL) - } - - tasks.register('downloadAndUnzipHeaders', Copy) { - dependsOn downloadHeaders - from zipTree(downloadHeaders.dest) - into layout.buildDirectory.dir(WORKING_DIRECTORY) - } - - afterEvaluate { - preBuild.dependsOn downloadAndUnzipAarFile - preBuild.dependsOn downloadAndUnzipHeaders + sourceSets { + main { + java.srcDirs += [ + "generated/java", + "generated/jni" + ] + } } } @@ -175,10 +122,8 @@ repositories { def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { - // For < 0.71, this will be from the local maven repo - // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" + implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation project(":react-native-nitro-modules") } diff --git a/android/cpp-adapter.cpp b/android/cpp-adapter.cpp deleted file mode 100644 index 365d17c..0000000 --- a/android/cpp-adapter.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include -#include -#include "AnalyzerRuntime.h" - -using namespace facebook; - -static jobject unistylesModule = nullptr; - -extern "C" -JNIEXPORT void JNICALL -Java_com_audioanalyzer_AudioAnalyzerModule_nativeInstall(JNIEnv *env, jobject thiz, jlong jsi, jobject callInvokerHolder) { - auto runtime = reinterpret_cast(jsi); - - auto callInvoker{ - jni::alias_ref{ reinterpret_cast(callInvokerHolder)} -> cthis() ->getCallInvoker() - }; - - std::shared_ptr analyzerRuntime = std::make_shared(*runtime, callInvoker); - - jsi::Object hostObject = jsi::Object::createFromHostObject(*runtime, analyzerRuntime); - runtime->global().setProperty(*runtime, "__EXZOS_ANALYZER__", std::move(hostObject)); -} diff --git a/android/gradle.properties b/android/gradle.properties index 36e911d..e2b8c8a 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ -AudioAnalyzer_kotlinVersion=1.7.0 -AudioAnalyzer_minSdkVersion=21 -AudioAnalyzer_targetSdkVersion=31 -AudioAnalyzer_compileSdkVersion=31 -AudioAnalyzer_ndkversion=21.4.7075529 +AudioAnalyzer_kotlinVersion=2.0.21 +AudioAnalyzer_minSdkVersion=24 +AudioAnalyzer_targetSdkVersion=34 +AudioAnalyzer_compileSdkVersion=35 +AudioAnalyzer_ndkVersion=27.1.12297006 diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index d64cd49..0000000 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 1af9e09..0000000 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew deleted file mode 100755 index 1aa94a4..0000000 --- a/android/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat deleted file mode 100644 index 93e3f59..0000000 --- a/android/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 6a808ca..a2f47b6 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,3 +1,2 @@ - + diff --git a/android/src/main/AndroidManifestNew.xml b/android/src/main/AndroidManifestNew.xml deleted file mode 100644 index a2f47b6..0000000 --- a/android/src/main/AndroidManifestNew.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/android/src/main/cpp/cpp-adapter.cpp b/android/src/main/cpp/cpp-adapter.cpp new file mode 100644 index 0000000..6ca9e60 --- /dev/null +++ b/android/src/main/cpp/cpp-adapter.cpp @@ -0,0 +1,6 @@ +#include +#include "audioanalyzerOnLoad.hpp" + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { + return margelo::nitro::audioanalyzer::initialize(vm); +} diff --git a/android/src/main/java/com/audioanalyzer/AudioAnalyzerModule.kt b/android/src/main/java/com/audioanalyzer/AudioAnalyzerModule.kt deleted file mode 100644 index bdf5f4e..0000000 --- a/android/src/main/java/com/audioanalyzer/AudioAnalyzerModule.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.audioanalyzer - -import android.util.Log -import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.bridge.ReactContextBaseJavaModule -import com.facebook.react.bridge.ReactMethod -import com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder - -class AudioAnalyzerModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { - override fun getName() = NAME - companion object { - const val NAME = "AudioAnalyzerModule" - } - - @ReactMethod(isBlockingSynchronousMethod = true) - fun install(): Boolean { - return try { - System.loadLibrary("simple") - - this.reactApplicationContext.javaScriptContextHolder?.let { contextHolder -> - this.reactApplicationContext.catalystInstance.jsCallInvokerHolder?.let { callInvokerHolder: CallInvokerHolder -> - this.nativeInstall(contextHolder.get(), callInvokerHolder) - - Log.i(NAME, "Installed TestApp \uD83E\uDD84!") - - return true - } - } - - false - } catch (e: Exception) { - return false - } - } - - private external fun nativeInstall(jsi: Long, callInvoker: CallInvokerHolder) -} diff --git a/android/src/main/java/com/audioanalyzer/AudioAnalyzerPackage.kt b/android/src/main/java/com/audioanalyzer/AudioAnalyzerPackage.kt deleted file mode 100644 index db27eb2..0000000 --- a/android/src/main/java/com/audioanalyzer/AudioAnalyzerPackage.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.audioanalyzer - -import android.view.View -import com.facebook.react.ReactPackage -import com.facebook.react.bridge.NativeModule -import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.uimanager.ReactShadowNode -import com.facebook.react.uimanager.ViewManager - -class AudioAnalyzerPackage: ReactPackage { - override fun createNativeModules(reactContext: ReactApplicationContext): MutableList { - return mutableListOf(AudioAnalyzerModule(reactContext)) - } - - override fun createViewManagers(reactContext: ReactApplicationContext): MutableList>> { - return mutableListOf() - } -} diff --git a/android/src/main/java/com/margelo/nitro/audioanalyzer/AudioAnalyzerPackage.kt b/android/src/main/java/com/margelo/nitro/audioanalyzer/AudioAnalyzerPackage.kt new file mode 100644 index 0000000..a761ad7 --- /dev/null +++ b/android/src/main/java/com/margelo/nitro/audioanalyzer/AudioAnalyzerPackage.kt @@ -0,0 +1,22 @@ +package com.margelo.nitro.audioanalyzer + +import com.facebook.react.TurboReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.module.model.ReactModuleInfoProvider + +class AudioAnalyzerPackage : TurboReactPackage() { + override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? { + return null + } + + override fun getReactModuleInfoProvider(): ReactModuleInfoProvider { + return ReactModuleInfoProvider { HashMap() } + } + + companion object { + init { + System.loadLibrary("audioanalyzer") + } + } +} diff --git a/babel.config.js b/babel.config.js index 29f3a60..0c05fd6 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,5 +1,12 @@ module.exports = { - presets: [ - ['module:react-native-builder-bob/babel-preset', { modules: 'commonjs' }], + overrides: [ + { + exclude: /\/node_modules\//, + presets: ['module:react-native-builder-bob/babel-preset'], + }, + { + include: /\/node_modules\//, + presets: ['module:@react-native/babel-preset'], + }, ], }; diff --git a/cpp/AnalyzerRuntime.cpp b/cpp/AnalyzerRuntime.cpp deleted file mode 100644 index d94ba06..0000000 --- a/cpp/AnalyzerRuntime.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "AnalyzerRuntime.h" -#include "AudioAnalyzer.h" - -using namespace audioanalyzer; - -AnalyzerRuntime::AnalyzerRuntime(jsi::Runtime &runtime, - std::shared_ptr callInvoker) - : _rt(runtime), callInvoker_(callInvoker) {} - -jsi::Value AnalyzerRuntime::multiply(double a, double b) { - return jsi::Value(a * b); -} - -jsi::Value AnalyzerRuntime::analyze(std::string filename, double groupBySeconds) { - - std::vector amplitudeDataList = audioanalyzer::analyzeAudio(filename, - groupBySeconds); - - jsi::Array jsArray(this->_rt, amplitudeDataList.size()); - - for (size_t i = 0; i < amplitudeDataList.size(); ++i) { - const AmplitudeData &data = amplitudeDataList[i]; - - jsi::Object jsObject(this->_rt); - jsObject.setProperty(this->_rt, "time", data.timeInSeconds); - jsObject.setProperty(this->_rt, "amplitude", data.amplitude); - - jsArray.setValueAtIndex(this->_rt, i, std::move(jsObject)); - } - - return jsArray; -} - -std::vector AnalyzerRuntime::getPropertyNames(jsi::Runtime &runtime) { - std::vector result; - result.push_back(jsi::PropNameID::forAscii(runtime, "multiply")); - result.push_back(jsi::PropNameID::forAscii(runtime, "analyze")); - return result; -} - -jsi::Value AnalyzerRuntime::get(jsi::Runtime &runtime, const jsi::PropNameID &name) { - auto propName = name.utf8(runtime); - if (propName == "multiply") { - return AnalyzerRuntime::_createMultiplyFunction(runtime, this); - } else if (propName == "analyze") { - return AnalyzerRuntime::_createAnalyzeFunction(runtime, this); - } - return jsi::Value::undefined(); -} - -jsi::Function AnalyzerRuntime::_createMultiplyFunction(jsi::Runtime &runtime, AnalyzerRuntime *testAppRuntime) { - return jsi::Function::createFromHostFunction( - runtime, jsi::PropNameID::forAscii(runtime, "multiply"), 2, - [testAppRuntime](jsi::Runtime &runtime, const jsi::Value &, const jsi::Value *args, - size_t count) -> jsi::Value { - if (count != 2 || !args[0].isNumber() || !args[1].isNumber()) { - throw jsi::JSError(runtime, "multiply expects two numbers"); - } - return testAppRuntime->multiply(args[0].asNumber(), args[1].asNumber()); - }); -} - - -jsi::Function AnalyzerRuntime::_createAnalyzeFunction(jsi::Runtime &runtime, AnalyzerRuntime *testAppRuntime) { - return jsi::Function::createFromHostFunction( - runtime, jsi::PropNameID::forAscii(runtime, "analyze"), 2, - [testAppRuntime](jsi::Runtime &runtime, const jsi::Value &, const jsi::Value *args, - size_t count) -> jsi::Value { - if (count != 2 || !args[0].isString() || !args[1].isNumber()) { - throw jsi::JSError(runtime, - "analyze expects filepath as String and groupBySeconds as number"); - } - return testAppRuntime->analyze(args[0].asString(runtime).utf8(runtime), args[1].asNumber()); - }); -} diff --git a/cpp/AnalyzerRuntime.h b/cpp/AnalyzerRuntime.h deleted file mode 100644 index 5a5e746..0000000 --- a/cpp/AnalyzerRuntime.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include -#include -#include - -using namespace facebook; - -class AnalyzerRuntime : public jsi::HostObject { -public: - AnalyzerRuntime(jsi::Runtime &runtime, std::shared_ptr callInvoker); - - jsi::Value multiply(double a, double b); - jsi::Value analyze(std::string filename, double groupBySeconds); - - std::vector getPropertyNames(jsi::Runtime &runtime) override; - - jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override; - -private: - jsi::Runtime &_rt; - std::shared_ptr callInvoker_; // TODO: Run on different thread - - static jsi::Function _createMultiplyFunction(jsi::Runtime &runtime, AnalyzerRuntime *testAppRuntime); - static jsi::Function _createAnalyzeFunction(jsi::Runtime &runtime, AnalyzerRuntime *testAppRuntime); -}; - diff --git a/cpp/AudioAnalyzer.cpp b/cpp/AudioAnalyzer.cpp index 4132764..5f42117 100644 --- a/cpp/AudioAnalyzer.cpp +++ b/cpp/AudioAnalyzer.cpp @@ -1,137 +1,107 @@ -#include "AudioAnalyzer.h" -#include +#include "AudioAnalyzer.hpp" +#include "miniaudio.h" + #include -#include +#include +#include + +#define LOG_TAG "HybridAudioAnalyzer" + +using namespace margelo::nitro::audioanalyzer; + +bool AudioAnalyzer::decodeAudioFile(const std::string &filePath, std::vector &pcmData, unsigned int &sampleRate) +{ + ma_decoder decoder; + ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 0, 0); + ma_result file = ma_decoder_init_file(filePath.c_str(), &config, &decoder); + if (file != MA_SUCCESS) + { + std::cerr << "Failed to init decoder for " << filePath << std::endl; + return false; + } -extern "C" { -#include -#include -} + sampleRate = decoder.outputSampleRate; -namespace audioanalyzer { + ma_uint64 totalFrames = 0; + if (ma_decoder_get_length_in_pcm_frames(&decoder, &totalFrames) != MA_SUCCESS) + { + std::cerr << "Failed to get length in pcm frames" << std::endl; + ma_decoder_uninit(&decoder); + return false; + } -std::vector analyzeAudio(const std::string& filename, double groupBySeconds) { - std::vector amplitudeData; + size_t totalSamples = static_cast(totalFrames * decoder.outputChannels); + pcmData.resize(totalSamples); - if (groupBySeconds <= 0) { - throw FFmpegException("groupBySeconds must be greater than 0"); - } + ma_uint64 framesRead = 0; + ma_result result = ma_decoder_read_pcm_frames(&decoder, pcmData.data(), totalFrames, &framesRead); + ma_decoder_uninit(&decoder); - // Allocate memory for the AVFormatContext - AVFormatContext *formatContext = avformat_alloc_context(); - if (!formatContext) { - throw FFmpegException("Failed to allocate AVFormatContext"); + if (result != MA_SUCCESS) + { + std::cerr << "Failed to read PCM frames" << std::endl; + return false; } - // Open the input file - if (avformat_open_input(&formatContext, filename.c_str(), nullptr, nullptr) != 0) { - avformat_free_context(formatContext); - throw FFmpegException("Failed to open input file"); + if (framesRead != totalFrames) + { + std::cerr << "Warning: Frames read (" << framesRead << ") != total frames (" << totalFrames << ")" << std::endl; } - // Find stream information - if (avformat_find_stream_info(formatContext, nullptr) < 0) { - avformat_close_input(&formatContext); - throw FFmpegException("Failed to find stream information"); - } + return framesRead > 0; +} - // Find the best audio stream - int audioStreamIndex = av_find_best_stream(formatContext, AVMEDIA_TYPE_AUDIO, -1, -1, nullptr, 0); - if (audioStreamIndex < 0) { - avformat_close_input(&formatContext); - throw FFmpegException("Failed to find audio stream"); - } +std::vector AudioAnalyzer::computeAmplitude(const std::string &filePath, double outputSampleCount = 1000) +{ + size_t outputSampleCountInt = static_cast(outputSampleCount); + std::vector pcm; + unsigned int sampleRate = 0; - // Get codec parameters and find the corresponding decoder - AVCodecParameters *codecParameters = formatContext->streams[audioStreamIndex]->codecpar; - const AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id); - if (!codec) { - avformat_close_input(&formatContext); - throw FFmpegException("Failed to find codec"); + // Decode audio file into PCM data + if (!decodeAudioFile(filePath, pcm, sampleRate)) + { + return {}; } - // Allocate memory for the AVCodecContext - AVCodecContext *codecContext = avcodec_alloc_context3(codec); - if (!codecContext) { - avformat_close_input(&formatContext); - throw FFmpegException("Failed to allocate AVCodecContext"); - } + std::vector result; - // Set codec parameters - if (avcodec_parameters_to_context(codecContext, codecParameters) < 0) { - avformat_close_input(&formatContext); - avcodec_free_context(&codecContext); - throw FFmpegException("Failed to set codec parameters"); + size_t totalSamples = pcm.size(); + if (totalSamples == 0 || outputSampleCount == 0) + { + // Return empty result if no samples or zero output requested + return result; } - // Open the codec - if (avcodec_open2(codecContext, codec, nullptr) < 0) { - avformat_close_input(&formatContext); - avcodec_free_context(&codecContext); - throw FFmpegException("Failed to open codec"); - } + // Calculate base block size and remainder to evenly split PCM into outputSampleCount blocks + size_t baseBlockSize = totalSamples / outputSampleCount; + size_t remainder = totalSamples % outputSampleCountInt; + + size_t offset = 0; + for (size_t i = 0; i < outputSampleCount; ++i) + { + // Distribute remainder samples to the first 'remainder' blocks for even split + size_t currentBlockSize = baseBlockSize + (i < remainder ? 1 : 0); + + if (currentBlockSize == 0) + { + // If block size is zero (e.g., outputSampleCount > totalSamples), push zero amplitude + result.push_back(0.0); + continue; + } - // Allocate memory for AVPacket and AVFrame - AVPacket packet; - AVFrame *frame = av_frame_alloc(); - - // Initialize variables for audio analysis - int sampleRate = codecContext->sample_rate; - double accumulatedAmplitude = 0.0; - long sampleCount = 0; - double currentTimeGroup = 0.0; - - // Read frames from the input file - while (av_read_frame(formatContext, &packet) >= 0) { - if (packet.stream_index == audioStreamIndex) { - // Send the packet to the codec - if (avcodec_send_packet(codecContext, &packet) < 0) { - break; - } - - // Receive frames from the codec - while (avcodec_receive_frame(codecContext, frame) >= 0) { - double timestampInSeconds = frame->pts * av_q2d(formatContext->streams[audioStreamIndex]->time_base); - - // Calculate amplitude for each sample in the frame - for (int i = 0; i < frame->nb_samples; i++) { - for (int ch = 0; ch < codecContext->ch_layout.nb_channels; ch++) { - if (frame->data[ch]) { - // Check if the index is within bounds - if (i < frame->linesize[ch]) { - accumulatedAmplitude += frame->data[ch][i]; - sampleCount++; - - // Calculate amplitude for the specified groupBySeconds - if ((timestampInSeconds - currentTimeGroup) >= groupBySeconds) { - double amplitudePerGroup = accumulatedAmplitude / sampleCount; - - AmplitudeData data{}; - data.timeInSeconds = currentTimeGroup; - data.amplitude = amplitudePerGroup; - - amplitudeData.push_back(data); - - accumulatedAmplitude = 0.0; - sampleCount = 0; - currentTimeGroup += groupBySeconds; - } - } - } - } - } - } + double sum = 0.0; + // Sum absolute values of samples in the current block + for (size_t j = 0; j < currentBlockSize; ++j) + { + sum += std::abs(pcm[offset + j]); } + // Compute average amplitude for the block + double avg = sum / currentBlockSize; + result.push_back(avg); - // Release the packet - av_packet_unref(&packet); + // Move offset forward by current block size + offset += currentBlockSize; } - // Clean up resources - avformat_close_input(&formatContext); - avcodec_free_context(&codecContext); - av_frame_free(&frame); - - return amplitudeData; -} + return result; } diff --git a/cpp/AudioAnalyzer.h b/cpp/AudioAnalyzer.h deleted file mode 100644 index ade1fd0..0000000 --- a/cpp/AudioAnalyzer.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef AUDIOANALYZER_H -#define AUDIOANALYZER_H - -#include -#include - -namespace audioanalyzer { - struct AmplitudeData { - double amplitude; - double timeInSeconds; - }; - - class FFmpegException : public std::exception { - private: - std::string message; - - public: - explicit FFmpegException(const char* msg) noexcept - : message(msg) {} - - const char* what() const noexcept override { - return message.c_str(); - } - - const std::string& getMessage() const noexcept { - return message; - } - }; - - std::vector analyzeAudio(const std::string& filename, double groupBySeconds); -} - -#endif // AUDIOANALYZER_H diff --git a/cpp/AudioAnalyzer.hpp b/cpp/AudioAnalyzer.hpp new file mode 100644 index 0000000..5e6dba8 --- /dev/null +++ b/cpp/AudioAnalyzer.hpp @@ -0,0 +1,13 @@ +#include "HybridAudioAnalyzerSpec.hpp" +#include +#include + +namespace margelo::nitro::audioanalyzer { +struct AudioAnalyzer: public audioanalyzer::HybridAudioAnalyzerSpec { + AudioAnalyzer() : HybridObject(TAG) {} + std::vector computeAmplitude(const std::string& filePath, double samplesPerBlock) override; + + bool decodeAudioFile(const std::string& filePath, std::vector& pcmData, unsigned int& sampleRate); + }; +} + diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..16b00bb --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,29 @@ +import { fixupConfigRules } from '@eslint/compat'; +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import prettier from 'eslint-plugin-prettier'; +import { defineConfig } from 'eslint/config'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default defineConfig([ + { + extends: fixupConfigRules(compat.extends('@react-native', 'prettier')), + plugins: { prettier }, + rules: { + 'react/react-in-jsx-scope': 'off', + 'prettier/prettier': 'error', + }, + }, + { + ignores: ['node_modules/', 'lib/'], + }, +]); diff --git a/example/Gemfile b/example/Gemfile index 2a7ce35..6a4c5f1 100644 --- a/example/Gemfile +++ b/example/Gemfile @@ -6,3 +6,11 @@ ruby ">= 2.6.10" # Exclude problematic versions of cocoapods and activesupport that causes build failures. gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' +gem 'xcodeproj', '< 1.26.0' +gem 'concurrent-ruby', '< 1.3.4' + +# Ruby 3.4.0 has removed some libraries from the standard library. +gem 'bigdecimal' +gem 'logger' +gem 'benchmark' +gem 'mutex_m' diff --git a/example/Gemfile.lock b/example/Gemfile.lock index 536ed3a..2d8e20c 100644 --- a/example/Gemfile.lock +++ b/example/Gemfile.lock @@ -5,32 +5,26 @@ GEM base64 nkf rexml - activesupport (7.2.2.1) - base64 - benchmark (>= 0.3) - bigdecimal - concurrent-ruby (~> 1.0, >= 1.3.1) - connection_pool (>= 2.2.5) - drb + activesupport (6.1.7.10) + concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) - logger (>= 1.4.2) minitest (>= 5.1) - securerandom (>= 0.3) - tzinfo (~> 2.0, >= 2.0.5) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) atomos (0.1.3) - base64 (0.2.0) - benchmark (0.4.0) - bigdecimal (3.1.9) + base64 (0.3.0) + benchmark (0.4.1) + bigdecimal (3.2.2) claide (1.1.0) - cocoapods (1.16.2) + cocoapods (1.15.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.16.2) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -44,8 +38,8 @@ GEM molinillo (~> 0.8.0) nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.27.0, < 2.0) - cocoapods-core (1.16.2) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.15.2) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -65,52 +59,58 @@ GEM netrc (~> 0.11) cocoapods-try (1.2.0) colored2 (3.1.2) - concurrent-ruby (1.3.5) - connection_pool (2.5.0) - drb (2.2.1) + concurrent-ruby (1.3.3) escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - ffi (1.17.1) + ffi (1.17.2) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - httpclient (2.8.3) + httpclient (2.9.0) + mutex_m i18n (1.14.7) concurrent-ruby (~> 1.0) - json (2.10.1) - logger (1.6.6) + json (2.7.6) + logger (1.7.0) minitest (5.25.4) molinillo (0.8.0) - nanaimo (0.4.0) + mutex_m (0.3.0) + nanaimo (0.3.0) nap (1.1.0) netrc (0.11.0) nkf (0.2.0) public_suffix (4.0.7) rexml (3.4.1) ruby-macho (2.5.1) - securerandom (0.4.1) typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - xcodeproj (1.27.0) + xcodeproj (1.25.1) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.4.0) + nanaimo (~> 0.3.0) rexml (>= 3.3.6, < 4.0) + zeitwerk (2.6.18) PLATFORMS ruby DEPENDENCIES activesupport (>= 6.1.7.5, != 7.1.0) + benchmark + bigdecimal cocoapods (>= 1.13, != 1.15.1, != 1.15.0) + concurrent-ruby (< 1.3.4) + logger + mutex_m + xcodeproj (< 1.26.0) RUBY VERSION - ruby 3.3.5p100 + ruby 2.6.10p210 BUNDLED WITH - 2.5.18 + 1.17.2 diff --git a/example/README.md b/example/README.md index 12470c3..3e2c3f8 100644 --- a/example/README.md +++ b/example/README.md @@ -2,58 +2,76 @@ This is a new [**React Native**](https://reactnative.dev) project, bootstrapped # Getting Started ->**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. +> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding. -## Step 1: Start the Metro Server +## Step 1: Start Metro -First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. +First, you will need to run **Metro**, the JavaScript build tool for React Native. -To start Metro, run the following command from the _root_ of your React Native project: +To start the Metro dev server, run the following command from the root of your React Native project: -```bash -# using npm +```sh +# Using npm npm start # OR using Yarn yarn start ``` -## Step 2: Start your Application +## Step 2: Build and run your app -Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: +With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app: -### For Android +### Android -```bash -# using npm +```sh +# Using npm npm run android # OR using Yarn yarn android ``` -### For iOS +### iOS -```bash -# using npm +For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps). + +The first time you create a new project, run the Ruby bundler to install CocoaPods itself: + +```sh +bundle install +``` + +Then, and every time you update your native dependencies, run: + +```sh +bundle exec pod install +``` + +For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html). + +```sh +# Using npm npm run ios # OR using Yarn yarn ios ``` -If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. +If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device. + +This is one way to run your app — you can also build it directly from Android Studio or Xcode. -This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. +## Step 3: Modify your app -## Step 3: Modifying your App +Now that you have successfully run the app, let's make changes! -Now that you have successfully run the app, let's modify it. +Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh). -1. Open `App.tsx` in your text editor of choice and edit some lines. -2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes! +When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload: - For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes! +- **Android**: Press the R key twice or select **"Reload"** from the **Dev Menu**, accessed via Ctrl + M (Windows/Linux) or Cmd ⌘ + M (macOS). +- **iOS**: Press R in iOS Simulator. ## Congratulations! :tada: @@ -62,11 +80,11 @@ You've successfully run and modified your React Native App. :partying_face: ### Now what? - If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). -- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). +- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started). # Troubleshooting -If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. +If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. # Learn More diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 58d6db8..9e50641 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -63,14 +63,14 @@ def enableProguardInReleaseBuilds = false * The preferred build flavor of JavaScriptCore (JSC) * * For example, to use the international variant, you can use: - * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ -def jscFlavor = 'org.webkit:android-jsc:+' +def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' android { ndkVersion rootProject.ext.ndkVersion diff --git a/example/android/app/src/main/java/audioanalyzer/example/MainApplication.kt b/example/android/app/src/main/java/audioanalyzer/example/MainApplication.kt index bb409dd..10fd4db 100644 --- a/example/android/app/src/main/java/audioanalyzer/example/MainApplication.kt +++ b/example/android/app/src/main/java/audioanalyzer/example/MainApplication.kt @@ -9,6 +9,7 @@ import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping import com.facebook.soloader.SoLoader class MainApplication : Application(), ReactApplication { @@ -34,7 +35,7 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - SoLoader.init(this, false) + SoLoader.init(this, OpenSourceMergedSoMapping) if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app. load() diff --git a/example/android/build.gradle b/example/android/build.gradle index df1ce4d..9766946 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,11 +1,11 @@ buildscript { ext { - buildToolsVersion = "34.0.0" - minSdkVersion = 23 - compileSdkVersion = 34 - targetSdkVersion = 34 - ndkVersion = "26.1.10909125" - kotlinVersion = "1.9.24" + buildToolsVersion = "35.0.0" + minSdkVersion = 24 + compileSdkVersion = 35 + targetSdkVersion = 35 + ndkVersion = "27.1.12297006" + kotlinVersion = "2.0.21" } repositories { google() diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 9fb1566..5e24e3a 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -32,7 +32,7 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # your application. You should enable this flag either if you want # to write custom TurboModules/Fabric components OR use libraries that # are providing them. -newArchEnabled=false +newArchEnabled=true # Use this property to enable or disable the Hermes JS engine. # If set to false, you will be using JSC instead. diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar index e644113..9bbc975 100644 Binary files a/example/android/gradle/wrapper/gradle-wrapper.jar and b/example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 6f7a6eb..37f853b 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/example/android/gradlew b/example/android/gradlew index b740cf1..faf9300 100755 --- a/example/android/gradlew +++ b/example/android/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -203,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat index 25da30d..9d21a21 100644 --- a/example/android/gradlew.bat +++ b/example/android/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 005a984..20968b7 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,4 +1,6 @@ +pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } +plugins { id("com.facebook.react.settings") } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } rootProject.name = 'audioanalyzer.example' -apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/example/ios/AudioAnalyzerExample-Bridging-Header.h b/example/ios/AudioAnalyzerExample-Bridging-Header.h deleted file mode 100644 index e11d920..0000000 --- a/example/ios/AudioAnalyzerExample-Bridging-Header.h +++ /dev/null @@ -1,3 +0,0 @@ -// -// Use this file to import your target's public headers that you would like to expose to Swift. -// diff --git a/example/ios/AudioAnalyzerExample.xcodeproj/project.pbxproj b/example/ios/AudioAnalyzerExample.xcodeproj/project.pbxproj index 12a8247..c944fb6 100644 --- a/example/ios/AudioAnalyzerExample.xcodeproj/project.pbxproj +++ b/example/ios/AudioAnalyzerExample.xcodeproj/project.pbxproj @@ -7,57 +7,27 @@ objects = { /* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* AudioAnalyzerExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* AudioAnalyzerExampleTests.m */; }; 0C80B921A6F3F58F76C31292 /* libPods-AudioAnalyzerExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-AudioAnalyzerExample.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 3CE76864BF9AF85DD0E9FCC5 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 37CC0C9AD7EE641A8E4936C6 /* PrivacyInfo.xcprivacy */; }; - 7699B88040F8A987B510C191 /* libPods-AudioAnalyzerExample-AudioAnalyzerExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-AudioAnalyzerExample-AudioAnalyzerExampleTests.a */; }; + 3E2A48756C3A0BB858C332FE /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = AudioAnalyzerExample; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* AudioAnalyzerExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AudioAnalyzerExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* AudioAnalyzerExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AudioAnalyzerExampleTests.m; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* AudioAnalyzerExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AudioAnalyzerExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = AudioAnalyzerExample/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = AudioAnalyzerExample/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AudioAnalyzerExample/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = AudioAnalyzerExample/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = AudioAnalyzerExample/main.m; sourceTree = ""; }; 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = AudioAnalyzerExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-AudioAnalyzerExample-AudioAnalyzerExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AudioAnalyzerExample-AudioAnalyzerExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 37CC0C9AD7EE641A8E4936C6 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = AudioAnalyzerExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; 3B4392A12AC88292D35C810B /* Pods-AudioAnalyzerExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AudioAnalyzerExample.debug.xcconfig"; path = "Target Support Files/Pods-AudioAnalyzerExample/Pods-AudioAnalyzerExample.debug.xcconfig"; sourceTree = ""; }; 5709B34CF0A7D63546082F79 /* Pods-AudioAnalyzerExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AudioAnalyzerExample.release.xcconfig"; path = "Target Support Files/Pods-AudioAnalyzerExample/Pods-AudioAnalyzerExample.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.debug.xcconfig"; sourceTree = ""; }; 5DCACB8F33CDC322A6C60F78 /* libPods-AudioAnalyzerExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-AudioAnalyzerExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = AudioAnalyzerExample/AppDelegate.swift; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = AudioAnalyzerExample/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.release.xcconfig"; path = "Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7699B88040F8A987B510C191 /* libPods-AudioAnalyzerExample-AudioAnalyzerExampleTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -69,34 +39,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* AudioAnalyzerExampleTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* AudioAnalyzerExampleTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = AudioAnalyzerExampleTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; 13B07FAE1A68108700A75B9A /* AudioAnalyzerExample */ = { isa = PBXGroup; children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, + 761780EC2CA45674006654EE /* AppDelegate.swift */, 13B07FB61A68108700A75B9A /* Info.plist */, 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, - 13B07FB71A68108700A75B9A /* main.m */, 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, - 37CC0C9AD7EE641A8E4936C6 /* PrivacyInfo.xcprivacy */, ); name = AudioAnalyzerExample; sourceTree = ""; @@ -106,7 +56,6 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 5DCACB8F33CDC322A6C60F78 /* libPods-AudioAnalyzerExample.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-AudioAnalyzerExample-AudioAnalyzerExampleTests.a */, ); name = Frameworks; sourceTree = ""; @@ -123,7 +72,6 @@ children = ( 13B07FAE1A68108700A75B9A /* AudioAnalyzerExample */, 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* AudioAnalyzerExampleTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, BBD78D7AC51CEA395F1C20DB /* Pods */, @@ -137,7 +85,6 @@ isa = PBXGroup; children = ( 13B07F961A680F5B00A75B9A /* AudioAnalyzerExample.app */, - 00E356EE1AD99517003FC87E /* AudioAnalyzerExampleTests.xctest */, ); name = Products; sourceTree = ""; @@ -147,8 +94,6 @@ children = ( 3B4392A12AC88292D35C810B /* Pods-AudioAnalyzerExample.debug.xcconfig */, 5709B34CF0A7D63546082F79 /* Pods-AudioAnalyzerExample.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -156,27 +101,6 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* AudioAnalyzerExampleTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "AudioAnalyzerExampleTests" */; - buildPhases = ( - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = AudioAnalyzerExampleTests; - productName = AudioAnalyzerExampleTests; - productReference = 00E356EE1AD99517003FC87E /* AudioAnalyzerExampleTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 13B07F861A680F5B00A75B9A /* AudioAnalyzerExample */ = { isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AudioAnalyzerExample" */; @@ -206,10 +130,6 @@ attributes = { LastUpgradeCheck = 1210; TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; 13B07F861A680F5B00A75B9A = { LastSwiftMigration = 1120; }; @@ -229,26 +149,18 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* AudioAnalyzerExample */, - 00E356ED1AD99517003FC87E /* AudioAnalyzerExampleTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 13B07F8E1A680F5B00A75B9A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 3CE76864BF9AF85DD0E9FCC5 /* PrivacyInfo.xcprivacy in Resources */, + 3E2A48756C3A0BB858C332FE /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -288,28 +200,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample/Pods-AudioAnalyzerExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -332,23 +222,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -366,105 +239,20 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample/Pods-AudioAnalyzerExample-resources.sh\"\n"; showEnvVarsInLog = 0; }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests/Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* AudioAnalyzerExampleTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 13B07F871A680F5B00A75B9A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* AudioAnalyzerExample */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = AudioAnalyzerExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = audioanalyzer.example; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AudioAnalyzerExample.app/AudioAnalyzerExample"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-AudioAnalyzerExample-AudioAnalyzerExampleTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = AudioAnalyzerExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = audioanalyzer.example; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AudioAnalyzerExample.app/AudioAnalyzerExample"; - }; - name = Release; - }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-AudioAnalyzerExample.debug.xcconfig */; @@ -474,6 +262,7 @@ CURRENT_PROJECT_VERSION = 1; ENABLE_BITCODE = NO; INFOPLIST_FILE = AudioAnalyzerExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -500,6 +289,7 @@ CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; INFOPLIST_FILE = AudioAnalyzerExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -521,7 +311,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; @@ -549,7 +338,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; @@ -568,9 +356,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD = ""; - LDPLUSPLUS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -605,7 +391,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; @@ -633,7 +418,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CXX = ""; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; @@ -645,9 +429,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD = ""; - LDPLUSPLUS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -680,15 +462,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "AudioAnalyzerExampleTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AudioAnalyzerExample" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/example/ios/AudioAnalyzerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/AudioAnalyzerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/example/ios/AudioAnalyzerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/example/ios/AudioAnalyzerExample/AppDelegate.h b/example/ios/AudioAnalyzerExample/AppDelegate.h deleted file mode 100644 index 5d28082..0000000 --- a/example/ios/AudioAnalyzerExample/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : RCTAppDelegate - -@end diff --git a/example/ios/AudioAnalyzerExample/AppDelegate.mm b/example/ios/AudioAnalyzerExample/AppDelegate.mm deleted file mode 100644 index 7753b9b..0000000 --- a/example/ios/AudioAnalyzerExample/AppDelegate.mm +++ /dev/null @@ -1,31 +0,0 @@ -#import "AppDelegate.h" - -#import - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.moduleName = @"AudioAnalyzerExample"; - // You can add your custom initial props in the dictionary below. - // They will be passed down to the ViewController used by React Native. - self.initialProps = @{}; - - return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ - return [self bundleURL]; -} - -- (NSURL *)bundleURL -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -@end diff --git a/example/ios/AudioAnalyzerExample/AppDelegate.swift b/example/ios/AudioAnalyzerExample/AppDelegate.swift new file mode 100644 index 0000000..36de0f8 --- /dev/null +++ b/example/ios/AudioAnalyzerExample/AppDelegate.swift @@ -0,0 +1,48 @@ +import UIKit +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? + + var reactNativeDelegate: ReactNativeDelegate? + var reactNativeFactory: RCTReactNativeFactory? + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + let delegate = ReactNativeDelegate() + let factory = RCTReactNativeFactory(delegate: delegate) + delegate.dependencyProvider = RCTAppDependencyProvider() + + reactNativeDelegate = delegate + reactNativeFactory = factory + + window = UIWindow(frame: UIScreen.main.bounds) + + factory.startReactNative( + withModuleName: "AudioAnalyzerExample", + in: window, + launchOptions: launchOptions + ) + + return true + } +} + +class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { + override func sourceURL(for bridge: RCTBridge) -> URL? { + self.bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} diff --git a/example/ios/AudioAnalyzerExample/PrivacyInfo.xcprivacy b/example/ios/AudioAnalyzerExample/PrivacyInfo.xcprivacy index 41da7af..41b8317 100644 --- a/example/ios/AudioAnalyzerExample/PrivacyInfo.xcprivacy +++ b/example/ios/AudioAnalyzerExample/PrivacyInfo.xcprivacy @@ -10,7 +10,6 @@ NSPrivacyAccessedAPITypeReasons C617.1 - 0A2A.1 @@ -21,15 +20,6 @@ CA92.1 - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryDiskSpace - NSPrivacyAccessedAPITypeReasons - - 85F4.1 - E174.1 - - NSPrivacyAccessedAPIType NSPrivacyAccessedAPICategorySystemBootTime diff --git a/example/ios/AudioAnalyzerExample/main.m b/example/ios/AudioAnalyzerExample/main.m deleted file mode 100644 index d645c72..0000000 --- a/example/ios/AudioAnalyzerExample/main.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/example/ios/AudioAnalyzerExampleTests/AudioAnalyzerExampleTests.m b/example/ios/AudioAnalyzerExampleTests/AudioAnalyzerExampleTests.m deleted file mode 100644 index 465f575..0000000 --- a/example/ios/AudioAnalyzerExampleTests/AudioAnalyzerExampleTests.m +++ /dev/null @@ -1,66 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface AudioAnalyzerExampleTests : XCTestCase - -@end - -@implementation AudioAnalyzerExampleTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; -#ifdef DEBUG - RCTSetLogFunction( - ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); -#endif - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view - matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - -#ifdef DEBUG - RCTSetLogFunction(RCTDefaultLogFunction); -#endif - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - -@end diff --git a/example/ios/AudioAnalyzerExampleTests/Info.plist b/example/ios/AudioAnalyzerExampleTests/Info.plist deleted file mode 100644 index ba72822..0000000 --- a/example/ios/AudioAnalyzerExampleTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/example/ios/File.swift b/example/ios/File.swift deleted file mode 100644 index fb57215..0000000 --- a/example/ios/File.swift +++ /dev/null @@ -1,6 +0,0 @@ -// -// File.swift -// AudioAnalyzerExample -// - -import Foundation diff --git a/example/ios/Podfile b/example/ios/Podfile index 5a812e2..7590b98 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,3 +1,5 @@ +ENV['RCT_NEW_ARCH_ENABLED'] = '1' + # Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( @@ -23,11 +25,6 @@ target 'AudioAnalyzerExample' do :app_path => "#{Pod::Config.instance.installation_root}/.." ) - target 'AudioAnalyzerExampleTests' do - inherit! :complete - # Pods for testing - end - post_install do |installer| # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 react_native_post_install( diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index be7094b..b268e74 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,70 +1,125 @@ PODS: + - AudioAnalyzer (3.0.0-alpha.1): + - DoubleConversion + - glog + - hermes-engine + - NitroModules + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-callinvoker + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - boost (1.84.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.75.3) - - ffmpeg-kit-ios-audio (6.0) - - fmt (9.1.0) + - fast_float (6.1.4) + - FBLazyVector (0.79.2) + - fmt (11.0.2) - glog (0.3.5) - - hermes-engine (0.75.3): - - hermes-engine/Pre-built (= 0.75.3) - - hermes-engine/Pre-built (0.75.3) - - RCT-Folly (2024.01.01.00): + - hermes-engine (0.79.2): + - hermes-engine/Pre-built (= 0.79.2) + - hermes-engine/Pre-built (0.79.2) + - NitroModules (0.27.3): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-callinvoker + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RCT-Folly (2024.11.18.00): - boost - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - RCT-Folly/Default (= 2024.01.01.00) - - RCT-Folly/Default (2024.01.01.00): + - RCT-Folly/Default (= 2024.11.18.00) + - RCT-Folly/Default (2024.11.18.00): - boost - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - RCT-Folly/Fabric (2024.01.01.00): + - RCT-Folly/Fabric (2024.11.18.00): - boost - DoubleConversion - - fmt (= 9.1.0) - - glog - - RCTDeprecation (0.75.3) - - RCTRequired (0.75.3) - - RCTTypeSafety (0.75.3): - - FBLazyVector (= 0.75.3) - - RCTRequired (= 0.75.3) - - React-Core (= 0.75.3) - - React (0.75.3): - - React-Core (= 0.75.3) - - React-Core/DevSupport (= 0.75.3) - - React-Core/RCTWebSocket (= 0.75.3) - - React-RCTActionSheet (= 0.75.3) - - React-RCTAnimation (= 0.75.3) - - React-RCTBlob (= 0.75.3) - - React-RCTImage (= 0.75.3) - - React-RCTLinking (= 0.75.3) - - React-RCTNetwork (= 0.75.3) - - React-RCTSettings (= 0.75.3) - - React-RCTText (= 0.75.3) - - React-RCTVibration (= 0.75.3) - - React-callinvoker (0.75.3) - - React-Core (0.75.3): - - glog - - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - RCTDeprecation (0.79.2) + - RCTRequired (0.79.2) + - RCTTypeSafety (0.79.2): + - FBLazyVector (= 0.79.2) + - RCTRequired (= 0.79.2) + - React-Core (= 0.79.2) + - React (0.79.2): + - React-Core (= 0.79.2) + - React-Core/DevSupport (= 0.79.2) + - React-Core/RCTWebSocket (= 0.79.2) + - React-RCTActionSheet (= 0.79.2) + - React-RCTAnimation (= 0.79.2) + - React-RCTBlob (= 0.79.2) + - React-RCTImage (= 0.79.2) + - React-RCTLinking (= 0.79.2) + - React-RCTNetwork (= 0.79.2) + - React-RCTSettings (= 0.79.2) + - React-RCTText (= 0.79.2) + - React-RCTVibration (= 0.79.2) + - React-callinvoker (0.79.2) + - React-Core (0.79.2): + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - - React-Core/Default (= 0.75.3) + - React-Core/Default (= 0.79.2) - React-cxxreact - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/CoreModulesHeaders (0.75.3): + - React-Core/CoreModulesHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -73,15 +128,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/Default (0.75.3): + - React-Core/Default (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-cxxreact - React-featureflags @@ -89,33 +145,35 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/DevSupport (0.75.3): + - React-Core/DevSupport (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - - React-Core/Default (= 0.75.3) - - React-Core/RCTWebSocket (= 0.75.3) + - React-Core/Default (= 0.79.2) + - React-Core/RCTWebSocket (= 0.79.2) - React-cxxreact - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.75.3): + - React-Core/RCTActionSheetHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -124,15 +182,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTAnimationHeaders (0.75.3): + - React-Core/RCTAnimationHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -141,15 +200,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTBlobHeaders (0.75.3): + - React-Core/RCTBlobHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -158,15 +218,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTImageHeaders (0.75.3): + - React-Core/RCTImageHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -175,15 +236,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTLinkingHeaders (0.75.3): + - React-Core/RCTLinkingHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -192,15 +254,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTNetworkHeaders (0.75.3): + - React-Core/RCTNetworkHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -209,15 +272,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTSettingsHeaders (0.75.3): + - React-Core/RCTSettingsHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -226,15 +290,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTTextHeaders (0.75.3): + - React-Core/RCTTextHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -243,15 +308,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTVibrationHeaders (0.75.3): + - React-Core/RCTVibrationHeaders (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -260,132 +326,162 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTWebSocket (0.75.3): + - React-Core/RCTWebSocket (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - - React-Core/Default (= 0.75.3) + - React-Core/Default (= 0.79.2) - React-cxxreact - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-CoreModules (0.75.3): + - React-CoreModules (0.79.2): - DoubleConversion - - fmt (= 9.1.0) - - RCT-Folly (= 2024.01.01.00) - - RCTTypeSafety (= 0.75.3) - - React-Core/CoreModulesHeaders (= 0.75.3) - - React-jsi (= 0.75.3) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - RCT-Folly (= 2024.11.18.00) + - RCTTypeSafety (= 0.79.2) + - React-Core/CoreModulesHeaders (= 0.79.2) + - React-jsi (= 0.79.2) - React-jsinspector + - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.75.3) - - ReactCodegen + - React-RCTFBReactNativeSpec + - React-RCTImage (= 0.79.2) - ReactCommon - - SocketRocket (= 0.7.0) - - React-cxxreact (0.75.3): + - SocketRocket (= 0.7.1) + - React-cxxreact (0.79.2): - boost - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.75.3) - - React-debug (= 0.75.3) - - React-jsi (= 0.75.3) + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-debug (= 0.79.2) + - React-jsi (= 0.79.2) - React-jsinspector - - React-logger (= 0.75.3) - - React-perflogger (= 0.75.3) - - React-runtimeexecutor (= 0.75.3) - - React-debug (0.75.3) - - React-defaultsnativemodule (0.75.3): + - React-jsinspectortracing + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - React-runtimeexecutor (= 0.79.2) + - React-timing (= 0.79.2) + - React-debug (0.79.2) + - React-defaultsnativemodule (0.79.2): + - hermes-engine + - RCT-Folly + - React-domnativemodule + - React-featureflagsnativemodule + - React-hermes + - React-idlecallbacksnativemodule + - React-jsi + - React-jsiexecutor + - React-microtasksnativemodule + - React-RCTFBReactNativeSpec + - React-domnativemodule (0.79.2): + - hermes-engine + - RCT-Folly + - React-Fabric + - React-FabricComponents + - React-graphics + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric (0.79.2): - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core + - React-cxxreact - React-debug - - React-domnativemodule - - React-Fabric + - React-Fabric/animations (= 0.79.2) + - React-Fabric/attributedstring (= 0.79.2) + - React-Fabric/componentregistry (= 0.79.2) + - React-Fabric/componentregistrynative (= 0.79.2) + - React-Fabric/components (= 0.79.2) + - React-Fabric/consistency (= 0.79.2) + - React-Fabric/core (= 0.79.2) + - React-Fabric/dom (= 0.79.2) + - React-Fabric/imagemanager (= 0.79.2) + - React-Fabric/leakchecker (= 0.79.2) + - React-Fabric/mounting (= 0.79.2) + - React-Fabric/observers (= 0.79.2) + - React-Fabric/scheduler (= 0.79.2) + - React-Fabric/telemetry (= 0.79.2) + - React-Fabric/templateprocessor (= 0.79.2) + - React-Fabric/uimanager (= 0.79.2) - React-featureflags - - React-featureflagsnativemodule - React-graphics - - React-idlecallbacksnativemodule - - React-ImageManager - - React-microtasksnativemodule - - React-NativeModulesApple - - React-RCTFabric + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger - React-rendererdebug + - React-runtimescheduler - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - Yoga - - React-domnativemodule (0.75.3): + - React-Fabric/animations (0.79.2): - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core + - React-cxxreact - React-debug - - React-Fabric - - React-FabricComponents - React-featureflags - React-graphics - - React-ImageManager - - React-NativeModulesApple - - React-RCTFabric + - React-hermes + - React-jsi + - React-jsiexecutor + - React-logger - React-rendererdebug + - React-runtimescheduler - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - Yoga - - React-Fabric (0.75.3): + - React-Fabric/attributedstring (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.75.3) - - React-Fabric/attributedstring (= 0.75.3) - - React-Fabric/componentregistry (= 0.75.3) - - React-Fabric/componentregistrynative (= 0.75.3) - - React-Fabric/components (= 0.75.3) - - React-Fabric/core (= 0.75.3) - - React-Fabric/dom (= 0.75.3) - - React-Fabric/imagemanager (= 0.75.3) - - React-Fabric/leakchecker (= 0.75.3) - - React-Fabric/mounting (= 0.75.3) - - React-Fabric/observers (= 0.75.3) - - React-Fabric/scheduler (= 0.75.3) - - React-Fabric/telemetry (= 0.75.3) - - React-Fabric/templateprocessor (= 0.75.3) - - React-Fabric/uimanager (= 0.75.3) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -393,12 +489,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.75.3): + - React-Fabric/componentregistry (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -406,6 +503,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -413,12 +511,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.75.3): + - React-Fabric/componentregistrynative (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -426,6 +525,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -433,19 +533,25 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.75.3): + - React-Fabric/components (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.79.2) + - React-Fabric/components/root (= 0.79.2) + - React-Fabric/components/scrollview (= 0.79.2) + - React-Fabric/components/view (= 0.79.2) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -453,12 +559,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.75.3): + - React-Fabric/components/legacyviewmanagerinterop (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -466,6 +573,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -473,22 +581,21 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.75.3): + - React-Fabric/components/root (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.75.3) - - React-Fabric/components/root (= 0.75.3) - - React-Fabric/components/view (= 0.75.3) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -496,12 +603,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.75.3): + - React-Fabric/components/scrollview (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -509,6 +617,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -516,12 +625,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.75.3): + - React-Fabric/components/view (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -529,19 +639,23 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-renderercss - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.75.3): + - Yoga + - React-Fabric/consistency (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -549,6 +663,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -556,13 +671,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - Yoga - - React-Fabric/core (0.75.3): + - React-Fabric/core (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -570,6 +685,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -577,12 +693,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/dom (0.75.3): + - React-Fabric/dom (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -590,6 +707,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -597,12 +715,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.75.3): + - React-Fabric/imagemanager (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -610,6 +729,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -617,12 +737,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.75.3): + - React-Fabric/leakchecker (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -630,6 +751,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -637,12 +759,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.75.3): + - React-Fabric/mounting (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -650,6 +773,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -657,20 +781,22 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/observers (0.75.3): + - React-Fabric/observers (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.75.3) + - React-Fabric/observers/events (= 0.79.2) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -678,12 +804,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/observers/events (0.75.3): + - React-Fabric/observers/events (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -691,6 +818,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -698,12 +826,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.75.3): + - React-Fabric/scheduler (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -712,6 +841,7 @@ PODS: - React-Fabric/observers/events - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -720,12 +850,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.75.3): + - React-Fabric/telemetry (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -733,6 +864,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -740,12 +872,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.75.3): + - React-Fabric/templateprocessor (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -753,6 +886,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -760,20 +894,22 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.75.3): + - React-Fabric/uimanager (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.75.3) + - React-Fabric/uimanager/consistency (= 0.79.2) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -782,12 +918,13 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager/consistency (0.75.3): + - React-Fabric/uimanager/consistency (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -795,6 +932,7 @@ PODS: - React-debug - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger @@ -803,69 +941,72 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricComponents (0.75.3): + - React-FabricComponents (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.75.3) - - React-FabricComponents/textlayoutmanager (= 0.75.3) + - React-FabricComponents/components (= 0.79.2) + - React-FabricComponents/textlayoutmanager (= 0.79.2) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components (0.75.3): + - React-FabricComponents/components (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.75.3) - - React-FabricComponents/components/iostextinput (= 0.75.3) - - React-FabricComponents/components/modal (= 0.75.3) - - React-FabricComponents/components/rncore (= 0.75.3) - - React-FabricComponents/components/safeareaview (= 0.75.3) - - React-FabricComponents/components/scrollview (= 0.75.3) - - React-FabricComponents/components/text (= 0.75.3) - - React-FabricComponents/components/textinput (= 0.75.3) - - React-FabricComponents/components/unimplementedview (= 0.75.3) + - React-FabricComponents/components/inputaccessory (= 0.79.2) + - React-FabricComponents/components/iostextinput (= 0.79.2) + - React-FabricComponents/components/modal (= 0.79.2) + - React-FabricComponents/components/rncore (= 0.79.2) + - React-FabricComponents/components/safeareaview (= 0.79.2) + - React-FabricComponents/components/scrollview (= 0.79.2) + - React-FabricComponents/components/text (= 0.79.2) + - React-FabricComponents/components/textinput (= 0.79.2) + - React-FabricComponents/components/unimplementedview (= 0.79.2) - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/inputaccessory (0.75.3): + - React-FabricComponents/components/inputaccessory (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -874,21 +1015,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/iostextinput (0.75.3): + - React-FabricComponents/components/iostextinput (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -897,21 +1039,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/modal (0.75.3): + - React-FabricComponents/components/modal (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -920,21 +1063,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/rncore (0.75.3): + - React-FabricComponents/components/rncore (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -943,21 +1087,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/safeareaview (0.75.3): + - React-FabricComponents/components/safeareaview (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -966,21 +1111,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/scrollview (0.75.3): + - React-FabricComponents/components/scrollview (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -989,21 +1135,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/text (0.75.3): + - React-FabricComponents/components/text (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1012,21 +1159,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/textinput (0.75.3): + - React-FabricComponents/components/textinput (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1035,21 +1183,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/components/unimplementedview (0.75.3): + - React-FabricComponents/components/unimplementedview (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1058,21 +1207,22 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricComponents/textlayoutmanager (0.75.3): + - React-FabricComponents/textlayoutmanager (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1081,98 +1231,83 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon/turbomodule/core - Yoga - - React-FabricImage (0.75.3): + - React-FabricImage (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) - - RCTRequired (= 0.75.3) - - RCTTypeSafety (= 0.75.3) + - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTRequired (= 0.79.2) + - RCTTypeSafety (= 0.79.2) - React-Fabric + - React-featureflags - React-graphics + - React-hermes - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.75.3) + - React-jsiexecutor (= 0.79.2) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-featureflags (0.75.3) - - React-featureflagsnativemodule (0.75.3): - - DoubleConversion - - glog + - React-featureflags (0.79.2): + - RCT-Folly (= 2024.11.18.00) + - React-featureflagsnativemodule (0.79.2): - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric + - RCT-Folly - React-featureflags - - React-graphics - - React-ImageManager - - React-NativeModulesApple - - React-RCTFabric - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - Yoga - - React-graphics (0.75.3): + - React-graphics (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - RCT-Folly/Fabric (= 2024.01.01.00) + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-hermes - React-jsi - React-jsiexecutor - React-utils - - React-hermes (0.75.3): + - React-hermes (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-cxxreact (= 0.75.3) + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.2) - React-jsi - - React-jsiexecutor (= 0.75.3) + - React-jsiexecutor (= 0.79.2) - React-jsinspector - - React-perflogger (= 0.75.3) + - React-jsinspectortracing + - React-perflogger (= 0.79.2) - React-runtimeexecutor - - React-idlecallbacksnativemodule (0.75.3): - - DoubleConversion + - React-idlecallbacksnativemodule (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-NativeModulesApple - - React-RCTFabric - - React-rendererdebug + - RCT-Folly + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec - React-runtimescheduler - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - Yoga - - React-ImageManager (0.75.3): + - React-ImageManager (0.79.2): - glog - RCT-Folly/Fabric - React-Core/Default @@ -1181,115 +1316,110 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.75.3): - - RCT-Folly/Fabric (= 2024.01.01.00) + - React-jserrorhandler (0.79.2): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-cxxreact - React-debug + - React-featureflags - React-jsi - - React-jsi (0.75.3): + - ReactCommon/turbomodule/bridging + - React-jsi (0.79.2): - boost - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-jsiexecutor (0.75.3): + - RCT-Folly (= 2024.11.18.00) + - React-jsiexecutor (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-cxxreact (= 0.75.3) - - React-jsi (= 0.75.3) + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) - React-jsinspector - - React-perflogger (= 0.75.3) - - React-jsinspector (0.75.3): + - React-jsinspectortracing + - React-perflogger (= 0.79.2) + - React-jsinspector (0.79.2): - DoubleConversion - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly - React-featureflags - React-jsi - - React-runtimeexecutor (= 0.75.3) - - React-jsitracing (0.75.3): - - React-jsi - - React-logger (0.75.3): + - React-jsinspectortracing + - React-perflogger (= 0.79.2) + - React-runtimeexecutor (= 0.79.2) + - React-jsinspectortracing (0.79.2): + - RCT-Folly + - React-oscompat + - React-jsitooling (0.79.2): + - DoubleConversion + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - - React-Mapbuffer (0.75.3): + - RCT-Folly (= 2024.11.18.00) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-jsinspector + - React-jsinspectortracing + - React-jsitracing (0.79.2): + - React-jsi + - React-logger (0.79.2): - glog - - React-debug - - React-microtasksnativemodule (0.75.3): - - DoubleConversion + - React-Mapbuffer (0.79.2): - glog - - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - RCTRequired - - RCTTypeSafety - - React-Core - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-NativeModulesApple - - React-RCTFabric - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - Yoga - - react-native-audio-analyzer (2.1.0): - - DoubleConversion - - ffmpeg-kit-ios-audio (= 6.0) - - glog + - React-microtasksnativemodule (0.79.2): - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-NativeModulesApple - - React-RCTFabric - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging + - RCT-Folly + - React-hermes + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - Yoga - - react-native-blob-util (0.19.11): - - React-Core - - React-nativeconfig (0.75.3) - - React-NativeModulesApple (0.75.3): + - React-NativeModulesApple (0.79.2): - glog - hermes-engine - React-callinvoker - React-Core - React-cxxreact + - React-featureflags + - React-hermes - React-jsi - React-jsinspector - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.75.3) - - React-performancetimeline (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - React-oscompat (0.79.2) + - React-perflogger (0.79.2): + - DoubleConversion + - RCT-Folly (= 2024.11.18.00) + - React-performancetimeline (0.79.2): + - RCT-Folly (= 2024.11.18.00) - React-cxxreact - - React-RCTActionSheet (0.75.3): - - React-Core/RCTActionSheetHeaders (= 0.75.3) - - React-RCTAnimation (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsinspectortracing + - React-perflogger + - React-timing + - React-RCTActionSheet (0.79.2): + - React-Core/RCTActionSheetHeaders (= 0.79.2) + - React-RCTAnimation (0.79.2): + - RCT-Folly (= 2024.11.18.00) - RCTTypeSafety - React-Core/RCTAnimationHeaders - React-jsi - React-NativeModulesApple - - ReactCodegen + - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTAppDelegate (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - React-RCTAppDelegate (0.79.2): + - hermes-engine + - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1300,36 +1430,37 @@ PODS: - React-featureflags - React-graphics - React-hermes - - React-nativeconfig + - React-jsitooling - React-NativeModulesApple - React-RCTFabric + - React-RCTFBReactNativeSpec - React-RCTImage - React-RCTNetwork + - React-RCTRuntime - React-rendererdebug - React-RuntimeApple - React-RuntimeCore - - React-RuntimeHermes - React-runtimescheduler - React-utils - - ReactCodegen - ReactCommon - - React-RCTBlob (0.75.3): + - React-RCTBlob (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket - React-jsi - React-jsinspector - React-NativeModulesApple + - React-RCTFBReactNativeSpec - React-RCTNetwork - - ReactCodegen - ReactCommon - - React-RCTFabric (0.75.3): + - React-RCTFabric (0.79.2): - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - React-Core - React-debug - React-Fabric @@ -1337,132 +1468,179 @@ PODS: - React-FabricImage - React-featureflags - React-graphics + - React-hermes - React-ImageManager - React-jsi - React-jsinspector - - React-nativeconfig + - React-jsinspectortracing - React-performancetimeline + - React-RCTAnimation - React-RCTImage - React-RCTText - React-rendererconsistency + - React-renderercss - React-rendererdebug - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - React-RCTFBReactNativeSpec (0.79.2): + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-hermes + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - ReactCommon + - React-RCTImage (0.79.2): + - RCT-Folly (= 2024.11.18.00) - RCTTypeSafety - React-Core/RCTImageHeaders - React-jsi - React-NativeModulesApple + - React-RCTFBReactNativeSpec - React-RCTNetwork - - ReactCodegen - ReactCommon - - React-RCTLinking (0.75.3): - - React-Core/RCTLinkingHeaders (= 0.75.3) - - React-jsi (= 0.75.3) + - React-RCTLinking (0.79.2): + - React-Core/RCTLinkingHeaders (= 0.79.2) + - React-jsi (= 0.79.2) - React-NativeModulesApple - - ReactCodegen + - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.75.3) - - React-RCTNetwork (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - ReactCommon/turbomodule/core (= 0.79.2) + - React-RCTNetwork (0.79.2): + - RCT-Folly (= 2024.11.18.00) - RCTTypeSafety - React-Core/RCTNetworkHeaders - React-jsi - React-NativeModulesApple - - ReactCodegen + - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTSettings (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - React-RCTRuntime (0.79.2): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.11.18.00) + - React-Core + - React-hermes + - React-jsi + - React-jsinspector + - React-jsinspectortracing + - React-jsitooling + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-RCTSettings (0.79.2): + - RCT-Folly (= 2024.11.18.00) - RCTTypeSafety - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple - - ReactCodegen + - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTText (0.75.3): - - React-Core/RCTTextHeaders (= 0.75.3) + - React-RCTText (0.79.2): + - React-Core/RCTTextHeaders (= 0.79.2) - Yoga - - React-RCTVibration (0.75.3): - - RCT-Folly (= 2024.01.01.00) + - React-RCTVibration (0.79.2): + - RCT-Folly (= 2024.11.18.00) - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - - ReactCodegen + - React-RCTFBReactNativeSpec - ReactCommon - - React-rendererconsistency (0.75.3) - - React-rendererdebug (0.75.3): + - React-rendererconsistency (0.79.2) + - React-renderercss (0.79.2): + - React-debug + - React-utils + - React-rendererdebug (0.79.2): - DoubleConversion - - fmt (= 9.1.0) - - RCT-Folly (= 2024.01.01.00) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - RCT-Folly (= 2024.11.18.00) - React-debug - - React-rncore (0.75.3) - - React-RuntimeApple (0.75.3): + - React-rncore (0.79.2) + - React-RuntimeApple (0.79.2): - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - React-callinvoker - React-Core/Default - React-CoreModules - React-cxxreact + - React-featureflags - React-jserrorhandler - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling - React-Mapbuffer - React-NativeModulesApple - React-RCTFabric + - React-RCTFBReactNativeSpec - React-RuntimeCore - React-runtimeexecutor - React-RuntimeHermes - React-runtimescheduler - React-utils - - React-RuntimeCore (0.75.3): + - React-RuntimeCore (0.79.2): - glog - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - React-cxxreact + - React-Fabric - React-featureflags + - React-hermes - React-jserrorhandler - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsitooling + - React-performancetimeline - React-runtimeexecutor - React-runtimescheduler - React-utils - - React-runtimeexecutor (0.75.3): - - React-jsi (= 0.75.3) - - React-RuntimeHermes (0.75.3): + - React-runtimeexecutor (0.79.2): + - React-jsi (= 0.79.2) + - React-RuntimeHermes (0.79.2): - hermes-engine - - RCT-Folly/Fabric (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.11.18.00) - React-featureflags - React-hermes - React-jsi - React-jsinspector + - React-jsinspectortracing + - React-jsitooling - React-jsitracing - - React-nativeconfig - React-RuntimeCore - React-utils - - React-runtimescheduler (0.75.3): + - React-runtimescheduler (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - React-callinvoker - React-cxxreact - React-debug - React-featureflags + - React-hermes - React-jsi + - React-jsinspectortracing + - React-performancetimeline - React-rendererconsistency - React-rendererdebug - React-runtimeexecutor + - React-timing - React-utils - - React-utils (0.75.3): + - React-timing (0.79.2) + - React-utils (0.79.2): - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly (= 2024.11.18.00) - React-debug - - React-jsi (= 0.75.3) - - ReactCodegen (0.75.3): + - React-hermes + - React-jsi (= 0.79.2) + - ReactAppDependencyProvider (0.79.2): + - ReactCodegen + - ReactCodegen (0.79.2): - DoubleConversion - glog - hermes-engine @@ -1475,63 +1653,71 @@ PODS: - React-FabricImage - React-featureflags - React-graphics + - React-hermes - React-jsi - React-jsiexecutor - React-NativeModulesApple + - React-RCTAppDelegate - React-rendererdebug - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactCommon (0.75.3): - - ReactCommon/turbomodule (= 0.75.3) - - ReactCommon/turbomodule (0.75.3): + - ReactCommon (0.79.2): + - ReactCommon/turbomodule (= 0.79.2) + - ReactCommon/turbomodule (0.79.2): - DoubleConversion - - fmt (= 9.1.0) - - glog - - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.75.3) - - React-cxxreact (= 0.75.3) - - React-jsi (= 0.75.3) - - React-logger (= 0.75.3) - - React-perflogger (= 0.75.3) - - ReactCommon/turbomodule/bridging (= 0.75.3) - - ReactCommon/turbomodule/core (= 0.75.3) - - ReactCommon/turbomodule/bridging (0.75.3): + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - ReactCommon/turbomodule/bridging (= 0.79.2) + - ReactCommon/turbomodule/core (= 0.79.2) + - ReactCommon/turbomodule/bridging (0.79.2): - DoubleConversion - - fmt (= 9.1.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.75.3) - - React-cxxreact (= 0.75.3) - - React-jsi (= 0.75.3) - - React-logger (= 0.75.3) - - React-perflogger (= 0.75.3) - - ReactCommon/turbomodule/core (0.75.3): + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-cxxreact (= 0.79.2) + - React-jsi (= 0.79.2) + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - ReactCommon/turbomodule/core (0.79.2): - DoubleConversion - - fmt (= 9.1.0) - - glog - - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.75.3) - - React-cxxreact (= 0.75.3) - - React-debug (= 0.75.3) - - React-featureflags (= 0.75.3) - - React-jsi (= 0.75.3) - - React-logger (= 0.75.3) - - React-perflogger (= 0.75.3) - - React-utils (= 0.75.3) - - SocketRocket (0.7.0) + - fast_float (= 6.1.4) + - fmt (= 11.0.2) + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - React-callinvoker (= 0.79.2) + - React-cxxreact (= 0.79.2) + - React-debug (= 0.79.2) + - React-featureflags (= 0.79.2) + - React-jsi (= 0.79.2) + - React-logger (= 0.79.2) + - React-perflogger (= 0.79.2) + - React-utils (= 0.79.2) + - SocketRocket (0.7.1) - Yoga (0.0.0) DEPENDENCIES: + - AudioAnalyzer (from `../..`) - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - NitroModules (from `../node_modules/react-native-nitro-modules`) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) @@ -1559,14 +1745,14 @@ DEPENDENCIES: - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`) + - React-jsitooling (from `../node_modules/react-native/ReactCommon/jsitooling`) - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) - - react-native-audio-analyzer (from `../..`) - - react-native-blob-util (from `../node_modules/react-native-blob-util`) - - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) @@ -1574,13 +1760,16 @@ DEPENDENCIES: - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTFBReactNativeSpec (from `../node_modules/react-native/React`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTRuntime (from `../node_modules/react-native/React/Runtime`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) + - React-renderercss (from `../node_modules/react-native/ReactCommon/react/renderer/css`) - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) @@ -1588,21 +1777,26 @@ DEPENDENCIES: - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactAppDependencyProvider (from `build/generated/ios`) - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - - ffmpeg-kit-ios-audio - SocketRocket EXTERNAL SOURCES: + AudioAnalyzer: + :path: "../.." boost: :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + fast_float: + :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" fmt: @@ -1611,7 +1805,9 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2024-08-15-RNv0.75.1-4b3bf912cc0f705b51b71ce1a5b8bd79b93a451b + :tag: hermes-2025-03-03-RNv0.79.0-bc17d964d03743424823d7dd1a9f37633459c5c5 + NitroModules: + :path: "../node_modules/react-native-nitro-modules" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: @@ -1662,6 +1858,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsinspectortracing: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing" + React-jsitooling: + :path: "../node_modules/react-native/ReactCommon/jsitooling" React-jsitracing: :path: "../node_modules/react-native/ReactCommon/hermes/executor/" React-logger: @@ -1670,14 +1870,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon" React-microtasksnativemodule: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" - react-native-audio-analyzer: - :path: "../.." - react-native-blob-util: - :path: "../node_modules/react-native-blob-util" - React-nativeconfig: - :path: "../node_modules/react-native/ReactCommon" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-oscompat: + :path: "../node_modules/react-native/ReactCommon/oscompat" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-performancetimeline: @@ -1692,12 +1888,16 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Blob" React-RCTFabric: :path: "../node_modules/react-native/React" + React-RCTFBReactNativeSpec: + :path: "../node_modules/react-native/React" React-RCTImage: :path: "../node_modules/react-native/Libraries/Image" React-RCTLinking: :path: "../node_modules/react-native/Libraries/LinkingIOS" React-RCTNetwork: :path: "../node_modules/react-native/Libraries/Network" + React-RCTRuntime: + :path: "../node_modules/react-native/React/Runtime" React-RCTSettings: :path: "../node_modules/react-native/Libraries/Settings" React-RCTText: @@ -1706,6 +1906,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Vibration" React-rendererconsistency: :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" + React-renderercss: + :path: "../node_modules/react-native/ReactCommon/react/renderer/css" React-rendererdebug: :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: @@ -1720,8 +1922,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimescheduler: :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-timing: + :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactAppDependencyProvider: + :path: build/generated/ios ReactCodegen: :path: build/generated/ios ReactCommon: @@ -1730,73 +1936,80 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 4cb898d0bf20404aab1850c656dcea009429d6c1 - DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 - FBLazyVector: 7b438dceb9f904bd85ca3c31d64cce32a035472b - ffmpeg-kit-ios-audio: 9fa9953fc197280a69e59c603c7fa7690df7190c - fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 - glog: 69ef571f3de08433d766d614c73a9838a06bf7eb - hermes-engine: 8d2103d6c0176779aea4e25df6bb1410f9946680 - RCT-Folly: 34124ae2e667a0e5f0ea378db071d27548124321 - RCTDeprecation: 4191f6e64b72d9743f6fe1a8a16e89e868f5e9e7 - RCTRequired: 9bb589570f2bb3abc6518761e3fd1ad9b7f7f06c - RCTTypeSafety: 1c1a8741c86df0a0ac1a99cf3fb0e29eedbc2c88 - React: b6810a201ee11e69ae8bfd4eb4aaab86610600bf - React-callinvoker: d6c7898b63e6a2d37bc308f17c05be0ba3630b10 - React-Core: 411ef2293ba0c9147e04ee89324bc1575b38a089 - React-CoreModules: 30c44229d249317498dac4a984925c56e06f61c2 - React-cxxreact: 1ba92740ea3ed5be86898dec22f6548aa843da16 - React-debug: fd0ed8ecd5f8a23c7daf5ceaca8aa722a4d083fd - React-defaultsnativemodule: 33038152921d2f3fdef66ba1f8ef32e9ee68a834 - React-domnativemodule: 6e79b766cda4b3a447aa59aaf04473d257b0c5bb - React-Fabric: da5caca65022dcbbb95d12cebcde7770fdd44ff0 - React-FabricComponents: 19e0eb8be8d8f2afa1a921705a87d8818eba14cf - React-FabricImage: 50df9e6aace1781cf23e130171631d7674b4072c - React-featureflags: cf78861db9318ae29982fa8953c92d31b276c9ac - React-featureflagsnativemodule: 3ff0c243e064a252293afb24aa0a6ee36b0149e4 - React-graphics: 7ed2dc99f706228448b870882729a8303343b5a5 - React-hermes: 167b427c2106b92ac47add9b35ca024d42453518 - React-idlecallbacksnativemodule: 6b917d089d3beaa096c6c95bcb428c4577fe65de - React-ImageManager: 9970421c57b6458d3a4d6ce319c9067217c4882f - React-jserrorhandler: 6764a4b7abd617332fb0935c9ba63a6369207a15 - React-jsi: 7713fae6d70c49a1b1b12d7e65ca62a50cd820d2 - React-jsiexecutor: 67260e3eb3d1f3d3fd41ff15e89ce4027ae9c36a - React-jsinspector: a0f1febb0bcf5770ff135444a6afee7520ee42f7 - React-jsitracing: bf77e00063522e4fd6d84fa129f0caaf360d275e - React-logger: 7e56c9eceafd7f45e98c16cb42ff3c9966c67119 - React-Mapbuffer: e68dd904f0f3a84dd35989288ed3bcf5e37f9737 - React-microtasksnativemodule: ca8806e64625be04b8f3d9f31f66508d02c42555 - react-native-audio-analyzer: 4ea0de6a260590c3f66ec9e1da991163ed0b46fd - react-native-blob-util: f7234c91ad0e3faeee51b3edee80b61553f74993 - React-nativeconfig: 4a9543185905fe41014c06776bf126083795aed9 - React-NativeModulesApple: f6b6dc0998c945dd113858f1fc12e5e5f0da0990 - React-perflogger: 3bbb82f18e9ac29a1a6931568e99d6305ef4403b - React-performancetimeline: 05c0372923c2f3a9e8a5ae954258f0436003bffb - React-RCTActionSheet: cb2b38a53d03ec22f1159c89667b86c2c490d92d - React-RCTAnimation: c8be4f58eabb487d6346247ee8e7bac434737ed7 - React-RCTAppDelegate: d34bc2eeddc4d3f2a23275bf45e915d0d5df5284 - React-RCTBlob: 7a64271f64a60390a2e73edecaca2735be8044ff - React-RCTFabric: dc41b0a646666b7e8db159c26eeda20af8b6328f - React-RCTImage: 4fb571875362a78ccc01aded76b94a71ae466b8b - React-RCTLinking: e825182eaf7f4047f6bb11bb6cd2ae5858008e66 - React-RCTNetwork: 0e07b83395b6ff5016f7cea4ac99426a893a1438 - React-RCTSettings: bd68792732f116994e992cf48e5bb70c4eb3910e - React-RCTText: c3cfce62ddb887cdd86403a6130a58a1f8fed9f3 - React-RCTVibration: 32a10228b7affa8de6401dba6f0d73b5a8433342 - React-rendererconsistency: 993f54bb0df644df2922cd87ea55238d510d992b - React-rendererdebug: 9cd1f3e6d12c1d9b99fce6ceb373495b29b3d9ee - React-rncore: 1df26fe0ae861c599f9f2896f45e8834ef4b85f9 - React-RuntimeApple: 5fb9053ae46ec14407f24547afd903ec8f0c0b9a - React-RuntimeCore: f6af8417106c1ce5b494edd99e86b0d0069ad6c3 - React-runtimeexecutor: 9a668b94ad5d93755443311715bd57680330286a - React-RuntimeHermes: 6c6053fb5aca5558b071cfbce2868ca50a3b8fc7 - React-runtimescheduler: 5d1a32712d441c38e6d5815069e1810d38ed26f7 - React-utils: 3c815e7d3abb801930a3df2db870c92855429fea - ReactCodegen: 3d11bcf0cac47a77042a3476a1c2f7058bfd6880 - ReactCommon: c65f7049a542669dcc7bff6b7a8071a039c7d0dd - SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d - Yoga: 4ef80d96a5534f0e01b3055f17d1e19a9fc61b63 + AudioAnalyzer: 8219c1530dbcf9fed5d9f3ef1c7cd7d0d20109b3 + boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 + DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb + fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 + FBLazyVector: 84b955f7b4da8b895faf5946f73748267347c975 + fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd + glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 + hermes-engine: 314be5250afa5692b57b4dd1705959e1973a8ebe + NitroModules: 774aef6d66b614ae0926946cbab7f39cd710e1e4 + RCT-Folly: 36fe2295e44b10d831836cc0d1daec5f8abcf809 + RCTDeprecation: 83ffb90c23ee5cea353bd32008a7bca100908f8c + RCTRequired: eb7c0aba998009f47a540bec9e9d69a54f68136e + RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93 + React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c + React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d + React-Core: 7150cf9b6a5af063b37003062689f1691e79c020 + React-CoreModules: 15a85e6665d61678942da6ae485b351f4c699049 + React-cxxreact: 74f9de59259ac951923f5726aa14f0398f167af9 + React-debug: e74e76912b91e08d580c481c34881899ccf63da9 + React-defaultsnativemodule: 628285212bbd65417d40ad6a9f8781830fda6c98 + React-domnativemodule: 185d9808198405c176784aaf33403d713bd24fb7 + React-Fabric: c814804affbe1952e16149ddd20256e1bccae67e + React-FabricComponents: 81ef47d596966121784afec9924f9562a29b1691 + React-FabricImage: f14f371d678aa557101def954ac3ba27e48948ff + React-featureflags: d5facceff8f8f6de430e0acecf4979a9a0839ba9 + React-featureflagsnativemodule: 96f0ab285382d95c90f663e02526a5ceefa95a11 + React-graphics: 1a66ee0a3f093b125b853f6370296fadcaf6f233 + React-hermes: 8b86e5f54a65ecb69cdf22b3a00a11562eda82d2 + React-idlecallbacksnativemodule: 5c25ab145c602264d00cb26a397ab52e0efa031c + React-ImageManager: 15e34bd5ef1ac4a18e96660817ef70a7f99ee8c2 + React-jserrorhandler: 02cdf2cd45350108be1ffd2b164578936dbbdff7 + React-jsi: 6af1987cfbb1b6621664fdbf6c7b62bd4d38c923 + React-jsiexecutor: 51f372998e0303585cb0317232b938d694663cbd + React-jsinspector: 3539ad976d073bfaa8a7d2fa9bef35e70e55033e + React-jsinspectortracing: e8dbacaf67c201f23052ca1c2bae2f7b84dec443 + React-jsitooling: 95a34f41e3c249d42181de13b4f8d854f178ca9f + React-jsitracing: 25b029cf5cad488252d46da19dd8c4c134fd5fe4 + React-logger: 368570a253f00879a1e4fea24ed4047e72e7bbf3 + React-Mapbuffer: c04fcda1c6281fc0a6824c7dcc1633dd217ac1ec + React-microtasksnativemodule: ca2804a25fdcefffa0aa942aa23ab53b99614a34 + React-NativeModulesApple: 452b86b29fae99ed0a4015dca3ad9cd222f88abf + React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c + React-perflogger: 6fd2f6811533e9c19a61e855c3033eecbf4ad2a0 + React-performancetimeline: abf31259d794c9274b3ea19c5016186925eec6c4 + React-RCTActionSheet: a499b0d6d9793886b67ba3e16046a3fef2cdbbc3 + React-RCTAnimation: 2595dcb10a82216a511b54742f8c28d793852ac6 + React-RCTAppDelegate: f03604b70f57c9469a84a159d8abecf793a5bcff + React-RCTBlob: e00f9b4e2f151938f4d9864cf33ebf24ac03328a + React-RCTFabric: 3945d116fd271598db262d4e6ed5691d431ed9e8 + React-RCTFBReactNativeSpec: 0f4d4f0da938101f2ca9d5333a8f46e527ad2819 + React-RCTImage: dac5e9f8ec476aefe6e60ee640ebc1dfaf1a4dbe + React-RCTLinking: 494b785a40d952a1dfbe712f43214376e5f0e408 + React-RCTNetwork: b3d7c30cd21793e268db107dd0980cb61b3c1c44 + React-RCTRuntime: a8ff419d437228e7b8a793b14f9d711e1cbb82af + React-RCTSettings: a060c7e381a3896104761b8eed7e284d95e37df3 + React-RCTText: 4f272b72dbb61f390d8c8274528f9fdbff983806 + React-RCTVibration: 0e5326220719aca12473d703aa46693e3b4ce67a + React-rendererconsistency: 351fdbc5c1fe4da24243d939094a80f0e149c7a1 + React-renderercss: d333f2ada83969591100d91ec6b23ca2e17e1507 + React-rendererdebug: 039e5949b72ba63c703de020701e3fd152434c61 + React-rncore: 57ed480649bb678d8bdc386d20fee8bf2b0c307c + React-RuntimeApple: 344a5e1105256000afabaa8df12c3e4cab880340 + React-RuntimeCore: 0e48fb5e5160acc0334c7a723a42d42cef4b58b6 + React-runtimeexecutor: d60846710facedd1edb70c08b738119b3ee2c6c2 + React-RuntimeHermes: 064286a03871d932c99738e0f8ef854962ab4b99 + React-runtimescheduler: e917ab17ae08c204af1ebf8f669b7e411b0220c8 + React-timing: a90f4654cbda9c628614f9bee68967f1768bd6a5 + React-utils: 51c4e71608b8133fecc9a15801d244ae7bdf3758 + ReactAppDependencyProvider: d5dcc564f129632276bd3184e60f053fcd574d6b + ReactCodegen: fda99a79c866370190e162083a35602fdc314e5d + ReactCommon: 4d0da92a5eb8da86c08e3ec34bd23ab439fb2461 + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 + Yoga: 9f110fc4b7aa538663cba3c14cbb1c335f43c13f -PODFILE CHECKSUM: 12860bcc870e841eec99e5e42d7626d42297f6ed +PODFILE CHECKSUM: 39bafc6d584f781b9b95bc4a32138bfd8f302133 -COCOAPODS: 1.16.2 +COCOAPODS: 1.15.2 diff --git a/example/metro.config.js b/example/metro.config.js index 78e4f81..2da198e 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -1,7 +1,6 @@ const path = require('path'); const { getDefaultConfig } = require('@react-native/metro-config'); -const { getConfig } = require('react-native-builder-bob/metro-config'); -const pkg = require('../package.json'); +const { withMetroConfig } = require('react-native-monorepo-config'); const root = path.resolve(__dirname, '..'); @@ -11,8 +10,7 @@ const root = path.resolve(__dirname, '..'); * * @type {import('metro-config').MetroConfig} */ -module.exports = getConfig(getDefaultConfig(__dirname), { +module.exports = withMetroConfig(getDefaultConfig(__dirname), { root, - pkg, - project: __dirname, + dirname: __dirname, }); diff --git a/example/package.json b/example/package.json index 56d037a..c98b139 100644 --- a/example/package.json +++ b/example/package.json @@ -7,21 +7,26 @@ "ios": "react-native run-ios", "start": "react-native start", "build:android": "react-native build-android --extra-params \"--no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a\"", - "build:ios": "react-native build-ios --scheme AudioAnalyzerExample --mode Debug --extra-params \"-sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO\"" + "build:ios": "react-native build-ios --mode Debug" }, "dependencies": { - "react": "18.3.1", - "react-native": "0.75.4", - "react-native-blob-util": "^0.19.11" + "react": "19.0.0", + "react-native": "0.79.2", + "react-native-nitro-modules": "^0.27.3" }, "devDependencies": { - "@babel/core": "^7.20.0", - "@babel/preset-env": "^7.20.0", - "@babel/runtime": "^7.20.0", - "@react-native/babel-preset": "0.75.4", - "@react-native/metro-config": "0.75.4", - "@react-native/typescript-config": "0.75.4", - "react-native-builder-bob": "^0.30.2" + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "18.0.0", + "@react-native-community/cli-platform-android": "18.0.0", + "@react-native-community/cli-platform-ios": "18.0.0", + "@react-native/babel-preset": "0.79.2", + "@react-native/metro-config": "0.79.2", + "@react-native/typescript-config": "0.79.2", + "@types/react": "^19.0.0", + "react-native-builder-bob": "^0.40.13", + "react-native-monorepo-config": "^0.1.9" }, "engines": { "node": ">=18" diff --git a/example/react-native.config.js b/example/react-native.config.js index 0b9606d..59d9698 100644 --- a/example/react-native.config.js +++ b/example/react-native.config.js @@ -10,6 +10,12 @@ module.exports = { dependencies: { [pkg.name]: { root: path.join(__dirname, '..'), + platforms: { + // Codegen script incorrectly fails without this + // So we explicitly specify the platforms with empty object + ios: {}, + android: {}, + }, }, }, }; diff --git a/example/src/App.tsx b/example/src/App.tsx index e451926..dfa9428 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -1,71 +1,57 @@ -import { useCallback, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; -import { - ActivityIndicator, - Alert, - Button, - ScrollView, - StyleSheet, - Text, - View, -} from 'react-native'; -import AudioAnalyzer, { - scale, - sample, - robustScale, - trimmedScale, -} from 'react-native-audio-analyzer'; -import type { AmplitudeData } from 'react-native-audio-analyzer'; -import ReactNativeBlobUtil from 'react-native-blob-util'; +import { ScrollView, StyleSheet, Text, View } from 'react-native'; +import { computeAmplitude } from 'react-native-audio-analyzer'; +import { robustScale, sample, scale, trimmedScale } from '../../src/helpers'; export default function App() { - const [result, setResult] = useState([]); - const [isLoading, setIsLoading] = useState(false); + const [data, setData] = useState([]); - const start = useCallback(async () => { + const run = useCallback(async () => { try { - setIsLoading(true); - const response = await ReactNativeBlobUtil.config({ - fileCache: true, - }).fetch( - 'GET', - 'https://github.com/rafaelreis-hotmart/Audio-Sample-files/raw/master/sample.mp3', - {} + const result = computeAmplitude( + '/data/data/audioanalyzer.example/files/sample.mp3', + 100 ); - const path = response.path(); - const data = AudioAnalyzer.analyze(path, 2); - setResult(data); - } catch (error) { - Alert.alert('Error', String(error)); - } finally { - setIsLoading(false); + setData(result); + } catch (raw) { + console.log(raw); } }, []); - const amplitudes = result.map((_) => _.amplitude); + useEffect(() => { + // noinspection JSIgnoredPromiseFromCall + run(); + }, [run]); const results = [ + { + title: 'Original:', + data: data.map((value, index) => ( + + )), + }, { title: 'Trimmed scale:', - data: trimmedScale(amplitudes).map((value, index) => ( + data: trimmedScale(data, 0, 1).map((value, index) => ( )), }, { title: 'Robust scale:', - data: robustScale(amplitudes).map((value, index) => ( + data: robustScale(data, 0, 1).map((value, index) => ( )), }, { title: 'Scale + sample:', - data: scale(sample(amplitudes, 35)).map((value, index) => ( + data: scale(sample(data, 35)).map((value, index) => ( )), }, { title: 'Scale:', - data: scale(amplitudes).map((value, index) => ( + data: scale(data).map((value, index) => ( )), }, @@ -73,21 +59,16 @@ export default function App() { return ( -