React Native, Kotlin, Ffmpegkit .AAR Manual Integration Crash при запуске (Android)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 React Native, Kotlin, Ffmpegkit .AAR Manual Integration Crash при запуске (Android)

Сообщение Anonymous »

Я строю нативное приложение React (версия 0.79) в Windows, используя поддержку Kotlin, и я вручную интегрирую FFMPegkit в качестве файла .AAR (не используя FFMPEG-kit-react-National). Моя настройка успешно строится, но приложение сразу же после запуска. Под: Android/App/Libs

[*] Поддержка языка котлин

[*] Использование нативных модулей:

fmpegmodule.kt
/>[*]ffmpegpackage.kt


anddroid/app/src/main/java/com/veditor/ffmpegmodule.kt >

Код: Выделить всё

package com.veditor

import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.soloader.SoLoader

class MainApplication : Application(), ReactApplication {
override val reactNativeHost: ReactNativeHost = object : ReactNativeHost(this) {
override fun getUseDeveloperSupport() = BuildConfig.DEBUG

override fun getPackages(): List {
val packages = PackageList(this).packages.toMutableList()
packages.add(FFmpegPackage()) // Register your native module
return packages
}

override fun getJSMainModuleName() = "index"
}

override fun onCreate() {
super.onCreate()
SoLoader.init(this, false)
}
}

android/app/src/main/java/com/veditor/ffmpegpackage.kt

Код: Выделить всё

package com.veditor

import com.facebook.react.ReactPackage
import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.uimanager.ViewManager

class FFmpegPackage : ReactPackage {
override fun createNativeModules(reactContext: ReactApplicationContext): List {
return listOf(FFmpegModule(reactContext))
}

override fun createViewManagers(reactContext: ReactApplicationContext): List {
return emptyList()
}
}

android/app/src/main/java/com/veditor/mainapplication.kt

Код: Выделить всё

package com.veditor

import android.app.Application
import com.facebook.react.*
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
import com.facebook.react.defaults.DefaultReactNativeHost

class MainApplication : Application(), ReactApplication {

private val mReactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) {
override fun getPackages(): List {
return PackageList(this).packages + FFmpegPackage()
}

override fun getJSMainModuleName(): String {
return "index"
}

override fun isNewArchEnabled(): Boolean {
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
}

override fun isHermesEnabled(): Boolean {
return BuildConfig.IS_HERMES_ENABLED
}
}

override fun getReactNativeHost(): ReactNativeHost = mReactNativeHost

override fun onCreate() {
super.onCreate()
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
DefaultNewArchitectureEntryPoint.load()
}
ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)
}
}

android/app/build.gradle

Код: Выделить всё

repositories {
flatDir {
dirs 'libs'
}
}

dependencies {
implementation(name: 'ffmpeg-kit-full-6.0-2', ext: 'aar')
}

поведение сбоя
Приложение создает, устанавливает и открывается, но затем сразу же сбоятся без какой -либо визуальной ошибки.
тестовый экран



Код: Выделить всё

import React, { useState } from 'react';
import {
View,
Text,
StyleSheet,
Button,
ScrollView,
ActivityIndicator,
} from 'react-native';
import { FFmpegKit } from 'ffmpeg-kit-react-native'; // ✅ official API

const FFmpegTestScreen = () => {
const [output, setOutput] = useState('');
const [loading, setLoading] = useState(false);

const runFFmpegCommand = async () => {
setLoading(true);
setOutput('');
try {
const session = await FFmpegKit.execute('-version');

const returnCode = session.getReturnCode();
const logs = await session.getAllLogs();

if (returnCode.isValueSuccess()) {
const logMessages = logs.map((log) => log.getMessage()).join('\n');
setOutput(`✅ Success:\n${logMessages}`);
} else {
setOutput(`❌ FFmpeg command failed.\nReturn Code: ${returnCode.getValue()}`);
}
} catch (error: any) {
setOutput(`❌ Exception:\n${error.message || JSON.stringify(error)}`);
console.error('FFmpeg error:', error);
} finally {
setLoading(false);
}
};

return (

🎥 FFmpegKit Test

{loading && }

{output}


);
};

export default FFmpegTestScreen;

const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20,
paddingTop: 40,
backgroundColor: '#f2f2f2',
},
title: {
fontSize: 18,
fontWeight: 'bold',
marginBottom: 20,
},
outputBox: {
marginTop: 20,
backgroundColor: '#fff',
padding: 15,
borderRadius: 8,
maxHeight: 300,
},
outputText: {
fontSize: 14,
color: '#333',
},
});

Что я уже пробовал
  • обеспечить, что ffmpegmodule находится в правильном пути: Android/App/src/main/java/com/veditor
  • Cleaned Build:. />Rebuilt project: npx react-native run-android
  • Verified that ffmpeg-kit-full-6.0-2.aar is in android/app/libs
if some time the app is run i got the error:
Не может прочитать свойство 'ffmpegkit' of undefined < /p>
Я не использую Ffmpeg-kit-react-cnitals, потому что мне нужна минимальная логика нативного моста и полный контроль. < /P>
🙏 Помогите по цене < /strong>
, если кто-либо успешно интегрирован. Из -за нестандартных модулей, не загруженных, я хотел бы любые советы или рабочие примеры.

Подробнее здесь: https://stackoverflow.com/questions/796 ... unch-andro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»