libGDX Cannot read file from Gdx.files.internal - android

I have a bit of a problem with my libGDX project. In class(high school, don't think of too much), we have to make a hangman game. With some of my friends, we started to make it in Scala. Well, it works, kind of.
But the problem is that I cannot read the files from which the words are generated. It's a yaml file(words.yml), inside the android sub-project's assets. It is packed inside the .jar file, I checked it, however when I try to read it using Gdx.files.internal it stops with a NullPointerException. It's bugging me because I was able to read the image files. I thought it is impossible to read using Gdx.files.internal from not the main file from the core project. But that doesn't seem to be the case since it crashes as well if I put it in that file.
The field where it dies:
private val map: (Int, Array[String]) = {
val yaml: Yaml = new Yaml //using the snakeyaml library
//Debug
println("DBG")
println(Gdx.files.local("words.yml").path()) //<-------It crashes here
println("more DBG")
val tmp: util.LinkedHashMap[String, Any] = yaml.load(
scala.io.Source.fromFile(Gdx.files.internal("words.yml").file()) mkString)
//^^^^^or here if I remove the debug part^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(tmp.get("wordCount").asInstanceOf[Int],
tmp.get("words").toString.replaceAll("[\\[\\]]","").split(",")
.map((s: String) => {
if(s(0) == ' ') s.substring(1)
else s
}))
}
Error msg:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.infosoftcorp.wordpress.ish.Save.<init>(Save.scala:7)
at com.infosoftcorp.wordpress.ish.InfoSoftHangman.<init>(InfoSoftHangman.scala:35)
at com.infosoftcorp.wordpress.ish.desktop.DesktopLauncher.main(DesktopLauncher.java:17)
Caused by: java.lang.NullPointerException
at com.infosoftcorp.wordpress.ish.FileHandler$.<init>(FileHandler.scala:25)
at com.infosoftcorp.wordpress.ish.FileHandler$.<clinit>(FileHandler.scala)
... 3 more
File structure:
.
├── android
│ ├── android.iml
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── icon.png
│ │ ├── img
│ │ │ ├── 10.png
│ │ │ ├── 11.png
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ ├── 4.png
│ │ │ ├── 5.png
│ │ │ ├── 6.png
│ │ │ ├── 7.png
│ │ │ ├── 8.png
│ │ │ ├── 9.png
│ │ │ └── line.png
│ │ └── words.yml
│ ├── build.gradle
│ ├── ic_launcher-web.png
│ ├── libs
│ │ ├── armeabi
│ │ │ ├── libgdx-bullet.so
│ │ │ └── libgdx.so
│ │ ├── armeabi-v7a
│ │ │ ├── libgdx-bullet.so
│ │ │ └── libgdx.so
│ │ └── x86
│ │ ├── libgdx-bullet.so
│ │ └── libgdx.so
│ ├── proguard-project.txt
│ ├── project.properties
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher.png
│ │ ├── values
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-hu
│ │ └── strings.xml
│ └── src
│ └── com
│ └── infosoftcorp
│ └── wordpress
│ └── ish
│ └── android
│ └── AndroidLauncher.java
├── asd.html
├── bitbucket-pipelines.yml
├── build
│ ├── android-profile
│ │ ├── profile-2018-02-12-00-57-01-965.rawproto
│ │ ├── profile-2018-02-12-00-58-00-422.rawproto
│ │ ├── profile-2018-02-12-00-59-18-263.rawproto
│ │ ├── profile-2018-02-12-00-59-55-075.rawproto
│ │ ├── profile-2018-02-12-01-00-22-650.rawproto
│ │ └── profile-2018-02-12-01-03-02-363.rawproto
│ ├── generated
│ │ ├── mockable-android-26.jar
│ │ └── mockable-android-27.jar
│ └── intermediates
│ ├── lint-cache
│ │ ├── api-versions-6-27.0.1.bin
│ │ ├── typos-en.txt-2.bin
│ │ └── typos-hu.txt-2.bin
│ └── proguard-files
│ ├── proguard-android-optimize.txt-2.3.0
│ └── proguard-android.txt-2.3.0
├── build.gradle
├── core
│ ├── build
│ │ ├── classes
│ │ │ └── main
│ │ │ └── com
│ │ │ └── infosoftcorp
│ │ │ └── wordpress
│ │ │ └── ish
│ │ │ ├── FileHandler$$anonfun$1.class
│ │ │ ├── FileHandler.class
│ │ │ ├── FileHandler$.class
│ │ │ ├── InfoSoftHangman$$anonfun$create$1.class
│ │ │ ├── InfoSoftHangman$$anonfun$drawLines$1$1.class
│ │ │ ├── InfoSoftHangman.class
│ │ │ ├── InfoSoftHangman$InputHandler.class
│ │ │ ├── Parsing$$anonfun$parseString$1.class
│ │ │ ├── Parsing$$anonfun$removeEach$1.class
│ │ │ ├── Parsing.class
│ │ │ ├── Parsing$.class
│ │ │ ├── Parsing$DecLives.class
│ │ │ ├── Parsing$HMSignal.class
│ │ │ ├── Parsing$ParseError.class
│ │ │ ├── Parsing$ParsingResult.class
│ │ │ ├── Save.class
│ │ │ └── Save$.class
│ │ ├── libs
│ │ │ └── core-1.0.jar
│ │ └── tmp
│ │ ├── compileScala
│ │ └── jar
│ │ └── MANIFEST.MF
│ ├── build.gradle
│ ├── core.iml
│ └── src
│ └── com
│ └── infosoftcorp
│ └── wordpress
│ └── ish
│ ├── FileHandler.scala
│ ├── InfoSoftHangman.scala
│ ├── Parsing.scala
│ └── Save.scala
├── desktop
│ ├── build
│ │ ├── classes
│ │ │ └── main
│ │ │ └── com
│ │ │ └── infosoftcorp
│ │ │ └── wordpress
│ │ │ └── ish
│ │ │ └── desktop
│ │ │ └── DesktopLauncher.class
│ │ ├── dependency-cache
│ │ ├── libs
│ │ │ └── desktop-1.0.jar
│ │ └── tmp
│ │ └── <chaos>
│ ├── build.gradle
│ ├── desktop.iml
│ ├── out
│ │ └── production
│ │ └── classes
│ └── src
│ └── com
│ └── infosoftcorp
│ └── wordpress
│ └── ish
│ └── desktop
│ └── DesktopLauncher.java
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── is-hangman.iml
├── is-hangman.ipr
├── is-hangman.iws
├── local.properties
├── README.md
└── settings.gradle
I added the working directory for the desktop sub-project

