You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am working on converting a Processing OpenCV library to use Android: https://github.com/cansik/opencv-processing
My change requires adding andoid native code references to the library build
However the SDK ignores native android libraries so it is not possible to build an Android apk that requires native code.
Fixing this would open up a new set of Android libraries not currently possible, such as OpenCV, UVC cameras,
Gstreamer +Android, etc.
Expected Behavior
Allow Android Mode libraries to include native code to expand sketch functions on Android devices
Current Behavior
Build folder: C:\Users\andym\AppData\Local\Temp\android8678558073199361583sketch
Exception in thread "Thread-12" java.lang.NullPointerException: Cannot read the array length because "list" is null
at processing.app.Library.wrapFiles(Library.java:427)
at processing.app.Library.getApplicationExports(Library.java:437)
at processing.mode.android.AndroidBuild.copyImportedLibs(AndroidBuild.java:839)
at processing.mode.android.AndroidBuild.createAppModule(AndroidBuild.java:476)
at processing.mode.android.AndroidBuild.createProject(AndroidBuild.java:263)
at processing.mode.android.AndroidBuild.build(AndroidBuild.java:224)
at processing.mode.android.AndroidMode.handleRunDevice(AndroidMode.java:294)
at processing.mode.android.AndroidEditor$17.run(AndroidEditor.java:421)
Steps to Reproduce
For opencv-processing I changed build support for all android platforms
gradlew.bat releaseProcessingLib -PjavacppPlatform=android-arm,android-arm64,android-x86,android-x86_64
static FilenameFilter libraryFolderFilter = (dir, name) -> {
// skip .DS_Store files, .svn folders, etc
if (name.charAt(0) == '.') return false;
// ha, the sftp library still has one [fry 220121]
if (name.equals("CVS")) return false;
if (name.equals("export.txt")) return false;
File file = new File(dir, name);
if (file.isDirectory()) {
//noinspection RedundantIfStatement
if (name.startsWith("macos") ||
name.startsWith("windows") ||
name.startsWith("linux")) {
//name.startsWith("android")) { // no libraries use this =========>NOT TRUE UNCOMMENT THIS
return false;
}
}
return true;
};
There may be other changes needed, but until I can build my own SDK to test, this is what I know now.
The text was updated successfully, but these errors were encountered:
The issue arises not just when any of the imported libraries uses/bundles a native library, but even just when any of the platform-specific native library directories exists. In the case of the Sound library, I had to remove both the only bundled (Windows) dll, as well as delete all the empty mac-*, linux-* directories to be able to build the sketch in Android mode.
kevinstadler
added a commit
to processing/processing-sound
that referenced
this issue
Sep 25, 2023
Hey @codeanticode, could you look into this issue when you have some time? @kevinstadler is making updates to the Processing Sound Library, thanks to a grant from the Processing Foundation. We're targeting an end-of-October release, so your feedback before that would be greatly appreciated 🙏
Description
I am working on converting a Processing OpenCV library to use Android: https://github.com/cansik/opencv-processing
My change requires adding andoid native code references to the library build
However the SDK ignores native android libraries so it is not possible to build an Android apk that requires native code.
Fixing this would open up a new set of Android libraries not currently possible, such as OpenCV, UVC cameras,
Gstreamer +Android, etc.
Expected Behavior
Allow Android Mode libraries to include native code to expand sketch functions on Android devices
Current Behavior
Build folder: C:\Users\andym\AppData\Local\Temp\android8678558073199361583sketch
Exception in thread "Thread-12" java.lang.NullPointerException: Cannot read the array length because "list" is null
at processing.app.Library.wrapFiles(Library.java:427)
at processing.app.Library.getApplicationExports(Library.java:437)
at processing.mode.android.AndroidBuild.copyImportedLibs(AndroidBuild.java:839)
at processing.mode.android.AndroidBuild.createAppModule(AndroidBuild.java:476)
at processing.mode.android.AndroidBuild.createProject(AndroidBuild.java:263)
at processing.mode.android.AndroidBuild.build(AndroidBuild.java:224)
at processing.mode.android.AndroidMode.handleRunDevice(AndroidMode.java:294)
at processing.mode.android.AndroidEditor$17.run(AndroidEditor.java:421)
Steps to Reproduce
For opencv-processing I changed build support for all android platforms
gradlew.bat releaseProcessingLib -PjavacppPlatform=android-arm,android-arm64,android-x86,android-x86_64
Your Environment
Possible Causes / Solutions
I believe problem is caused by a line in processing.app.Library:
https://github.com/processing/processing4/blob/main/app/src/processing/app/Library.java
static FilenameFilter libraryFolderFilter = (dir, name) -> {
// skip .DS_Store files, .svn folders, etc
if (name.charAt(0) == '.') return false;
// ha, the sftp library still has one [fry 220121]
if (name.equals("CVS")) return false;
if (name.equals("export.txt")) return false;
};
There may be other changes needed, but until I can build my own SDK to test, this is what I know now.
The text was updated successfully, but these errors were encountered: