mirror of
https://github.com/AppleCommander/AppleCommander.git
synced 2024-12-21 01:30:34 +00:00
Adding ability to compile for Raspberry Pi. #45
This commit is contained in:
parent
33492f949f
commit
3cf8c4a9b5
41
DEVELOPER.md
41
DEVELOPER.md
@ -13,7 +13,7 @@ $ ./gradlew test
|
||||
## Building
|
||||
|
||||
```
|
||||
$ ./gradlew assemble
|
||||
$ ./gradlew clean assemble
|
||||
|
||||
BUILD SUCCESSFUL in 2s
|
||||
6 actionable tasks: 6 executed
|
||||
@ -44,3 +44,42 @@ To launch the GUI version of AppleCommander, use the following:
|
||||
* Mac OS X:
|
||||
`java -XstartOnFirstThread -jar build/libs/AppleCommander-macosx-VERSION.jar`
|
||||
|
||||
## Raspberry Pi Notes
|
||||
|
||||
Available versions found are: `3.8` and `4.6`. `4.6` failed with a JNI issue.
|
||||
|
||||
Retrieve libraries:
|
||||
|
||||
```
|
||||
$ sudo apt install libswt-gtk-3-java libswt-gtk-3-jni
|
||||
```
|
||||
|
||||
Combine into one JAR (`-j` drops the directories from `*.so` files in the zip file):
|
||||
|
||||
```
|
||||
$ cp /usr/lib/java/swt-gtk-3.8.2.jar org.eclipse.swt.gtk.linux.arm-3.8.2.jar
|
||||
$ zip -j org.eclipse.swt.gtk.linux.arm-3.8.2.jar /usr/lib/jni/libswt-*3836*.so
|
||||
```
|
||||
|
||||
Preserve JAR file in `rpi-lib`! If the file name is incorrect, the build process will show the expected filename in the error message...
|
||||
|
||||
Error for 4.6:
|
||||
|
||||
```
|
||||
** (SWT:12220): CRITICAL **: 15:12:55.506: JNI method ID pointer is NULL for method atkObject_get_role
|
||||
|
||||
java.lang.reflect.InvocationTargetException
|
||||
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||
at com.webcodepro.applecommander.ui.AppleCommander.launchSwtAppleCommander(AppleCommander.java:103)
|
||||
at com.webcodepro.applecommander.ui.AppleCommander.main(AppleCommander.java:57)
|
||||
Caused by: java.lang.NoSuchMethodError: atkObject_get_role
|
||||
at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
|
||||
at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1581)
|
||||
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4470)
|
||||
at com.webcodepro.applecommander.ui.swt.SwtAppleCommander.launch(SwtAppleCommander.java:93)
|
||||
at com.webcodepro.applecommander.ui.swt.SwtAppleCommander.launch(SwtAppleCommander.java:79)
|
||||
... 6 more
|
||||
```
|
30
build.gradle
30
build.gradle
@ -8,9 +8,13 @@ plugins {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven {
|
||||
// SWT libraries
|
||||
// SWT libraries (historical, need a better site)
|
||||
url "http://maven-eclipse.github.io/maven"
|
||||
}
|
||||
flatDir {
|
||||
// SWT libraries (hand-generated SWT for Pi)
|
||||
dirs "./rpi-lib"
|
||||
}
|
||||
}
|
||||
|
||||
mainClassName = 'com.webcodepro.applecommander.ui.AppleCommander'
|
||||
@ -22,13 +26,18 @@ compileJava {
|
||||
}
|
||||
|
||||
test {
|
||||
String osName = System.getProperty('os.name').toLowerCase().split()[0]
|
||||
String osArch = System.getProperty('os.arch').toLowerCase().split()[0]
|
||||
String swtDependency
|
||||
switch (System.getProperty('os.name').toLowerCase().split()[0]) {
|
||||
switch (osName) {
|
||||
case 'windows':
|
||||
swtDependency = "org.eclipse.swt:org.eclipse.swt.win32.win32.x86_64:$swtVersion"
|
||||
break
|
||||
case 'linux':
|
||||
swtDependency = "org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64:$swtVersion"
|
||||
if (osArch == 'arm') {
|
||||
swtDependency = "org.eclipse.swt:org.eclipse.swt.gtk.linux.arm:$piswtVersion"
|
||||
}
|
||||
break
|
||||
case 'mac':
|
||||
swtDependency = "org.eclipse.swt:org.eclipse.swt.cocoa.macosx.x86_64:$swtVersion"
|
||||
@ -116,7 +125,20 @@ task linuxJar(type: Jar) {
|
||||
}
|
||||
doFirst {
|
||||
// Pick and include just the Linux JAR contents
|
||||
from { configurations.runtime.collect { it.name.contains('.linux.') ? zipTree(it) : 'fake' } }
|
||||
from { configurations.runtime.collect { it.name.contains('.linux.x86_64-') ? zipTree(it) : 'fake' } }
|
||||
}
|
||||
}
|
||||
task piJar(type: Jar) {
|
||||
dependencies {
|
||||
compile "org.eclipse.swt:org.eclipse.swt.gtk.linux.arm:$piswtVersion"
|
||||
}
|
||||
appendix 'linuxarm-gtk'
|
||||
from(sourceSets.main.output) {
|
||||
include 'com/webcodepro/**'
|
||||
}
|
||||
doFirst {
|
||||
// Pick and include just the Linux JAR contents
|
||||
from { configurations.runtime.collect { it.name.contains('.linux.arm-') ? zipTree(it) : 'fake' } }
|
||||
}
|
||||
}
|
||||
task macosxJar(type: Jar) {
|
||||
@ -162,7 +184,7 @@ javadoc {
|
||||
|
||||
artifacts {
|
||||
archives mavenJar, acJar
|
||||
archives linuxJar, macosxJar, windowsJar
|
||||
archives linuxJar, piJar, macosxJar, windowsJar
|
||||
archives javadocJar, sourcesJar
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ shkVersion=1.2.2
|
||||
asVersion=1.2.1
|
||||
btVersion=0.3.1
|
||||
swtVersion=4.6.1
|
||||
piswtVersion=3.8.2
|
||||
junitVersion=4.12
|
||||
antVersion=1.8.2
|
||||
commonsLang3Version=3.7
|
||||
|
BIN
rpi-lib/org.eclipse.swt.gtk.linux.arm-3.8.2.jar
Normal file
BIN
rpi-lib/org.eclipse.swt.gtk.linux.arm-3.8.2.jar
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user