So I was really stupid that is what happened.
When the new Save is initialized it wasn't called inside the create() function, but before it
Well, sometimes I do stupid stuff.
Sorry for asking stupid questions you could never answer as I didn't post the code.

Related

How to build minizip-ng on android with flutter?

I was trying to build native shared library of minizip-ng with flutter on Linux, but I'm getting the error below.
It seems that it cannot find lzma.h, but trying set the property 'MZ_LZMA' in minizip-ng's CMakeLists.txt to 'OFF' does not helps.
I also tried installing the liblzma-dev, but nothing changed.
The error:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':native_add:buildCMakeDebug[arm64-v8a]'.
> Build command failed.
Error while executing process /home/user/Android/Sdk/cmake/3.18.1/bin/ninja with arguments {-C /home/user/Dev/flutter/native_add/android/.cxx/Debug/5c706627/arm64-v8a native_add}
ninja: Entering directory `/home/user/Dev/flutter/native_add/android/.cxx/Debug/5c706627/arm64-v8a'
[1/3] Building C object minizip-ng/CMakeFiles/minizip.dir/mz_strm_lzma.c.o
FAILED: minizip-ng/CMakeFiles/minizip.dir/mz_strm_lzma.c.o
/home/user/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android24 --sysroot=/home/user/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/linux-x86_64/sysroot -DHAVE_INTTYPES_H -DHAVE_LZMA -DHAVE_STDINT_H -DHAVE_ZLIB -DLZMA_API_STATIC -DMZ_ZIP_NO_CRYPTO -DMZ_ZIP_NO_ENCRYPTION -DZLIB_COMPAT -D_LARGEFILE64_SOURCE -D_POSIX_C_SOURCE=200112L -D__USE_LARGEFILE64 -I../../../../minizip-ng -Iminizip-ng -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC -Wall -std=gnu99 -MD -MT minizip-ng/CMakeFiles/minizip.dir/mz_strm_lzma.c.o -MF minizip-ng/CMakeFiles/minizip.dir/mz_strm_lzma.c.o.d -o minizip-ng/CMakeFiles/minizip.dir/mz_strm_lzma.c.o -c ../../../../minizip-ng/mz_strm_lzma.c
../../../../minizip-ng/mz_strm_lzma.c:15:10: fatal error: 'lzma.h' file not found
#include "lzma.h"
^~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.
And the CMakeLists.txt in project/android/ is:
cmake_minimum_required(VERSION 3.13)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "-O3 -Wall -Wextra")
add_library(native_test SHARED lib.cpp)
add_subdirectory(minizip-ng)
target_link_libraries(native_test minizip)
The content of lib.cpp is:
#include "minizip-ng/mz_compat.h"
extern "C" {
int native_add(int a, int b) {
return a + b;
}
}
The structure of project/android/:
├── build.gradle
├── CMakeLists.txt
├── lib.cpp
├── local.properties
├── minizip-ng
│ ├── cmake
│ │ ├── clone-repo.cmake
│ │ └── FindZLIBNG.cmake
│ ├── CMakeLists.txt
│ ├── INDEX.md
│ ├── LICENSE
│ ├── minigzip.c
│ ├── minizip.c
│ ├── minizip.pc.cmakein
│ ├── mz_compat.c
│ ├── mz_compat.h
│ ├── mz_compat_shim.h.in
│ ├── mz_crypt_apple.c
│ ├── mz_crypt.c
│ ├── mz_crypt.h
│ ├── mz_crypt_openssl.c
│ ├── mz_crypt_win32.c
│ ├── mz.h
│ ├── mz_os.c
│ ├── mz_os.h
│ ├── mz_os_posix.c
│ ├── mz_os_win32.c
│ ├── mz_strm_buf.c
│ ├── mz_strm_buf.h
│ ├── mz_strm_bzip.c
│ ├── mz_strm_bzip.h
│ ├── mz_strm.c
│ ├── mz_strm.h
│ ├── mz_strm_libcomp.c
│ ├── mz_strm_libcomp.h
│ ├── mz_strm_lzma.c
│ ├── mz_strm_lzma.h
│ ├── mz_strm_mem.c
│ ├── mz_strm_mem.h
│ ├── mz_strm_os.h
│ ├── mz_strm_os_posix.c
│ ├── mz_strm_os_win32.c
│ ├── mz_strm_pkcrypt.c
│ ├── mz_strm_pkcrypt.h
│ ├── mz_strm_split.c
│ ├── mz_strm_split.h
│ ├── mz_strm_wzaes.c
│ ├── mz_strm_wzaes.h
│ ├── mz_strm_zlib.c
│ ├── mz_strm_zlib.h
│ ├── mz_strm_zstd.c
│ ├── mz_strm_zstd.h
│ ├── mz_zip.c
│ ├── mz_zip.h
│ ├── mz_zip_rw.c
│ ├── mz_zip_rw.h
│ ├── README.md
├── native_test_android.iml
├── settings.gradle
└── src
└── main
├── AndroidManifest.xml
└── kotlin
└── com
└── example
└── native_test
└── NativeTestPlugin.kt
I tried to search the error, but didn't find anything similar.
edit:
The Android Ndk version is 25.1.8937393

Android: INSTALL_FAILED_NO_MATCHING_ABIS with Javascript files under /lib folder in .JAR file

I'm building a library module that might be used in an Android application. In a certain part of the code, I need to load a JavaScript file so the script engine runs it. My file structure looks something like this: https://i.snag.gy/R7hHPI.jpg
└───src
├───main
│ ├───java
│ │ └───calegari
│ │ └───murilo
│ │ └───qacadscrapper
│ │ │ QAcadScrapper.java
│ │ │
│ │ └───utils
│ │ Grade.java
│ │ Subject.java
│ │ User.java
│ │
│ └───resources
│ └───lib
│ Barrett.js
│ BigInt.js
│ RSA.js
│
└───test
├───java
│ └───calegari
│ └───murilo
│ └───qacadtest
│ QAcadTest.java
│
└───resources
When building the artifact, I configure it so IntelliJ puts the contents of the /resources folder on root folder of the Jar file:
https://i.snag.gy/fN4z6t.jpg
These are the contents of the .jar file: https://i.snag.gy/QPR9XK.jpg
├───calegari
│ └───murilo
│ └───qacadscrapper
│ └───utils
├───com
│ └───sun
│ └───script
│ ├───javascript
│ └───util
├───javax
│ └───script
├───lib ---> Here are the JavaScript files
├───META-INF
│ ├───maven
│ │ └───org.jsoup
│ │ └───jsoup
│ └───services
├───org
│ ├───jsoup
│ │ ├───helper
│ │ ├───internal
│ │ ├───nodes
│ │ ├───parser
│ │ ├───safety
│ │ └───select
│ └───mozilla
│ ├───classfile
│ └───javascript
│ ├───annotations
│ ├───ast
│ ├───commonjs
│ │ └───module
│ │ └───provider
│ ├───debug
│ ├───jdk13
│ ├───jdk15
│ ├───json
│ ├───optimizer
│ ├───regexp
│ ├───resources
│ ├───serialize
│ ├───tools
│ │ ├───debugger
│ │ │ └───treetable
│ │ ├───idswitch
│ │ ├───jsc
│ │ ├───resources
│ │ └───shell
│ ├───typedarrays
│ ├───v8dtoa
│ ├───xml
│ └───xmlimpl
└───sun
├───misc
├───reflect
└───security
├───action
└───util
But when I try to install the APK I receive a "INSTALL_FAILED_NO_MATCHING_ABIS" error. I'm pretty sure that what's causing it are these .js files under /lib, since the error disappears if I remove them from the .jar build.
Library is configured using Gradle.
How can I avoid this error? Hope someone can help!
Update
I made IntelliJ add the .js files alongside the Java files inside my jar package, it works when running from the .jar file, but if I try to run some tests in IntelliJ it doesn't work, since gradle isn't adding the files to the compiled code...
Solution
I was able to make it work by moving the files to inside the source path and adding this to the gradle.build file:
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDir 'src/main/java'
include '**/*.js'
}
}
test {
java {
srcDirs = ['src/test/java']
}
}
}
i had this problem using bitcoinJ library (org.bitcoinj:bitcoinj-core:0.14.7) added to build.gradle(in module app) a packaging options inside the android scope. it helped me.
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}

Where is semver coming from?

I did the following before:
MacBook-Pro:bb-ns-ng-dr ishandutta2007$ npm uninstall -g semver
MacBook-Pro:bb-ns-ng-dr ishandutta2007$ npm uninstall semver
MacBook-Pro:bb-ns-ng-dr ishandutta2007$ rm -rf platforms/
MacBook-Pro:bb-ns-ng-dr ishandutta2007$ rm -rf node_modules/
MacBook-Pro:bb-ns-ng-dr ishandutta2007$ tns build android --clean
I keep getting semver Duplicate resources error, even though semver is neither any of of node modules I defines nor any of theri tertiary dependency. Keeping aside the reson of Duplicate resources I am more curious how is it coming in the first place.
Could not merge source set folders:
[app/node_modules/semver/semver.min.js]
/Users/ishandutta2007/Documents/Projects/bb-ns-ng-dr/platforms/android/src/main/assets/app/node_modules/semver/semver.min.js
[app/node_modules/semver/semver.min.js]
/Users/ishandutta2007/Documents/Projects/bb-ns-ng-dr/platforms/android/src/main/assets/app/node_modules/semver/semver.min.js.gz:
Error: Duplicate resources [app/node_modules/semver/semver.browser.js]
/Users/ishandutta2007/Documents/Projects/bb-ns-ng-dr/platforms/android/src/main/assets/app/node_modules/semver/semver.browser.js
[app/node_modules/semver/semver.browser.js]
/Users/ishandutta2007/Documents/Projects/bb-ns-ng-dr/platforms/android/src/main/assets/app/node_modules/semver/semver.browser.js.gz:
Error: Duplicate resources
Here is how my node modules package tree looks like
MacBook-Pro:bb-ns-ng-dr ishandutta2007$ npm ls
/Users/ishandutta2007/Documents/Projects/bb-ns-ng-dr
├── #angular/animations#4.1.3
├── #angular/common#4.1.3
├── #angular/compiler#4.1.3
├── UNMET PEER DEPENDENCY #angular/core#4.1.3
├── #angular/forms#4.1.3
├── #angular/http#4.1.3
├── #angular/platform-browser#4.1.3
├── #angular/platform-browser-dynamic#4.1.3
├── #angular/router#4.1.3
├── #ngrx/core#1.2.0
├── #ngrx/effects#2.0.2
├── #ngrx/store#2.2.1
├── #ngrx/store-devtools#3.2.4
├── #types/gapi#0.0.30
├── #types/gapi.auth2#0.0.34
├── #types/gapi.youtube#3.0.31
├── #types/jasmine#2.5.38
├── #types/youtube#0.0.28
├─┬ babel-traverse#6.24.1
│ ├─┬ babel-code-frame#6.22.0
│ │ ├─┬ chalk#1.1.3
│ │ │ ├── ansi-styles#2.2.1
│ │ │ ├── escape-string-regexp#1.0.5
│ │ │ ├─┬ has-ansi#2.0.0
│ │ │ │ └── ansi-regex#2.1.1
│ │ │ ├── strip-ansi#3.0.1
│ │ │ └── supports-color#2.0.0
│ │ └── js-tokens#3.0.1
│ ├── babel-messages#6.23.0
│ ├─┬ babel-runtime#6.23.0
│ │ ├── core-js#2.4.1
│ │ └── regenerator-runtime#0.10.5
│ ├─┬ debug#2.6.8
│ │ └── ms#2.0.0
│ ├── globals#9.17.0
│ ├─┬ invariant#2.2.2
│ │ └── loose-envify#1.3.1
│ └── lodash#4.17.4
├─┬ babel-types#6.24.1
│ ├── esutils#2.0.2
│ └── to-fast-properties#1.0.3
├── babylon#6.17.1
├── lazy#1.0.11
├─┬ nativescript-angular#3.0.0
│ └── nativescript-intl#3.0.0
├─┬ nativescript-dev-typescript#0.4.5
│ └─┬ nativescript-hook#0.2.1
│ ├─┬ glob#6.0.4
│ │ ├─┬ inflight#1.0.6
│ │ │ └── wrappy#1.0.2
│ │ ├── inherits#2.0.3
│ │ ├─┬ minimatch#3.0.4
│ │ │ └─┬ brace-expansion#1.1.7
│ │ │ ├── balanced-match#0.4.2
│ │ │ └── concat-map#0.0.1
│ │ ├── once#1.4.0
│ │ └── path-is-absolute#1.0.1
│ └─┬ mkdirp#0.5.1
│ └── minimist#0.0.8
├── nativescript-exoplayer#3.0.7
├── nativescript-localstorage#1.1.2
├── nativescript-telerik-ui#2.0.1
├── nativescript-theme-core#1.0.4
├── ngrx-action-creator-factory#0.0.1
├── ngrx-store-localstorage#0.1.5
├── reflect-metadata#0.1.10
├─┬ rxjs#5.3.3
│ └── symbol-observable#1.0.4
├─┬ tns-core-modules#3.0.1
│ └── tns-core-modules-widgets#3.0.1
├── typescript#2.2.2
└── zone.js#0.8.11
npm ERR! peer dep missing: #angular/core#^2.0.0, required by #ngrx/effects#2.0.2
npm ERR! peer dep missing: #angular/core#^2.0.0, required by #ngrx/store#2.2.1
npm ERR! peer dep missing: #angular/core#^2.0.0-rc.5, required by ngrx-store-localstorage#0.1.5
npm depends on semver, so it seems unlikely you can totally get rid of it from your globals. According to npm there are over 4,000 packages with a dependency on it.
Instead of asking where it is coming from, perhaps you would want to focus your questions on what problem you are having.

Titanium Terminated exit value 0 Application Installer

Titanium Console.
[INFO] : Making sure the adb server is running
[INFO] : Removing deploy.json from SD card
[INFO] : Installing apk: C:\androidAulaEscolar_Laboratorio\build\android\bin\Aula Escolar.apk
[INFO] : Installing app on device: GT-S5830M
log
!SESSION 2015-02-17 10:21:41.279 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_55
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=es_MX
Command-line arguments: -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.ui 2 0 2015-02-17 10:21:45.364
!MESSAGE Warnings while parsing the images from the 'org.eclipse.ui.commandImages' extension point.
!SUBENTRY 1 org.eclipse.ui 2 0 2015-02-17 10:21:45.364
!MESSAGE Cannot bind to an undefined command: plug-in='com.appcelerator.titanium.android.ui', id='com.appcelerator.titanium.mobile.command.run_on_device.android'
!SUBENTRY 1 org.eclipse.ui 2 0 2015-02-17 10:21:45.364
!MESSAGE Cannot bind to an undefined command: plug-in='com.appcelerator.titanium.android.ui', id='com.appcelerator.titanium.mobile.command.debug_on_device.android'
!ENTRY com.aptana.syncing.core 2 0 2015-02-17 10:21:50.553
!MESSAGE (Build 3.2.1.201402041146) [WARNING] com.aptana.syncing.core/debug Failed to load source connection point from URI file:/C:/Users/juanvilu
!ENTRY com.appcelerator.titanium.ui.ide 4 0 2015-02-17 10:22:03.164
!MESSAGE (Build 3.2.1.201402041146) [ERROR] com.appcelerator.titanium.core/debug/dashboard Unknown SDK iphone
!ENTRY com.appcelerator.titanium.core 2 0 2015-02-17 10:23:32.446
!MESSAGE (Build 3.2.1.201402041146) [WARNING] Failed parsing a command handler priority. Using the default priority.
Diagnostic log
Host OS: Windows 8
OS Version: 6.2
OS Arch: x86
JRE Version: 1.7.0_55
JRE Vendor: Oracle Corporation
JRE Home: C:\Program Files (x86)\Java\jre7
Titanium Studio Version: 3.2.1.201402041146
Install Directory: file:/C:/Users/juanvilu/AppData/Local/Titanium Studio/
Workspace Directory: file:/C:/WorkSpace/
VM Arguments: -Xms128m
-Xmx1024m
-XX:MaxPermSize=256m
-Xverify:none
-Declipse.p2.unsignedPolicy=allow
-Declipse.log.size.max=10000
-Declipse.log.backup.max=5
-Djava.awt.headless=true
-Djava.class.path=C:\Users\juanvilu\AppData\Local\Titanium Studio\\plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
Language: es_MX
ACS App URL: https://api.cloud.appcelerator.com/v1/apps/create.json?key=7fI2AZHmrSvAHNKsSQKzrSXz5NWjo2tt
ACS Login URL: https://api.cloud.appcelerator.com/v1/admins/studio_login.json?key=7fI2AZHmrSvAHNKsSQKzrSXz5NWjo2tt
Latest Titanium SDK: 3.2.2.GA
Titanium SDK Version: 3.1.2.GA
SDK Modules API Version:2
SDK Timestamp: 08/14/13 12:45
SDK Build Number: 5ceaff8
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.1.2.GA
Titanium SDK Version: 3.1.3.GA
SDK Modules API Version:2
SDK Timestamp: 09/18/13 12:00
SDK Build Number: 222f4d1
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.1.3.GA
Titanium SDK Version: 3.2.0.GA
SDK Modules API Version:2
SDK Timestamp: 12/20/13 10:56
SDK Build Number: d9182d6
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.2.0.GA
Titanium SDK Version: 3.2.1.GA
SDK Modules API Version:2
SDK Timestamp: 02/06/14 17:01
SDK Build Number: 991027b
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.2.1.GA
Titanium SDK Version: 3.2.2.GA
SDK Modules API Version:2
SDK Timestamp: 03/05/14 12:21
SDK Build Number: 96e9a07
SDK Location: C:\Users\juanvilu\AppData\Roaming\Titanium\mobilesdk\win32\3.2.2.GA
Browsers
- Default system web browser: Unknown (N/A)
- Internet Explorer: 9.10.9200.17228 (C:\Program Files (x86)\Internet Explorer\iexplore.exe)
- Internet Explorer: 9.10.9200.17228 (C:\Program Files\Internet Explorer\iexplore.exe)
- Mozilla Firefox: 35.0.1 (C:\Program Files (x86)\Mozilla Firefox\firefox.exe)
- Google Chrome: 40.0.2214.91 (C:\Program Files (x86)\Google\Chrome\Application\chrome.exe)
- Opera Stable: 27.0.1689.69 (C:\Program Files (x86)\Opera\Launcher.exe)
- Safari: 5.34.57.2 (C:\Program Files (x86)\Safari\Safari.exe)
Android SDK Version: 4.4.2
Android NDK Version: r9d (64-bit)
Titanium CLI Enabled: true
Node.ACS Host URL: null
Node.JS Version: v0.10.13
NPM Path: C:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js
NPM Version: 1.3.2
C:\Users\juanvilu\AppData\Roaming\npm
├── acs#1.0.14
├── alloy#1.3.1
├── jade#1.1.5
├── stylus#0.42.2
└── titanium#3.2.1
npm -g ls titanium: C:\Users\juanvilu\AppData\Roaming\npm
└── titanium#3.2.1
Packages: C:\Users\juanvilu\AppData\Roaming\npm
├─┬ acs#1.0.14
│ ├── acs-node#0.9.2
│ ├── colors#0.6.0-1
│ ├── commander#0.6.1
│ ├─┬ connect#2.3.5
│ │ ├── bytes#0.0.1
│ │ ├── cookie#0.0.4
│ │ ├── crc#0.2.0
│ │ ├── debug#0.7.4
│ │ ├── formidable#1.0.11
│ │ ├── fresh#0.0.1
│ │ ├── mime#1.2.4
│ │ ├── qs#0.4.2
│ │ └── range-parser#0.0.4
│ ├── ejs#0.8.0
│ ├── esprima#0.9.9
│ ├─┬ express#3.0.0
│ │ ├─┬ connect#2.6.0
│ │ │ ├── bytes#0.1.0
│ │ │ ├── formidable#1.0.11
│ │ │ ├── pause#0.0.1
│ │ │ ├── qs#0.5.1
│ │ │ └─┬ send#0.0.4
│ │ │ └── mime#1.2.6
│ │ ├── cookie#0.0.4
│ │ ├── crc#0.2.0
│ │ ├── debug#0.7.4
│ │ ├── fresh#0.1.0
│ │ ├── methods#0.0.1
│ │ ├── range-parser#0.0.4
│ │ └─┬ send#0.1.0
│ │ └── mime#1.2.6
│ ├─┬ fstream#0.1.18
│ │ ├── graceful-fs#1.1.14
│ │ ├── inherits#1.0.0
│ │ └── rimraf#2.2.6
│ ├─┬ jade#0.28.1
│ │ └── coffee-script#1.4.0
│ ├─┬ log4js#0.5.1
│ │ └── async#0.1.15
│ ├── mkdirp#0.3.3
│ ├── node-uuid#1.3.3
│ ├─┬ npm#1.4.4
│ │ ├── abbrev#1.0.4
│ │ ├── ansi#0.2.1
│ │ ├── ansicolors#0.3.2
│ │ ├── ansistyles#0.1.3
│ │ ├── archy#0.0.2
│ │ ├── block-stream#0.0.7
│ │ ├── child-process-close#0.1.1
│ │ ├── chmodr#0.1.0
│ │ ├── chownr#0.0.1
│ │ ├── cmd-shim#1.1.1
│ │ ├── columnify#0.1.2
│ │ ├── editor#0.0.5
│ │ ├── fstream#0.1.25
│ │ ├─┬ fstream-npm#0.1.6
│ │ │ └── fstream-ignore#0.0.7
│ │ ├── github-url-from-git#1.1.1
│ │ ├── github-url-from-username-repo#0.0.2
│ │ ├── glob#3.2.7
│ │ ├── graceful-fs#2.0.2
│ │ ├── inherits#2.0.1
│ │ ├── ini#1.1.0
│ │ ├─┬ init-package-json#0.0.14
│ │ │ └── promzard#0.2.1
│ │ ├── lockfile#0.4.2
│ │ ├── lru-cache#2.5.0
│ │ ├─┬ minimatch#0.2.14
│ │ │ └── sigmund#1.0.0
│ │ ├── mkdirp#0.3.5
│ │ ├── node-gyp#0.12.2
│ │ ├── nopt#2.2.0
│ │ ├── npm-install-checks#1.0.0
│ │ ├── npm-registry-client#0.4.4
│ │ ├── npm-user-validate#0.0.3
│ │ ├─┬ npmconf#0.1.12
│ │ │ └─┬ config-chain#1.1.8
│ │ │ └── proto-list#1.2.2
│ │ ├── npmlog#0.0.6
│ │ ├── once#1.3.0
│ │ ├── opener#1.3.0
│ │ ├── osenv#0.0.3
│ │ ├── path-is-inside#1.0.0
│ │ ├─┬ read#1.0.5
│ │ │ └── mute-stream#0.0.4
│ │ ├── read-installed#1.0.0
│ │ ├─┬ read-package-json#1.1.7
│ │ │ └── normalize-package-data#0.2.9
│ │ ├─┬ request#2.30.0
│ │ │ ├── aws-sign2#0.5.0
│ │ │ ├── forever-agent#0.5.0
│ │ │ ├─┬ form-data#0.1.2
│ │ │ │ ├── async#0.2.9
│ │ │ │ └─┬ combined-stream#0.0.4
│ │ │ │ └── delayed-stream#0.0.5
│ │ │ ├─┬ hawk#1.0.0
│ │ │ │ ├── boom#0.4.2
│ │ │ │ ├── cryptiles#0.2.2
│ │ │ │ ├── hoek#0.9.1
│ │ │ │ └── sntp#0.2.4
│ │ │ ├─┬ http-signature#0.10.0
│ │ │ │ ├── asn1#0.1.11
│ │ │ │ ├── assert-plus#0.1.2
│ │ │ │ └── ctype#0.5.2
│ │ │ ├── json-stringify-safe#5.0.0
│ │ │ ├── mime#1.2.11
│ │ │ ├── node-uuid#1.4.1
│ │ │ ├── oauth-sign#0.3.0
│ │ │ ├── qs#0.6.6
│ │ │ ├─┬ tough-cookie#0.9.15
│ │ │ │ └── punycode#1.2.3
│ │ │ └── tunnel-agent#0.3.0
│ │ ├── retry#0.6.0
│ │ ├── rimraf#2.2.6
│ │ ├── semver#2.2.1
│ │ ├─┬ sha#1.2.3
│ │ │ └── readable-stream#1.0.24
│ │ ├── slide#1.1.5
│ │ ├── tar#0.1.19
│ │ ├── text-table#0.2.0
│ │ ├── uid-number#0.0.5
│ │ └── which#1.0.5
│ ├── pkginfo#0.2.2
│ ├─┬ request#2.14.0
│ │ ├─┬ form-data#0.0.7
│ │ │ ├── async#0.1.22
│ │ │ └─┬ combined-stream#0.0.4
│ │ │ └── delayed-stream#0.0.5
│ │ └── mime#1.2.9
│ ├─┬ socket.io#0.9.16
│ │ ├── base64id#0.1.0
│ │ ├── policyfile#0.0.4
│ │ ├── redis#0.7.3
│ │ └─┬ socket.io-client#0.9.16
│ │ ├─┬ active-x-obfuscator#0.0.1
│ │ │ └── zeparser#0.0.5
│ │ ├── uglify-js#1.2.5
│ │ ├─┬ ws#0.4.31
│ │ │ ├── nan#0.3.2
│ │ │ ├── options#0.0.5
│ │ │ └── tinycolor#0.0.1
│ │ └── xmlhttprequest#1.4.2
│ ├── string#1.1.0
│ ├─┬ tar#0.1.13
│ │ ├─┬ block-stream#0.0.7
│ │ │ └── inherits#2.0.1
│ │ └── inherits#1.0.0
│ ├── temp#0.4.0
│ ├── uglify-js#1.3.2
│ ├── underscore#1.3.3
│ └── wrench#1.3.9
├─┬ alloy#1.3.1
│ ├── colors#0.6.0-1
│ ├── commander#0.6.1
│ ├─┬ jsonlint#1.5.1
│ │ ├── JSV#4.0.2
│ │ └─┬ nomnom#1.6.2
│ │ ├── colors#0.5.1
│ │ └── underscore#1.4.4
│ ├── pkginfo#0.2.2
│ ├─┬ source-map#0.1.9
│ │ └── amdefine#0.1.0
│ ├─┬ uglify-js#2.2.5
│ │ └─┬ optimist#0.3.7
│ │ └── wordwrap#0.0.2
│ ├── wrench#1.3.9
│ ├─┬ xml2tss#0.0.5
│ │ └─┬ xml2js#0.2.8
│ │ └── sax#0.5.8
│ └── xmldom#0.1.13
├─┬ jade#1.1.5
│ ├── character-parser#1.2.0
│ ├── commander#2.1.0
│ ├─┬ constantinople#1.0.2
│ │ └─┬ uglify-js#2.4.12
│ │ ├── async#0.2.10
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ ├─┬ source-map#0.1.32
│ │ │ └── amdefine#0.1.0
│ │ └── uglify-to-browserify#1.0.2
│ ├── mkdirp#0.3.5
│ ├─┬ monocle#1.1.51
│ │ └─┬ readdirp#0.2.5
│ │ └─┬ minimatch#0.2.14
│ │ ├── lru-cache#2.5.0
│ │ └── sigmund#1.0.0
│ ├─┬ transformers#2.1.0
│ │ ├─┬ css#1.0.8
│ │ │ ├── css-parse#1.0.4
│ │ │ └── css-stringify#1.0.5
│ │ ├─┬ promise#2.0.0
│ │ │ └── is-promise#1.0.0
│ │ └─┬ uglify-js#2.2.5
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ └─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └─┬ with#2.0.0
│ └─┬ uglify-js#2.4.0
│ ├── async#0.2.10
│ ├─┬ optimist#0.3.7
│ │ └── wordwrap#0.0.2
│ ├─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └── uglify-to-browserify#1.0.2
├─┬ stylus#0.42.2
│ ├── css-parse#1.7.0
│ ├── debug#0.7.4
│ ├─┬ glob#3.2.8
│ │ ├── inherits#2.0.1
│ │ └─┬ minimatch#0.2.14
│ │ ├── lru-cache#2.5.0
│ │ └── sigmund#1.0.0
│ ├── mkdirp#0.3.5
│ └── sax#0.5.8
└─┬ titanium#3.2.1
├── async#0.2.10
├── colors#0.6.2
├─┬ fields#0.1.12
│ └── keypress#0.1.0
├── humanize#0.0.9
├─┬ jade#0.35.0
│ ├── character-parser#1.2.0
│ ├── commander#2.0.0
│ ├─┬ constantinople#1.0.2
│ │ └─┬ uglify-js#2.4.12
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ ├─┬ source-map#0.1.32
│ │ │ └── amdefine#0.1.0
│ │ └── uglify-to-browserify#1.0.2
│ ├── mkdirp#0.3.5
│ ├─┬ monocle#1.1.50
│ │ └─┬ readdirp#0.2.5
│ │ └─┬ minimatch#0.2.14
│ │ ├── lru-cache#2.5.0
│ │ └── sigmund#1.0.0
│ ├─┬ transformers#2.1.0
│ │ ├─┬ css#1.0.8
│ │ │ ├── css-parse#1.0.4
│ │ │ └── css-stringify#1.0.5
│ │ ├─┬ promise#2.0.0
│ │ │ └── is-promise#1.0.0
│ │ └─┬ uglify-js#2.2.5
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ └─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └─┬ with#1.1.1
│ └─┬ uglify-js#2.4.0
│ ├─┬ optimist#0.3.7
│ │ └── wordwrap#0.0.2
│ ├─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └── uglify-to-browserify#1.0.2
├── longjohn#0.2.2
├── moment#2.4.0
├─┬ node-appc#0.2.0
│ ├── adm-zip#0.4.4
│ ├── diff#1.0.8
│ ├─┬ dox#0.4.4
│ │ ├── commander#0.6.1
│ │ └── github-flavored-markdown#1.0.1
│ ├── node-uuid#1.4.1
│ ├── semver#2.1.0
│ ├─┬ uglify-js#2.3.6
│ │ ├─┬ optimist#0.3.7
│ │ │ └── wordwrap#0.0.2
│ │ └─┬ source-map#0.1.32
│ │ └── amdefine#0.1.0
│ └── xmldom#0.1.19
├─┬ optimist#0.6.1
│ ├── minimist#0.0.7
│ └── wordwrap#0.0.2
├─┬ request#2.27.0
│ ├── aws-sign#0.3.0
│ ├── cookie-jar#0.3.0
│ ├── forever-agent#0.5.2
│ ├─┬ form-data#0.1.2
│ │ └─┬ combined-stream#0.0.4
│ │ └── delayed-stream#0.0.5
│ ├─┬ hawk#1.0.0
│ │ ├── boom#0.4.2
│ │ ├── cryptiles#0.2.2
│ │ ├── hoek#0.9.1
│ │ └── sntp#0.2.4
│ ├─┬ http-signature#0.10.0
│ │ ├── asn1#0.1.11
│ │ ├── assert-plus#0.1.2
│ │ └── ctype#0.5.2
│ ├── json-stringify-safe#5.0.0
│ ├── mime#1.2.11
│ ├── node-uuid#1.4.1
│ ├── oauth-sign#0.3.0
│ ├── qs#0.6.6
│ └── tunnel-agent#0.3.0
├── semver#2.2.1
├── sprintf#0.1.3
├─┬ temp#0.6.0
│ ├── osenv#0.0.3
│ └─┬ rimraf#2.1.4
│ └── graceful-fs#1.2.3
├─┬ winston#0.6.2
│ ├── async#0.1.22
│ ├── cycle#1.0.3
│ ├── eyes#0.1.8
│ ├── pkginfo#0.2.3
│ ├── request#2.9.203
│ └── stack-trace#0.0.8
└── wrench#1.5.7
NPM_CONFIG_PREFIX env value: null
Npm config prefix value : C:\Users\juanvilu\AppData\Roaming\npm
ENV:
ProgramData=C:\ProgramData
USERPROFILE=C:\Users\juanvilu
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
JAVA_HOME=%PROGRAMFILES%\Java\jdk1.7.0_40\bin
ProgramFiles(x86)=C:\Program Files (x86)
VBOX_MSI_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\
Path_v2=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Java\jdk1.8.0_31\bin;C:\Program Files (x86)\nodejs\;C:\Program Files (x86)\nodejs\;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinSCP;C:\Program Files (x86)\Windows Live\Shared
SystemDrive=C:
TEMP=C:\Users\juanvilu\AppData\Local\Temp
ProgramFiles=C:\Program Files (x86)
Path=C:/Program Files (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java/jre7/bin;C:/Program Files (x86)/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Java\jdk1.7.0_40\bin;C:\Program Files (x86)\nodejs\;C:\Program Files (x86)\nodejs\;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\WinSCP;C:\Program Files (x86)\Windows Live\Shared;C:\Users\juanvilu\AppData\Roaming\npm;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\Git\bin;C:\android-sdk\tools;C:\android-sdk\platform-tools;C:\Program Files\Git\bin;C:\Program Files\nodejs;C:\Program Files\Java\jdk1.7.0_40\bin;C:\Python27;C:\Users\juanvilu\AppData\Local\Titanium Studio;
HOMEDRIVE=C:
PROCESSOR_REVISION=3a09
USERDOMAIN=dev-juanvilu-w8
ALLUSERSPROFILE=C:\ProgramData
android_sdk=c:\android-sdk
ProgramW6432=C:\Program Files
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
SESSIONNAME=Console
TMP=C:\Users\juanvilu\AppData\Local\Temp
PROCESSOR_ARCHITECTURE=x86
LOGONSERVER=\\DEV-JUANVILU-W8
CommonProgramFiles=C:\Program Files (x86)\Common Files
PROCESSOR_ARCHITEW6432=AMD64
OS=Windows_NT
FP_NO_HOST_CHECK=NO
HOMEPATH=\Users\juanvilu
PROCESSOR_LEVEL=6
CommonProgramW6432=C:\Program Files\Common Files
USERDOMAIN_ROAMINGPROFILE=dev-juanvilu-w8
LOCALAPPDATA=C:\Users\juanvilu\AppData\Local
COMPUTERNAME=DEV-JUANVILU-W8
SystemRoot=C:\Windows
windir=C:\Windows
NUMBER_OF_PROCESSORS=4
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
USERNAME=juanvilu
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
ComSpec=C:\Windows\system32\cmd.exe
APPDATA=C:\Users\juanvilu\AppData\Roaming
Confirm that you have the compatible build-tool folder, like r20. It must be compatible with the SDK tool which you are using to build. For example 3.5.0.GA can be build using r21.

What is an easy way to call a FFmpeg executable compiled for Android from java code?

I have compiled FFmpeg for Android to suite my needs in terms of codecs, muxers etc.
Now I have an executable that, from what I understand, should be placed in my project dir under <project-root>/external/<arbitrary-folder-name>/data/data/<my-app-package-name>/app_opt. What I have inside app_opt now is:
.
├── bin
│ └── ffmpeg
├── include
│ ├── libavcodec
│ │ ├── avcodec.h
│ │ ├── avfft.h
│ │ ├── dxva2.h
│ │ ├── vaapi.h
│ │ ├── vda.h
│ │ ├── vdpau.h
│ │ ├── version.h
│ │ └── xvmc.h
│ ├── libavdevice
│ │ └── avdevice.h
│ ├── libavfilter
│ │ ├── asrc_abuffer.h
│ │ ├── avcodec.h
│ │ ├── avfiltergraph.h
│ │ ├── avfilter.h
│ │ ├── buffersink.h
│ │ ├── buffersrc.h
│ │ ├── version.h
│ │ └── vsrc_buffer.h
│ ├── libavformat
│ │ ├── avformat.h
│ │ ├── avio.h
│ │ └── version.h
│ ├── libavutil
│ │ ├── adler32.h
│ │ ├── aes.h
│ │ ├── attributes.h
│ │ ├── audioconvert.h
│ │ ├── audio_fifo.h
│ │ ├── avassert.h
│ │ ├── avconfig.h
│ │ ├── avstring.h
│ │ ├── avutil.h
│ │ ├── base64.h
│ │ ├── bprint.h
│ │ ├── bswap.h
│ │ ├── common.h
│ │ ├── cpu.h
│ │ ├── crc.h
│ │ ├── dict.h
│ │ ├── error.h
│ │ ├── eval.h
│ │ ├── fifo.h
│ │ ├── file.h
│ │ ├── imgutils.h
│ │ ├── intfloat.h
│ │ ├── intfloat_readwrite.h
│ │ ├── intreadwrite.h
│ │ ├── lfg.h
│ │ ├── log.h
│ │ ├── lzo.h
│ │ ├── mathematics.h
│ │ ├── md5.h
│ │ ├── mem.h
│ │ ├── opt.h
│ │ ├── parseutils.h
│ │ ├── pixdesc.h
│ │ ├── pixfmt.h
│ │ ├── random_seed.h
│ │ ├── rational.h
│ │ ├── samplefmt.h
│ │ ├── sha.h
│ │ ├── timecode.h
│ │ └── timestamp.h
│ ├── libpostproc
│ │ └── postprocess.h
│ ├── libswresample
│ │ └── swresample.h
│ └── libswscale
│ └── swscale.h
├── lib
│ ├── libavcodec.a
│ ├── libavdevice.a
│ ├── libavfilter.a
│ ├── libavformat.a
│ ├── libavutil.a
│ ├── libpostproc.a
│ ├── libswresample.a
│ ├── libswscale.a
│ └── pkgconfig
│ ├── libavcodec.pc
│ ├── libavdevice.pc
│ ├── libavfilter.pc
│ ├── libavformat.pc
│ ├── libavutil.pc
│ ├── libpostproc.pc
│ ├── libswresample.pc
│ └── libswscale.pc
└── share
└── ffmpeg
├── examples
│ ├── decoding_encoding.c
│ ├── filtering_audio.c
│ ├── filtering_video.c
│ ├── Makefile
│ ├── metadata.c
│ └── muxing.c
├── ffprobe.xsd
├── libvpx-1080p50_60.ffpreset
├── libvpx-1080p.ffpreset
├── libvpx-360p.ffpreset
├── libvpx-720p50_60.ffpreset
├── libvpx-720p.ffpreset
├── libx264-ipod320.ffpreset
└── libx264-ipod640.ffpreset
Do I need just the ffmpeg under bin to place in my project's <project-root>/res/raw dir?
And what is the easiest way to call ffmpeg and feed it with a command string?
I compiled FFmpeg with limited decoders and demuxers, because I need audio extraction only.
See: How can I get FFmpeg to locate installed libraries when --sysroot is pointing to another directory?
I would use it in background and notify the user in notification bar on completion.
I know that, here on SO, other similar questions are present, but they are a bit vague or confusing, at least for me. I understand at this point I lack of competences (actually my App is a jigsaw made of java-code-snippets from the Net that work together).
I'd appreciate some guidance.
Thanks.
Although an executable 'ffmpeg' placed in a bin folder will run on a rooted phone, its actually not the best way to distribute ffmpeg in an app which will be suitable for general distribution.
The better interface is to use a standard JNI interface where android loads a shared lib permitting an invocation of ffmpeg and then calls the shell, android method serving as a wrapper for a CLI exec of ffmpeg.
For a great sample , see "android-ffmpeg-x264" project on github.
The android JNI interface is here
The project linked above is no longer supported. A newer alternative can be found at http://writingminds.github.io/ffmpeg-android-java/

Categories

Resources