Как запустить исполняемый файл из каталога libs через ProcessBuilder, используя Java в приложении AndroidJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как запустить исполняемый файл из каталога libs через ProcessBuilder, используя Java в приложении Android

Сообщение Anonymous »

Я хочу запустить собственный исполняемый файл через Java в приложении Android
Путь jnilibs: src/main/jnilib,< /p>

Имя исполняемого файла: libnode.so

Примечание: я попробовал имя «узел», но результат тот же

код файла build.gradle >

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

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
}

android {
namespace 'com.code.nativetester'
compileSdk 34

defaultConfig {
applicationId "com.code.nativetester"
minSdk 26
targetSdk 34
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ''
arguments '-DANDROID_STL=c++_shared'
}
}
ndk{
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
}
vectorDrawables {
useSupportLibrary true
}
}

sourceSets {
main {
// Specify the location of the jniLibs folder
jniLibs.srcDirs = ['src/main/jnilibs']
}
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}

}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
externalNativeBuild {
cmake {
path file('src/main/cpp/CMakeLists.txt')
version '3.22.1'
}
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.5.1'
}
packaging {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}

dependencies {

implementation libs.appcompat
implementation libs.material
implementation libs.activity
implementation libs.constraintlayout
implementation libs.lifecycle.runtime.ktx
implementation libs.activity.compose
implementation platform(libs.compose.bom)
implementation libs.ui
implementation libs.ui.graphics
implementation libs.ui.tooling.preview
implementation libs.material3
testImplementation libs.junit
androidTestImplementation libs.ext.junit
androidTestImplementation libs.espresso.core
androidTestImplementation platform(libs.compose.bom)
androidTestImplementation libs.ui.test.junit4
debugImplementation libs.ui.tooling
debugImplementation libs.ui.test.manifest
}
Выполнить функцию в Mainactivity.java

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

private void runBuilder2(){
System.out.println("builder2 trying ---->");
try {

ProcessBuilder builder = new ProcessBuilder( getApplicationInfo().nativeLibraryDir+"/node", "-h");
Process process = builder.start();
// print its log
// Capture the process output (stdout)
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

// Read and print the output line by line
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}

// Wait for the process to finish
int exitCode = process.waitFor();
System.out.println("\nExited with code: " + exitCode);

}
catch (Exception e) {
System.out.println("Run : IOException error:"+e);
}

}
Вывод функции выше
Выполнить: ошибка IOException: java.io.IOException: невозможно запустить программу "/data/app/~~Wonxuy8etqj7fN6HSwqrSA== /com.code.nativetester-6QtPkpExKhbZOsI163eTpA==/lib/arm64/node": error=2, такого файла или каталога нет
Мне нужно объяснение моей проблемы и проверенное решение
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/790 ... a-in-an-an
Ответить

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

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

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

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

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