Integrating Native Bullet for Android in Engine Ant Build Script

@normen



I just wanted to let you know I’ve started working on integrating the android native bullet build process with the ant build script used with the engine. I’ve got a good portion of it building, but I thought I should just confirm that having the Android NDK v7 loaded on the build environment used to produce the engine wouldn’t be a problem.



http://developer.android.com/sdk/ndk/index.html



In this version, they added the ability to compile NDK libraries on Windows without using cygwin.



From the What’s New section for v7

"

Experimental features You can now build your NDK source files on Windows without Cygwin by calling the ndk-build.cmd script from the command line from your project path. The script takes exactly the same arguments as the original ndk-build script. The Windows NDK package comes with its own prebuilt binaries for GNU Make, Awk and other tools required by the build. You should not need to install anything else to get a working build system.

Important: ndk-gdb does not work on Windows, so you still need Cygwin to debug.



This feature is still experimental, so feel free to try it and report issues on the public bug database or public forum. All samples and unit tests shipped with the NDK succesfully compile with this feature.

"

2 Likes

Initial test. Sorry for the long post, but wanted to give you everything.



The app starts automatically after the install. I’m not sure when the build is supposed to stop, but the platform kept saying that the task was running even when I stopped the game on the phone until I hit the X in the platform to stop the build.



The logging seems to have some issues.



Here is what the Output window shows under the BasicGameTemplate(run-android) tab:

init:

Deleting: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testbuildbuilt-jar.properties

deps-jar:

Updating property file: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testbuildbuilt-jar.properties

compile:

Copying 1 file to D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testbuild

Copy libraries to D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testdistlib.

To run this application from the command line without Ant, try:

java -jar “D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics TestdistMyGame.jar”

Copying application libraries to android project.

Deleting directory D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibs

Created dir: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibs

Copying 9 files to D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibs

Adding jMonkeyEngine3.jar for android.

Copying 3 files to D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibs

Replacing bullet library with android native version.

Expanding: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics TestmobilelibsjME3-bullet-natives-android.jar into D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibs

Deleting: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics TestmobilelibsjME3-bullet-natives-android.jar

Deleting directory D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibsx86

Copying 1 file to D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilelibs

jar:

run-android:

Building debug android application version.

Gathering info for MyGame…

Android SDK Tools Revision 15

Project Target: Android 2.2

API level: 8


Resolving library dependencies:
No library dependencies.


Creating output directories if needed...
Handling aidl files...
No aidl files to compile.
Handling RenderScript files...
No renderscript files to compile.
Handling Resources...
Found Deleted Target File
Generating resource IDs...
Compiling 1 source file to D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinclasses
Found Deleted Target File
Converting compiled files and external libraries into D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinclasses.dex...
warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.xmlpull.v1.builder.impl.XmlDocumentImpl$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.xmlpull.v1.builder.impl.XmlElementImpl$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.xmlpull.v1.builder.impl.XmlElementImpl$2) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.xmlpull.v1.builder.impl.XmlElementImpl$3) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
Crunching PNG Files in source dir: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobileres
To destination dir: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinres
Crunched 0 PNG files to update cache
Found Deleted Target File
Creating full resource package...
Found Deleted Target File
Creating MyGame-debug-unaligned.apk and signing it with a debug key...
Running zip align on final apk...
Debug Package: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics TestmobilebinMyGame-debug.apk
MyGame.debug:
Updating property file: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinbuild.prop
Updating property file: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinbuild.prop
Updating property file: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinbuild.prop
Updating property file: D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics Testmobilebinbuild.prop
Waiting for device to be ready.. Connect your device or start the emulator if not done yet.
MyGame.install:
Installing D:UserspotterecDocumentsjMonkeyProjects_NightlyPhysics TestmobilebinMyGame-debug.apk onto default emulator or device...
pkg: /data/local/tmp/MyGame-debug.apk
Success
880 KB/s (3233929 bytes in 3.585s)
MyGame.installd:
Starting: Intent { cmp=com.mycompany.mygame/.MainActivity }
Logging android device output, cancel build or stop device to stop logging.
beginning of /dev/log/main
beginning of /dev/log/system
BUILD STOPPED (total time: 1 minute 6 seconds)

The last line did not appear when I exited the app on the phone, but did appear when I clicked the X to cancel the tasks in the platform.

Here is what the NBAndroid Log window showed:
13:07:15.078 21612 #21612 DEBUG AndroidRuntime >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
13:07:15.078 21612 #21612 DEBUG AndroidRuntime CheckJNI is OFF
13:07:15.078 21612 #21612 DEBUG dalvikvm creating instr width table
13:07:15.195 21612 #21612 DEBUG AndroidRuntime Calling main entry com.android.commands.pm.Pm
13:07:15.242 21042 #21042 DEBUG dalvikvm GC_EXPLICIT freed 11K, 44% free 3025K/5379K, external 2357K/2773K, paused 27ms
13:07:15.242 489 #489 WARN ActivityManager No content provider found for:
13:07:15.304 489 #489 WARN ActivityManager No content provider found for:
13:07:15.312 489 #489 DEBUG PackageParser Scanning package: /data/app/vmdl-1405300873.tmp
13:07:15.695 489 #489 DEBUG dalvikvm GC_CONCURRENT freed 1671K, 39% free 10606K/17223K, external 5273K/6586K, paused 3ms+7ms
13:07:15.960 489 #489 DEBUG dalvikvm GC_CONCURRENT freed 1975K, 39% free 10607K/17223K, external 5273K/6586K, paused 3ms+7ms
13:07:16.046 489 #489 INFO PackageManager Removing non-system package:com.mycompany.mygame
13:07:16.046 489 #489 INFO ActivityManager Force stopping package com.mycompany.mygame uid=10162
13:07:16.054 489 #489 INFO Process Sending signal. PID: 21494 SIG: 9
13:07:17.960 489 #489 DEBUG PackageManager Scanning package com.mycompany.mygame
13:07:17.960 489 #489 INFO PackageManager Package com.mycompany.mygame codePath changed from /data/app/com.mycompany.mygame-2.apk to /data/app/com.mycompany.mygame-1.apk; Retaining data and using new
13:07:17.960 489 #489 INFO PackageManager Unpacking native libraries for /data/app/com.mycompany.mygame-1.apk
13:07:18.757 268 #268 DEBUG installd DexInv: --- BEGIN '/data/app/com.mycompany.mygame-1.apk' ---
13:07:18.906 21633 #21633 DEBUG dalvikvm creating instr width table
13:07:19.085 21633 #21633 DEBUG dalvikvm DexOpt: 'Lorg/xmlpull/v1/XmlPullParser;' has an earlier definition; blocking out
13:07:19.085 21633 #21633 DEBUG dalvikvm DexOpt: 'Lorg/xmlpull/v1/XmlPullParserFactory;' has an earlier definition; blocking out
13:07:19.085 21633 #21633 DEBUG dalvikvm DexOpt: 'Lorg/xmlpull/v1/XmlSerializer;' has an earlier definition; blocking out
13:07:19.093 21633 #21633 DEBUG dalvikvm DexOpt: 'Lorg/xmlpull/v1/XmlPullParserException;' has an earlier definition; blocking out
13:07:19.093 21633 #21633 DEBUG dalvikvm DexOpt: 'Lorg/xmlpull/v1/sax2/Driver;' has an earlier definition; blocking out
13:07:19.898 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
13:07:19.976 21633 #21633 DEBUG dalvikvm DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParser;': multiple definitions
13:07:19.976 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;'
13:07:19.984 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;'
13:07:19.984 21633 #21633 DEBUG dalvikvm DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserFactory;': multiple definitions
13:07:19.984 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserFactory;'
13:07:19.984 21633 #21633 DEBUG dalvikvm DexOpt: not verifying 'Lorg/xmlpull/v1/XmlSerializer;': multiple definitions
13:07:19.984 21633 #21633 DEBUG dalvikvm DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserException;': multiple definitions
13:07:20.000 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;'
13:07:20.000 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;'
13:07:20.000 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserFactory;'
13:07:20.000 21633 #21633 DEBUG dalvikvm DexOpt: not verifying 'Lorg/xmlpull/v1/sax2/Driver;': multiple definitions
13:07:20.000 21633 #21633 INFO dalvikvm DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlSerializer;'
13:07:20.000 21633 #21633 DEBUG dalvikvm DexOpt: load 65ms, verify+opt 905ms
13:07:21.281 268 #268 DEBUG installd DexInv: --- END '/data/app/com.mycompany.mygame-1.apk' (success) ---
13:07:21.281 489 #489 INFO ActivityManager Force stopping package com.mycompany.mygame uid=10162
13:07:21.289 489 #489 DEBUG PackageManager Activities: com.mycompany.mygame.MainActivity
13:07:21.289 489 #489 WARN PackageManager Code path for pkg : com.mycompany.mygame changing from /data/app/com.mycompany.mygame-2.apk to /data/app/com.mycompany.mygame-1.apk
13:07:21.289 489 #489 WARN PackageManager Resource path for pkg : com.mycompany.mygame changing from /data/app/com.mycompany.mygame-2.apk to /data/app/com.mycompany.mygame-1.apk
13:07:21.500 268 #268 INFO installd move /data/dalvik-cache/data@app@com.mycompany.mygame-1.apk@classes.dex -> /data/dalvik-cache/data@app@com.mycompany.mygame-1.apk@classes.dex
13:07:21.507 489 #489 DEBUG PackageManager New package installed in /data/app/com.mycompany.mygame-1.apk
13:07:21.828 489 #489 INFO ActivityManager Force stopping package com.mycompany.mygame uid=10162
13:07:21.960 489 #489 DEBUG dalvikvm GC_EXPLICIT freed 1018K, 38% free 10699K/17223K, external 5273K/6586K, paused 122ms
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.twitter, packageName=com.motorola.blur.provider.twitter
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.picasa, packageName=com.motorola.blur.provider.picasa
13:07:22.000 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.service.bsutils.MOTHER_USER_CREDS_TYPE
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.youtube, packageName=com.motorola.blur.provider.youtube
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.facebook, packageName=com.motorola.blur.provider.facebook
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.lastfm, packageName=com.motorola.blur.provider.lastfm
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.email, packageName=com.motorola.blur.provider.email
13:07:22.000 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.android.buacontactadapter
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.flickr, packageName=com.motorola.blur.provider.flickr
13:07:22.000 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.provider.activesync
13:07:22.000 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.provider.yahoo
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.myspace, packageName=com.motorola.blur.provider.myspace
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.orkut, packageName=com.motorola.blur.provider.orkut
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.linkedin, packageName=com.motorola.blur.provider.linkedin
13:07:22.000 777 #777 DEBUG Sources MOTO: Caching (read only) contact source type from acct type: com.motorola.contacts.preloaded
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.photobucket, packageName=com.motorola.blur.provider.photobucket
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.facebook.auth.login, packageName=com.facebook.katana
13:07:22.000 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.skyrock, packageName=com.motorola.blur.provider.skyrock
13:07:22.031 20368 #20368 INFO AmazonAppstore.UpdateService Self-updating enabled: true
13:07:22.031 20368 #20368 DEBUG AmazonAppstore.UpdateService Adding self-update command to UpdateService
13:07:22.031 20368 #20368 DEBUG AmazonAppstore.UpdateService Received action: com.amazon.mas.client.framework.UpdateService.APP_WAS_UNINSTALLED from intent: Intent { act=com.amazon.mas.client.framework.UpdateService.APP_WAS_UNINSTALLED cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService (has extras) }
13:07:22.039 770 #770 DEBUG PMAppInfoManager Not removing pkg as cache is not set
13:07:22.054 763 #763 INFO AppListService Came to onStart(): android.intent.action.PACKAGE_REMOVED
13:07:22.054 763 #763 INFO AppListService Package Name is com.mycompany.mygame
13:07:22.070 19685 #19685 DEBUG CustomAppUninstallReceiver onReceive() was called -w19805
13:07:22.070 19685 #19685 DEBUG CustomAppUninstallReceiver removed package name :package:com.mycompany.mygame
13:07:22.070 19685 #19685 DEBUG CustomAppUninstallReceiver saved package name :null
13:07:22.093 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: ### onReceive: context: android.app.ReceiverRestrictedContext@4054f738, action: com.slacker.appwidget.SlackerAppWidgetProvider.ACTION_PACKAGE_REMOVED, component: com.slacker.radio
13:07:22.093 19608 #19608 INFO SlackerRadio appwidget.SlackerAppWidgetProvider.widget: ACTION_PACKAGE_REMOVED
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.twitter, packageName=com.motorola.blur.provider.twitter
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.picasa, packageName=com.motorola.blur.provider.picasa
13:07:22.179 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.service.bsutils.MOTHER_USER_CREDS_TYPE
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.youtube, packageName=com.motorola.blur.provider.youtube
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.facebook, packageName=com.motorola.blur.provider.facebook
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.lastfm, packageName=com.motorola.blur.provider.lastfm
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.email, packageName=com.motorola.blur.provider.email
13:07:22.179 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.android.buacontactadapter
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.flickr, packageName=com.motorola.blur.provider.flickr
13:07:22.179 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.provider.activesync
13:07:22.179 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.provider.yahoo
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.myspace, packageName=com.motorola.blur.provider.myspace
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.orkut, packageName=com.motorola.blur.provider.orkut
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.linkedin, packageName=com.motorola.blur.provider.linkedin
13:07:22.179 777 #777 DEBUG Sources MOTO: Caching (read only) contact source type from acct type: com.motorola.contacts.preloaded
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.photobucket, packageName=com.motorola.blur.provider.photobucket
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.facebook.auth.login, packageName=com.facebook.katana
13:07:22.179 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.skyrock, packageName=com.motorola.blur.provider.skyrock
13:07:22.179 763 #763 INFO AppListService Came to onStart(): android.intent.action.PACKAGE_ADDED
13:07:22.179 763 #763 INFO AppListService Package Name is com.mycompany.mygame
13:07:22.179 763 #763 WARN ResourceType No package identifier when getting value for resource number 0x00000000
13:07:22.179 763 #763 ERROR AppListHelper Application icon not found
13:07:22.179 763 #763 ERROR AppListHelper android.content.res.Resources$NotFoundException: Resource ID #0x0
13:07:22.179 763 #763 ERROR AppListHelper at android.content.res.Resources.getValue(Resources.java:907)
13:07:22.179 763 #763 ERROR AppListHelper at android.content.res.Resources.openRawResource(Resources.java:832)
13:07:22.179 763 #763 ERROR AppListHelper at android.content.res.Resources.openRawResource(Resources.java:814)
13:07:22.179 763 #763 ERROR AppListHelper at com.motorola.android.phoneportal.handlers.applist.AppListHelper.createIconFile(AppListHelper.java:127)
13:07:22.179 763 #763 ERROR AppListHelper at com.motorola.android.phoneportal.handlers.applist.AppListService.createPkgIcons(AppListService.java:108)
13:07:22.179 763 #763 ERROR AppListHelper at com.motorola.android.phoneportal.handlers.applist.AppListService.onStart(AppListService.java:54)
13:07:22.179 763 #763 ERROR AppListHelper at android.app.Service.onStartCommand(Service.java:428)
13:07:22.179 763 #763 ERROR AppListHelper at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2121)
13:07:22.179 763 #763 ERROR AppListHelper at android.app.ActivityThread.access$2800(ActivityThread.java:124)
13:07:22.179 763 #763 ERROR AppListHelper at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1037)
13:07:22.179 763 #763 ERROR AppListHelper at android.os.Handler.dispatchMessage(Handler.java:99)
13:07:22.179 763 #763 ERROR AppListHelper at android.os.Looper.loop(Looper.java:130)
13:07:22.179 763 #763 ERROR AppListHelper at android.app.ActivityThread.main(ActivityThread.java:3821)
13:07:22.179 763 #763 ERROR AppListHelper at java.lang.reflect.Method.invokeNative(Native Method)
13:07:22.179 763 #763 ERROR AppListHelper at java.lang.reflect.Method.invoke(Method.java:507)
13:07:22.179 763 #763 ERROR AppListHelper at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
13:07:22.179 763 #763 ERROR AppListHelper at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
13:07:22.179 763 #763 ERROR AppListHelper at dalvik.system.NativeStart.main(Native Method)
13:07:22.203 20368 #20368 DEBUG AmazonAppstore.UpdateService Received action: com.amazon.mas.client.framework.UpdateService.APP_WAS_INSTALLED from intent: Intent { act=com.amazon.mas.client.framework.UpdateService.APP_WAS_INSTALLED cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService (has extras) }
13:07:22.210 820 #820 DEBUG GTalkService handlePackageInstalled: re-initialize providers
13:07:22.210 820 #820 DEBUG GTalkService [RawStanzaProvidersMgr] ##### searchProvidersFromIntent
13:07:22.210 820 #820 DEBUG GTalkService [RawStanzaProvidersMgr] no intent receivers found
13:07:22.210 770 #770 DEBUG PMAppInfoManager Not adding pkg as cache is not set
13:07:22.218 489 #489 DEBUG szipinf Initializing inflate state
13:07:22.281 19685 #19685 DEBUG CustomAppUninstallReceiver onReceive() was called -w19805
13:07:22.367 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: ### onReceive: context: android.app.ReceiverRestrictedContext@4054f738, action: com.slacker.appwidget.SlackerAppWidgetProvider.ACTION_PACKAGE_ADDED, component: com.slacker.radio
13:07:22.515 20368 #20368 DEBUG AmazonAppstore.UpdateService Received action: com.amazon.mas.client.framework.UpdateService.APP_WAS_REPLACED from intent: Intent { act=com.amazon.mas.client.framework.UpdateService.APP_WAS_REPLACED cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService (has extras) }
13:07:22.601 702 #702 DEBUG dalvikvm GC_EXTERNAL_ALLOC freed 206K, 50% free 4684K/9351K, external 9044K/9119K, paused 47ms
13:07:22.671 489 #489 DEBUG dalvikvm GC_EXPLICIT freed 1316K, 41% free 10293K/17223K, external 5273K/6586K, paused 136ms
13:07:22.695 489 #489 WARN PackageManager setEnabledSetting(ENABLED) - would have exited here
13:07:22.710 268 #268 INFO installd unlink /data/dalvik-cache/data@app@com.mycompany.mygame-2.apk@classes.dex
13:07:22.710 21612 #21612 DEBUG AndroidRuntime Shutting down VM
13:07:22.718 21612 #21612 DEBUG dalvikvm GC_CONCURRENT freed 101K, 71% free 302K/1024K, external 0K/0K, paused 0ms+1ms
13:07:22.718 21612 #21612 DEBUG jdwp Got wake-up signal, bailing out of select
13:07:22.718 21612 #21612 DEBUG dalvikvm Debugger has detached; object registry had 1 entries
13:07:23.570 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: ### onReceive: context: android.app.ReceiverRestrictedContext@4054f738, action: com.slacker.appwidget.SlackerAppWidgetProvider.ACTION_PACKAGE_REPLACED, component: com.slacker.radio
13:07:23.578 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: stopping service returned: true
13:07:23.585 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: starting service with SLACKER_INTENT_APPWIDGET_CONNECT action.
13:07:23.609 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: UpdateService.onDestroy
13:07:23.609 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: UpdateService.onCreate
13:07:23.617 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: UpdateService.onStart: intent: Intent { act=slacker.intent.appwidget.connect flg=0x20000 cmp=com.slacker.radio/com.slacker.appwidget.SlackerAppWidgetProvider$UpdateService }, flags: 2, startId: 1
13:07:23.617 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: handleCommand: intent: Intent { act=slacker.intent.appwidget.connect flg=0x20000 cmp=com.slacker.radio/com.slacker.appwidget.SlackerAppWidgetProvider$UpdateService }
13:07:23.617 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: action: slacker.intent.appwidget.connect
13:07:23.617 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: ### UpdateService.connect, slackerRadioService: null
13:07:23.617 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: connecting event handler: 1079446816
13:07:23.625 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateInit: updateClickHandling
13:07:23.625 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: refresh: updating app widget remote view.
13:07:23.625 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: refresh: updateAppWidget
13:07:23.632 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateInit: updateNowPlaying
13:07:23.632 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateNowPlaying: updating view to StartupIdleView
13:07:23.632 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateView: updateView: 2131427338
13:07:23.632 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: refresh: updating app widget remote view.
13:07:23.632 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: refresh: updateAppWidget
13:07:23.632 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateInit: updateAdvert
13:07:23.640 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: refresh: updateAppWidget
13:07:23.640 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: slacker.intent.appwidget.connect: slackerRadioService: null, this: com.slacker.appwidget.SlackerAppWidgetProvider$UpdateService@40570d20
13:07:23.640 19608 #19608 INFO SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateIdle
13:07:23.640 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: updateView: updateView: 2131427338
13:07:23.640 19608 #19608 DEBUG SlackerRadio appwidget.SlackerAppWidgetProvider.widget: refresh: updating app widget remote view.
13:07:23.710 21105 #21105 DEBUG dalvikvm GC_CONCURRENT freed 557K, 49% free 3662K/7175K, external 2357K/2773K, paused 2ms+2ms
13:07:23.882 21666 #21666 DEBUG AndroidRuntime >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
13:07:23.882 21666 #21666 DEBUG AndroidRuntime CheckJNI is OFF
13:07:23.882 21666 #21666 DEBUG dalvikvm creating instr width table
13:07:24.007 21666 #21666 DEBUG AndroidRuntime Calling main entry com.android.commands.am.Am
13:07:24.007 489 #489 INFO ActivityManager Starting: Intent { flg=0x10000000 cmp=com.mycompany.mygame/.MainActivity } from pid 21666
13:07:24.031 702 #702 DEBUG ActivityRenderTarget onPause
13:07:24.039 21666 #21666 DEBUG AndroidRuntime Shutting down VM
13:07:24.039 21666 #21666 DEBUG dalvikvm GC_CONCURRENT freed 102K, 69% free 326K/1024K, external 0K/0K, paused 1ms+0ms
13:07:24.039 21666 #21666 DEBUG dalvikvm Debugger has detached; object registry had 1 entries
13:07:24.046 21666 #21666 INFO AndroidRuntime NOTE: attach of thread 'Binder Thread #1' failed
13:07:24.093 21673 com.mycompany.mygame ERROR dalvikvm could not disable core file generation for pid 21673: Operation not permitted
13:07:24.093 489 #489 INFO ActivityManager Start proc com.mycompany.mygame for activity com.mycompany.mygame/.MainActivity: pid=21673 uid=10162 gids={}
13:07:24.125 21673 com.mycompany.mygame DEBUG dalvikvm Debugger has detached; object registry had 1 entries
13:07:24.171 21673 com.mycompany.mygame DEBUG dalvikvm Trying to load lib /data/data/com.mycompany.mygame/lib/libbulletjme.so 0x4051c798
13:07:24.179 21673 com.mycompany.mygame DEBUG dalvikvm Added shared lib /data/data/com.mycompany.mygame/lib/libbulletjme.so 0x4051c798
13:07:24.179 21673 com.mycompany.mygame DEBUG dalvikvm No JNI_OnLoad found in /data/data/com.mycompany.mygame/lib/libbulletjme.so 0x4051c798, skipping init
13:07:24.195 489 #489 INFO WindowManager Setting rotation to 1, animFlags=1
13:07:24.226 489 #489 INFO ActivityManager Config changed: { scale=1.0 imsi=311/480 loc=en_US touch=3 keys=1/1/2 nav=1/1 orien=2 layout=268435490 uiMode=17 seq=79}
13:07:24.234 729 #729 DEBUG MirrorService onRotationChanged - rotation = 1
13:07:24.234 729 #729 DEBUG MirrorService onRotationChanged! - LANDSCAPE!!!
13:07:24.234 729 #729 DEBUG MirrorUCMgrIpcCB ipcInit - Client already exists
13:07:24.234 729 #729 DEBUG MirrorEngine hdmiMirrorOrientation/270
13:07:24.242 714 #714 INFO PortalService onConfigurationChanged
13:07:24.320 714 #714 INFO AutoSignInService onConfigurationChanged
13:07:24.320 714 #714 INFO ApnEntitlementService onConfigurationChanged
13:07:24.359 21673 com.mycompany.mygame INFO JmeSystem INFO JmeSystem 1:07:24 PM Running on jMonkeyEngine 3.0.0 Beta (Android)
13:07:24.359 21673 com.mycompany.mygame DEBUG libEGL loaded /system/lib/egl/libGLES_android.so
13:07:24.367 21673 com.mycompany.mygame DEBUG libEGL loaded /system/lib/egl/libEGL_POWERVR_SGX540_120.so
13:07:24.367 21673 com.mycompany.mygame DEBUG libEGL loaded /system/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
13:07:24.375 21673 com.mycompany.mygame DEBUG libEGL loaded /system/lib/egl/libGLESv2_POWERVR_SGX540_120.so
13:07:24.429 21673 com.mycompany.mygame INFO OGLESContext Display EGL Version: 1.0
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser JME3 using best EGL configuration available here:
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser JME3 using choosen config:
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_RED_SIZE = 8
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_GREEN_SIZE = 8
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_BLUE_SIZE = 8
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_ALPHA_SIZE = 8
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_DEPTH_SIZE = 24
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_STENCIL_SIZE = 8
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_RENDERABLE_TYPE = 4
13:07:24.429 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_SURFACE_TYPE = 5
13:07:24.468 21673 com.mycompany.mygame INFO AndroidHarness INFO AndroidHarness 1:07:24 PM Settings: Width 960 Height 540
13:07:24.468 21673 com.mycompany.mygame INFO AndroidHarness onStart
13:07:24.468 21673 com.mycompany.mygame INFO AndroidHarness onResume
13:07:24.484 21673 com.mycompany.mygame INFO AndroidHarness onPause
13:07:24.492 21673 com.mycompany.mygame INFO AndroidHarness onStop
13:07:24.492 21673 com.mycompany.mygame INFO AndroidHarness onDestroy
13:07:24.507 19164 #19164 DEBUG dalvikvm GC_CONCURRENT freed 723K, 53% free 3439K/7175K, external 2357K/2773K, paused 2ms+2ms
13:07:24.531 21673 com.mycompany.mygame INFO OGLESContext Display EGL Version: 1.0
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser JME3 using best EGL configuration available here:
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser JME3 using choosen config:
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_RED_SIZE = 8
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_GREEN_SIZE = 8
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_BLUE_SIZE = 8
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_ALPHA_SIZE = 8
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_DEPTH_SIZE = 24
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_STENCIL_SIZE = 8
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_RENDERABLE_TYPE = 4
13:07:24.531 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_SURFACE_TYPE = 5
13:07:24.570 21673 com.mycompany.mygame INFO AndroidHarness INFO AndroidHarness 1:07:24 PM Settings: Width 960 Height 540
13:07:24.570 21673 com.mycompany.mygame INFO AndroidHarness onStart
13:07:24.570 21673 com.mycompany.mygame INFO AndroidHarness onResume
13:07:24.578 489 #489 INFO ActivityManager Displayed com.mycompany.mygame/.MainActivity: +492ms
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser GLSurfaceView asks for egl config, returning:
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_RED_SIZE = 8
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_GREEN_SIZE = 8
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_BLUE_SIZE = 8
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_ALPHA_SIZE = 8
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_DEPTH_SIZE = 24
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_STENCIL_SIZE = 8
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_RENDERABLE_TYPE = 4
13:07:24.710 21673 com.mycompany.mygame INFO AndroidConfigChooser EGL_SURFACE_TYPE = 5
13:07:24.757 21673 com.mycompany.mygame WARN IMGSRV eglglue.c:777: InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER
13:07:24.789 21673 com.mycompany.mygame INFO OGLESContext GL Surface created, doing JME3 init
13:07:24.789 21673 com.mycompany.mygame INFO OGLESContext OGLESContext create
13:07:24.789 21673 com.mycompany.mygame INFO OGLESContext Running on thread: GLThread 11
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM use_VBO [false] -> [false]
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM verboseLogging [false] -> [false]
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer Vendor: Imagination Technologies
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer Renderer: PowerVR SGX 540
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer Version: OpenGL ES 2.0
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM GLES20.Shading Language Version: OpenGL ES GLSL ES 1.00
13:07:24.804 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM VTF Units: 8
13:07:24.812 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Texture Units: 8
13:07:24.812 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Vertex Attributes: 16
13:07:24.812 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Subpixel Bits: 4
13:07:24.812 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Maximum Texture Resolution: 2,048
13:07:24.820 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Maximum CubeMap Resolution: 2,048
13:07:24.820 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM GL_EXTENSIONS: GL_OES_rgb8_rgba8 GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float GL_OES_texture_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_fragment_precision_high GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image GL_OES_required_internalformat GL_OES_depth_texture GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_standard_derivatives GL_OES_vertex_array_object GL_OES_egl_sync GL_EXT_multi_draw_arrays GL_EXT_texture_format_BGRA8888 GL_EXT_discard_framebuffer GL_EXT_shader_texture_lod GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_stream2 GL_IMG_texture_npot GL_IMG_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_program_binary GL_IMG_multisampled_render_to_texture
13:07:24.820 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 35,841
13:07:24.820 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 35,843
13:07:24.820 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 35,840
13:07:24.828 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 35,842
13:07:24.828 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 36,196
13:07:24.828 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 0
13:07:24.835 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 0
13:07:24.843 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Compressed Texture Formats: 0
13:07:24.851 21673 com.mycompany.mygame INFO OGLESShaderRenderer INFO OGLESShaderRenderer 1:07:24 PM Caps: [GLSL100, VertexTextureFetch]
13:07:24.851 21673 com.mycompany.mygame INFO JmeSystem INFO JmeSystem 1:07:24 PM newAssetManager(jar:file:/data/app/com.mycompany.mygame-1.apk!/com/jme3/asset/Desktop.cfg)
13:07:24.859 21673 com.mycompany.mygame INFO AssetManager DesktopAssetManager created.
13:07:24.867 21673 com.mycompany.mygame INFO AndroidAssetManager AndroidAssetManager created.
13:07:24.882 21673 com.mycompany.mygame INFO Camera INFO Camera 1:07:24 PM Camera created (W: 960, H: 540)
13:07:24.890 21673 com.mycompany.mygame INFO Camera INFO Camera 1:07:24 PM Camera created (W: 960, H: 540)
13:07:24.921 21673 com.mycompany.mygame INFO dalvikvm Total arena pages for JIT: 11
13:07:25.148 21673 com.mycompany.mygame DEBUG dalvikvm GC_CONCURRENT freed 1079K, 45% free 3980K/7175K, external 2357K/2773K, paused 3ms+3ms
13:07:25.250 21673 com.mycompany.mygame INFO MaterialDef INFO MaterialDef 1:07:25 PM Loaded material definition: Unshaded
13:07:25.273 763 #763 INFO SYS_MPP WebtopStatusHandler onDataActivity()...direction=3
13:07:25.273 763 #763 INFO SYS_MPP WebtopStatusHandler updateDataIcon()
13:07:25.335 21673 com.mycompany.mygame DEBUG dalvikvm GC_CONCURRENT freed 697K, 40% free 4371K/7239K, external 2357K/2773K, paused 2ms+4ms
13:07:25.414 21673 com.mycompany.mygame DEBUG dalvikvm GC_EXTERNAL_ALLOC freed 721K, 43% free 4163K/7239K, external 2613K/2773K, paused 36ms
13:07:25.554 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (BitmapFont) attached to this node (null)
13:07:25.554 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (null) attached to this node (Gui Node)
13:07:25.656 21673 com.mycompany.mygame DEBUG dalvikvm GC_CONCURRENT freed 835K, 39% free 4776K/7751K, external 2613K/3264K, paused 2ms+7ms
13:07:25.757 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (BitmapFont) attached to this node (null)
13:07:25.757 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (null) attached to this node (Statistics View)
13:07:25.765 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (BitmapFont) attached to this node (null)
13:07:25.765 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (null) attached to this node (Statistics View)
13:07:25.773 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (BitmapFont) attached to this node (null)
13:07:25.773 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (null) attached to this node (Statistics View)
13:07:25.781 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (null) attached to this node (Statistics View)
13:07:25.781 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (BitmapFont) attached to this node (null)
13:07:25.789 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (null) attached to this node (Statistics View)
13:07:25.789 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (Statistics View) attached to this node (Gui Node)
13:07:25.804 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (Box1) attached to this node (Root Node)
13:07:25.804 21673 com.mycompany.mygame INFO RigidBodyMotionState INFO RigidBodyMotionState 1:07:25 PM Created MotionState 313ae0
13:07:25.804 21673 com.mycompany.mygame INFO BoxCollisionShape INFO BoxCollisionShape 1:07:25 PM Created Shape 313b80
13:07:25.812 21673 com.mycompany.mygame INFO RigidBodyControl INFO PhysicsRigidBody 1:07:25 PM Created RigidBody 313bf0
13:07:25.812 21673 com.mycompany.mygame INFO RigidBodyControl INFO PhysicsCollisionObject 1:07:25 PM initUserPointer() objectId = 313bf0
13:07:25.812 21673 com.mycompany.mygame INFO PhysicsSpace INFO PhysicsSpace 1:07:25 PM Adding RigidBody 3,226,608 to physics space.
13:07:25.820 21673 com.mycompany.mygame INFO com.jme3.scene.Node INFO Node 1:07:25 PM Child (Box2) attached to this node (Root Node)
13:07:25.820 21673 com.mycompany.mygame INFO RigidBodyMotionState INFO RigidBodyMotionState 1:07:25 PM Created MotionState 316280
13:07:25.820 21673 com.mycompany.mygame INFO BoxCollisionShape INFO BoxCollisionShape 1:07:25 PM Created Shape 316320
13:07:25.820 21673 com.mycompany.mygame INFO RigidBodyControl INFO PhysicsRigidBody 1:07:25 PM Created RigidBody 316370
13:07:25.820 21673 com.mycompany.mygame INFO RigidBodyControl INFO PhysicsCollisionObject 1:07:25 PM initUserPointer() objectId = 316370
13:07:25.828 21673 com.mycompany.mygame INFO PhysicsSpace INFO PhysicsSpace 1:07:25 PM Adding RigidBody 3,236,720 to physics space.
13:07:25.828 21673 com.mycompany.mygame INFO OGLESContext GL Surface changed, width: 960 height: 540
13:07:25.890 21673 com.mycompany.mygame WARN OGLESShaderRenderer WARNING OGLESShaderRenderer 1:07:25 PM glError 1,280
13:07:25.937 21673 com.mycompany.mygame DEBUG dalvikvm GC_CONCURRENT freed 1789K, 47% free 4472K/8391K, external 2894K/3264K, paused 1ms+8ms
13:07:26.015 21673 com.mycompany.mygame DEBUG dalvikvm GC_FOR_MALLOC freed 1316K, 52% free 4096K/8391K, external 2894K/3264K, paused 30ms
13:07:26.031 631 #631 DEBUG RadioSignalLevel Cqi = 5RSRP = -90Lte RSRPlevel: 3, LTE CQi level: 2
13:07:26.281 763 #763 INFO SYS_MPP WebtopStatusHandler onDataActivity()...direction=0
13:07:26.281 763 #763 INFO SYS_MPP WebtopStatusHandler updateDataIcon()
13:07:26.789 489 #489 DEBUG dalvikvm GC_EXPLICIT freed 681K, 41% free 10277K/17223K, external 5273K/6586K, paused 135ms
13:07:27.062 631 #631 DEBUG RadioSignalLevel Cqi = 12RSRP = -90Lte RSRPlevel: 3, LTE CQi level: 4
13:07:28.093 631 #631 DEBUG RadioSignalLevel Cqi = 6RSRP = -90Lte RSRPlevel: 3, LTE CQi level: 2
13:07:28.164 21673 com.mycompany.mygame DEBUG dalvikvm GC_CONCURRENT freed 1284K, 52% free 4028K/8391K, external 2908K/3264K, paused 3ms+7ms
13:07:29.117 631 #631 DEBUG RadioSignalLevel Cqi = 11RSRP = -91Lte RSRPlevel: 3, LTE CQi level: 4
13:07:33.562 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.twitter, packageName=com.motorola.blur.provider.twitter
13:07:33.562 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.picasa, packageName=com.motorola.blur.provider.picasa
13:07:33.562 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.service.bsutils.MOTHER_USER_CREDS_TYPE
13:07:33.562 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.youtube, packageName=com.motorola.blur.provider.youtube
13:07:33.562 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.facebook, packageName=com.motorola.blur.provider.facebook
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.lastfm, packageName=com.motorola.blur.provider.lastfm
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.email, packageName=com.motorola.blur.provider.email
13:07:33.570 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.android.buacontactadapter
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.flickr, packageName=com.motorola.blur.provider.flickr
13:07:33.570 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.provider.activesync
13:07:33.570 777 #777 DEBUG Sources MOTO: Caching (writable) contact source type from acct type: com.motorola.blur.provider.yahoo
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.myspace, packageName=com.motorola.blur.provider.myspace
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.orkut, packageName=com.motorola.blur.provider.orkut
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.linkedin, packageName=com.motorola.blur.provider.linkedin
13:07:33.570 777 #777 DEBUG Sources MOTO: Caching (read only) contact source type from acct type: com.motorola.contacts.preloaded
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.photobucket, packageName=com.motorola.blur.provider.photobucket
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.facebook.auth.login, packageName=com.facebook.katana
13:07:33.570 777 #777 DEBUG Sources Creating external source for type=com.motorola.blur.provider.skyrock, packageName=com.motorola.blur.provider.skyrock
13:07:33.609 763 #763 INFO AppListService Came to onStart(): android.intent.action.PACKAGE_CHANGED
13:07:33.609 763 #763 INFO AppListService Package Name is com.google.android.apps.maps
13:07:33.632 763 #763 DEBUG AppListHelper New icon: /tmp/appicon/com.google.android.apps.maps-com.google.android.maps.MapsActivity.png
13:07:33.632 763 #763 DEBUG AppListHelper New icon: /tmp/appicon/com.google.android.apps.maps-com.google.android.maps.LatitudeActivity.png
13:07:33.640 763 #763 DEBUG AppListHelper New icon: /tmp/appicon/com.google.android.apps.maps-com.google.android.maps.PlacesActivity.png
13:07:33.640 763 #763 DEBUG AppListHelper New icon: /tmp/appicon/com.google.android.apps.maps-com.google.android.maps.driveabout.app.DestinationActivity.png
13:07:34.546 21673 com.mycompany.mygame DEBUG dalvikvm GC_CONCURRENT freed 1563K, 57% free 3660K/8391K, external 2908K/3264K, paused 3ms+2ms
13:07:36.195 631 #631 DEBUG RadioSignalLevel Cqi = 99RSRP = -80Lte RSRPlevel: 4, LTE CQi level: 4
13:07:38.875 21673 com.mycompany.mygame WARN KeyCharacterMap Can't open keycharmap file
13:07:38.875 21673 com.mycompany.mygame WARN KeyCharacterMap Error loading keycharmap file '/data/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.131072.devname='qtouch-touchscreen'
13:07:38.875 21673 com.mycompany.mygame WARN KeyCharacterMap Error loading keycharmap file '/system/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.131072.devname='qtouch-touchscreen'
13:07:38.875 21673 com.mycompany.mygame WARN KeyCharacterMap Using default keymap: /system/usr/keychars/qwerty.kcm.bin
13:07:38.875 252 #252 ERROR NetlinkListener ignoring non-kernel netlink multicast message
13:07:38.875 254 #254 ERROR NetlinkListener ignoring non-kernel netlink multicast message
13:07:38.875 249 #249 ERROR NetlinkListener ignoring non-kernel netlink multicast message
13:07:39.007 21673 com.mycompany.mygame DEBUG dalvikvm GC_EXTERNAL_ALLOC freed 842K, 57% free 3676K/8391K, external 2947K/3264K, paused 43ms
13:07:41.835 21673 com.mycompany.mygame INFO OGLESContext Display destroyed.
13:07:41.890 21673 com.mycompany.mygame INFO AndroidHarness onPause
13:07:41.906 702 #702 DEBUG ActivityRenderTarget destroy
13:07:41.921 702 #702 DEBUG ActivitityRenderTarget onResume
13:07:42.000 702 #702 WARN IMGSRV eglglue.c:777: InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER
13:07:42.328 21673 com.mycompany.mygame INFO AndroidHarness onStop
13:07:42.328 21673 com.mycompany.mygame INFO AndroidHarness onDestroy
13:07:42.984 702 #702 DEBUG dalvikvm GC_EXTERNAL_ALLOC freed 378K, 48% free 4950K/9351K, external 8991K/9025K, paused 51ms
13:07:45.421 700 #700 DEBUG PollingManager wake lock acquired
13:07:45.429 700 #700 DEBUG PollingManager decideWhoNeedsPolling(): polling EmailEngine
13:07:45.468 700 #700 DEBUG PollingManager wake lock released
13:07:45.968 489 #489 INFO WindowManager Setting rotation to 0, animFlags=0
13:07:46.015 489 #489 INFO ActivityManager Config changed: { scale=1.0 imsi=311/480 loc=en_US touch=3 keys=1/1/2 nav=1/1 orien=1 layout=268435490 uiMode=17 seq=80}
13:07:46.023 729 #729 DEBUG MirrorService onRotationChanged - rotation = 0
13:07:46.023 729 #729 DEBUG MirrorService onRotationChanged! - PORTRAIT!!!
13:07:46.023 729 #729 DEBUG MirrorUCMgrIpcCB ipcInit - Client already exists
13:07:46.023 729 #729 DEBUG MirrorEngine hdmiMirrorOrientation/0
13:07:46.031 714 #714 INFO PortalService onConfigurationChanged
13:07:46.054 702 #702 DEBUG ActivityRenderTarget onPause
13:07:46.085 714 #714 INFO AutoSignInService onConfigurationChanged
13:07:46.085 714 #714 INFO ApnEntitlementService onConfigurationChanged
13:07:46.109 702 #702 DEBUG ActivityRenderTarget destroy
1 Like

@normen



I tried this again and I think everything is working. I left the default jme3-libraries in the main project and the android version worked with native bullet without the loadLibrary or any other android specific code (automagically :)).



Is that everything? I couldn’t think of anything else to add. This will be a much needed addition.



Now on to something to replace nifty :slight_smile:

Okay cool. I’ll merge these changes some time soon then. Nifty doesn’t need to be replaced, it just added scaling for the UI and basically having multiple external XML files is the best way to go with multiple UI versions for mobile, pad, desktop etc.

I’ll retry nifty again. Last time, it brought my game down to about 4 fps with only 4 or 5 buttons in the xml file and the touch events were not passing the x,y location on to nifty.

http://hub.jmonkeyengine.org/groups/android/forum/topic/framerate-on-android-with-nifty/

http://hub.jmonkeyengine.org/groups/android/forum/topic/error-with-nifty-and-awt/?topic_page=2&num=15 (last few posts)



I would LOVE to only have to change the XML file. We shall see.



Thanks again for the native changes.

Hm, ok so this is only windows? (kinda silly given all those iOS devs are on OSX) I guess I’ll install the NDK on my windows PC some time then… Big thanks for the info, anything helps and accelerates development :slight_smile:

I think the process will be the same for windows, linux, and mac. Previously, if you were on Windows, you had to install cygwin and run the ndk-build script from within that environment. Now, you can run the build script on all 3 platforms directly.



Right now, I have the android version compiling when the bullet project is built and the resulting libraries are being included in the bullet-natives jar file. However, the android NDK needs to be installed on the machine building the libraries.



My impression is that the process will be the same when done on linux, but since I only have windows machines, I can’t tell for sure.

1 Like

Okay, would be cool if we could set this up on our linux build server… Thanks again, I’ll look into using NDK for this.

Once the NDK is installed on something with Linux, I can send the modified bullet/native/build.xml and bullet/native/bullet.properties files I am using. There’s also 2 new files needed: Android.mk and Applications.mk.



One question I have is: Where is the code that takes the appropriate native bullet library and copies it from the bullet-natives.jar file to the project? I still need to add something somewhere to copy the android native bullet libraries from the JAR file to the mobile/libs directory when a project is an android project that has the bullet-natives.jar file referenced.



Lastly, I still have to modify jmePhysicsSpace to get NDK to compile it. I think you know about that already.

1 Like

Okay, would be cool if you could post the build target for android and those files here, yes. Also maybe the instructions on how to compile bullet itself if thats not done in the script as well.



The “code” that replaces/will replace the libraries is in the nbproject/mobile-impl.xml build extension file. Its a normal ANT script and you can extend it like any ANT script… However, the needed library has to be included and referenced in the project as an ANT extension library (these are not included in the distribution) which can only be done in the code that assigns the extension to the project (in the “Android Support” plugin of the SDK). If you care to extend the script to replace the jbullet jars in the libraries with the bullet ones for android, just use a placeholder hardcoded path to the bullet jar libraries and native. I can easily replace that with a dynamically assigned library then, you actually see how its done in the script when it replaces the jMonkeyEngin3.jar with the android one.

1 Like

Keep in mind that I know next to nothing about C++ and I had never heard of ANT until I started working with jME3 a little bit ago (worked in Eclipse for Android and never used ANT :)). With that being said, I’ll post the code that I’m using. I did not change the process of building bullet itself. That part runs as normal. With NDK, it requires that the jME native bullet files and the bullet source reside together in a JNI folder. They are then built together into a single shared library and placed into a LIBS directory. Because of this, building bullet does not get affected, but the source is copied into a different directory along with the jME native files.

src/bullet/native/bullet.properties patch

[java]

This patch file was generated by NetBeans IDE

Following Index: paths are relative to: D:UserspotterecDocumentsjMonkeyProjectsjME3srcbulletnative

This patch can be applied using context Tools: Patch action on respective folder.

It uses platform neutral UTF-8 encoding and n newlines.

Above lines and this line are ignored by the patching process.

Index: bullet.properties

— bullet.properties Base (BASE)

+++ bullet.properties Locally Modified (Based On LOCAL)

@@ -4,6 +4,9 @@

bullet.library.name=bulletjme

bullet.library.version=0.9



+# location of Android NDK

+ndk.dir=D:\android\android-ndk-r7

+

change if bullet folder has different location

bullet.folder=…/bullet-2.79

[/java]



src/bullet/native/build.xml patch

[java]

This patch file was generated by NetBeans IDE

Following Index: paths are relative to: D:UserspotterecDocumentsjMonkeyProjectsjME3srcbulletnative

This patch can be applied using context Tools: Patch action on respective folder.

It uses platform neutral UTF-8 encoding and n newlines.

Above lines and this line are ignored by the patching process.

Index: build.xml

— build.xml Base (BASE)

+++ build.xml Locally Modified (Based On LOCAL)

@@ -47,7 +47,7 @@

<fileset refid="lib.jme.jars"/>

</pathconvert>


  • <target name="build-bullet-natives" description="builds the native bullet library for the platform being run on" depends="-create-folders, create-native-headers, -nativelib-osx, -nativelib-windows, -nativelib-linux, -nativelib-solaris">
  • <target name="build-bullet-natives" description="builds the native bullet library for the platform being run on" depends="-create-folders, create-native-headers, -nativelib-osx, -nativelib-windows, -nativelib-linux, -nativelib-solaris, -nativelib-android-windows">

    <echo message="Updating native jME3-bullet-natives.jar"/>

    <zip basedir="${bullet.output.base}/jarcontent" file="${bullet.output.base}/jME3-bullet-natives.jar" compress="true"/>

    <copy file="${bullet.output.base}/jME3-bullet-natives.jar" todir="dist/opt/native-bullet/lib/"/>

    @@ -245,4 +245,58 @@

    </cc>

    <delete file="${bullet.output.dir}/windows/history.xml"/>

    </target>

    +
  • <target name="-nativelib-android-windows" if="isWindows">
  •   &lt;!-- delete previous android jni, libs, and obj subdirectories for a clean start --&gt;<br />
    
  •   &lt;delete dir=&quot;${bullet.source.dir}/jni&quot; failonerror=&quot;false&quot;/&gt;<br />
    
  •   &lt;delete dir=&quot;${bullet.source.dir}/libs&quot; failonerror=&quot;false&quot;/&gt;<br />
    
  •   &lt;delete dir=&quot;${bullet.source.dir}/obj&quot; failonerror=&quot;false&quot;/&gt;<br />
    
  •   &lt;!-- create the android subdirectory in jarcontent for the libbulletjme.so shared library --&gt;<br />
    
  •   &lt;mkdir dir=&quot;${bullet.output.dir}/android&quot;/&gt;<br />
    
  •   &lt;!-- create the jni subdirectory --&gt;<br />
    
  •   &lt;mkdir dir=&quot;${bullet.source.dir}/jni&quot; /&gt;<br />
    
  •   &lt;!-- copy Android.mk and Application.mk files into jni directory --&gt;<br />
    
  •    &lt;copy file=&quot;${bullet.source.dir}/AndroidMakeFiles/Android.mk&quot; todir=&quot;${bullet.source.dir}/jni&quot; verbose=&quot;true&quot;/&gt;<br />
    
  •    &lt;copy file=&quot;${bullet.source.dir}/AndroidMakeFiles/Application.mk&quot; todir=&quot;${bullet.source.dir}/jni&quot; verbose=&quot;true&quot;/&gt;<br />
    

+

  •   &lt;!-- copy edited version of jmePhysicsSpace to remove NDK compile error --&gt;<br />
    
  •   &lt;copy file=&quot;${bullet.source.dir}/AndroidMakeFiles/jmePhysicsSpace.cpp&quot; todir=&quot;${bullet.source.dir}/jni&quot; verbose=&quot;true&quot;/&gt;<br />
    

+

  •   &lt;!-- copy jME3 Native Bullet files into jni directory --&gt;<br />
    
  •    &lt;copy todir=&quot;${bullet.source.dir}/jni&quot; verbose=&quot;true&quot; flatten=&quot;false&quot;&gt;<br />
    
  •        &lt;fileset dir=&quot;${bullet.source.dir}&quot;&gt;<br />
    
  •   		&lt;include name=&quot;*.cpp&quot; /&gt;<br />
    
  •            &lt;include name=&quot;*.h&quot; /&gt;<br />
    
  •   		&lt;!-- skip jmePhysicsSpace (use edited one) to remove NDK compile error --&gt;<br />
    
  •   		&lt;exclude name=&quot;jmePhysicsSpace.cpp&quot; /&gt;<br />
    
  •        &lt;/fileset&gt;<br />
    
  •    &lt;/copy&gt;<br />
    

+

  •   &lt;!-- copy Bullet-2.79 files into jni directory --&gt;<br />
    
  •    &lt;copy todir=&quot;${bullet.source.dir}/jni&quot; verbose=&quot;true&quot; flatten=&quot;false&quot;&gt;<br />
    
  •        &lt;fileset dir=&quot;${bullet.bullet.include}&quot;&gt;<br />
    
  •   		&lt;include name=&quot;**/*.cpp&quot;/&gt;<br />
    
  •            &lt;include name=&quot;**/*.h&quot;/&gt;<br />
    
  •            &lt;include name=&quot;**/*.cl&quot;/&gt;<br />
    
  •        &lt;/fileset&gt;<br />
    
  •    &lt;/copy&gt;<br />
    

+

  •   &lt;exec executable=&quot;${ndk.dir}/ndk-build.cmd&quot; failonerror=&quot;true&quot; &gt;<br />
    
  •        &lt;arg line=&quot; -C ${bullet.source.dir}&quot;/&gt;<br />
    
  •    &lt;/exec&gt;<br />
    

+

  •   &lt;!-- copy resulting library directories to jarcontent directory --&gt;<br />
    
  •    &lt;copy todir=&quot;${bullet.output.dir}/android&quot; verbose=&quot;true&quot; flatten=&quot;false&quot;&gt;<br />
    
  •        &lt;fileset dir=&quot;${bullet.source.dir}/libs&quot;&gt;<br />
    
  •   		&lt;include name=&quot;**/*.*&quot;/&gt;<br />
    
  •            &lt;include name=&quot;**/*.*&quot;/&gt;<br />
    
  •   		&lt;exclude name=&quot;**/x86/*.*&quot;/&gt;<br />
    
  •        &lt;/fileset&gt;<br />
    
  •    &lt;/copy&gt;<br />
    

+

  •   &lt;!-- delete jni and obj directories after library is built --&gt;<br />
    
  •   &lt;delete dir=&quot;${bullet.source.dir}/jni&quot; failonerror=&quot;false&quot;/&gt;<br />
    
  •   &lt;delete dir=&quot;${bullet.source.dir}/obj&quot; failonerror=&quot;false&quot;/&gt;<br />
    

+

  • </target>

    </project>

    [/java]



    src/bullet/native/AndroidMakeFiles = new directory with android specific files to build native bullet



    src/bullet/native/AndroidMakeFiles/Application.mk

    [java]

    APP_MODULES := bulletjme

    APP_ABI := all

    [/java]



    src/bullet/native/AndroidMakeFiles/Android.mk

    [java]

/*

Bullet Continuous Collision Detection and Physics Library for Android NDK

Copyright © 2006-2009 Noritsuna Imamura http://www.siprop.org/

#

This software is provided ‘as-is’, without any express or implied warranty.

In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,

including commercial applications, and to alter it and redistribute it freely,

subject to the following restrictions:

#

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.

*/

LOCAL_PATH:= $(call my-dir)

JME3_PATH:=

BULLET_PATH:=



include $(CLEAR_VARS)



LOCAL_MODULE := bulletjme

LOCAL_C_INCLUDES :=

$(BULLET_PATH)/

$(BULLET_PATH)/BulletCollision/BroadphaseCollision

$(BULLET_PATH)/BulletCollision/CollisionDispatch

$(BULLET_PATH)/BulletCollision/CollisionShapes

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision

$(BULLET_PATH)/BulletDynamics/ConstraintSolver

$(BULLET_PATH)/BulletDynamics/Dynamics

$(BULLET_PATH)/BulletDynamics/Vehicle

$(BULLET_PATH)/LinearMath

$(BULLET_PATH)/BulletCollision

$(BULLET_PATH)/BulletDynamics

$(BULLET_PATH)/BulletMultiThreaded

$(BULLET_PATH)/BulletSoftBody

$(BULLET_PATH)/ibmsdk

$(BULLET_PATH)/LinearMath

$(BULLET_PATH)/MiniCL

$(BULLET_PATH)/vectormath

$(BULLET_PATH)/BulletCollision/BroadphaseCollision

$(BULLET_PATH)/BulletCollision/CollisionDispatch

$(BULLET_PATH)/BulletCollision/CollisionShapes

$(BULLET_PATH)/BulletCollision/Gimpact

$(BULLET_PATH)/BulletCollision/ibmsdk

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision

$(BULLET_PATH)/BulletDynamics/Character

$(BULLET_PATH)/BulletDynamics/ConstraintSolver

$(BULLET_PATH)/BulletDynamics/Dynamics

$(BULLET_PATH)/BulletDynamics/ibmsdk

$(BULLET_PATH)/BulletDynamics/Vehicle

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers

$(BULLET_PATH)/BulletMultiThreaded/out

$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask

$(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10

$(BULLET_PATH)/LinearMath/ibmsdk

$(BULLET_PATH)/MiniCL/MiniCLTask

$(BULLET_PATH)/vectormath/scalar

$(BULLET_PATH)/vectormath/sse



LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%)

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -lm -llog



LOCAL_SRC_FILES :=

$(JME3_PATH)/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp

$(JME3_PATH)/com_jme3_bullet_collision_PhysicsCollisionObject.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_CollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp

$(JME3_PATH)/com_jme3_bullet_joints_ConeJoint.cpp

$(JME3_PATH)/com_jme3_bullet_joints_HingeJoint.cpp

$(JME3_PATH)/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp

$(JME3_PATH)/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp

$(JME3_PATH)/com_jme3_bullet_joints_PhysicsJoint.cpp

$(JME3_PATH)/com_jme3_bullet_joints_Point2PointJoint.cpp

$(JME3_PATH)/com_jme3_bullet_joints_SixDofJoint.cpp

$(JME3_PATH)/com_jme3_bullet_joints_SixDofSpringJoint.cpp

$(JME3_PATH)/com_jme3_bullet_joints_SliderJoint.cpp

$(JME3_PATH)/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp

$(JME3_PATH)/com_jme3_bullet_objects_PhysicsCharacter.cpp

$(JME3_PATH)/com_jme3_bullet_objects_PhysicsGhostObject.cpp

$(JME3_PATH)/com_jme3_bullet_objects_PhysicsRigidBody.cpp

$(JME3_PATH)/com_jme3_bullet_objects_PhysicsVehicle.cpp

$(JME3_PATH)/com_jme3_bullet_objects_VehicleWheel.cpp

$(JME3_PATH)/com_jme3_bullet_PhysicsSpace.cpp

$(JME3_PATH)/com_jme3_bullet_util_DebugShapeFactory.cpp

$(JME3_PATH)/com_jme3_bullet_util_NativeMeshUtil.cpp

$(JME3_PATH)/jmeBulletUtil.cpp

$(JME3_PATH)/jmeClasses.cpp

$(JME3_PATH)/jmeMotionState.cpp

$(JME3_PATH)/jmePhysicsSpace.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDbvt.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDispatcher.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp

$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionObject.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionWorld.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btGhostObject.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btManifoldResult.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/btUnionFind.cpp

$(BULLET_PATH)/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btBox2dShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btBoxShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btCapsuleShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btCollisionShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btCompoundShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConcaveShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConeShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvex2dShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexHullShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexInternalShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btCylinderShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btEmptyShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btMultiSphereShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btOptimizedBvh.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btShapeHull.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btSphereShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTetrahedronShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleBuffer.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleCallback.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleMesh.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp

$(BULLET_PATH)/BulletCollision/CollisionShapes/btUniformScalingShape.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btContactProcessing.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btGenericPoolAllocator.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactBvh.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactShape.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/btTriangleShapeEx.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/gim_box_set.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/gim_contact.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/gim_memory.cpp

$(BULLET_PATH)/BulletCollision/Gimpact/gim_tri_collision.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp

$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp

$(BULLET_PATH)/BulletDynamics/Character/btKinematicCharacterController.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btContactConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp

$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp

$(BULLET_PATH)/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp

$(BULLET_PATH)/BulletDynamics/Dynamics/btRigidBody.cpp

$(BULLET_PATH)/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp

$(BULLET_PATH)/BulletDynamics/Dynamics/Bullet-C-API.cpp

$(BULLET_PATH)/BulletDynamics/Vehicle/btRaycastVehicle.cpp

$(BULLET_PATH)/BulletDynamics/Vehicle/btWheelInfo.cpp

$(BULLET_PATH)/BulletMultiThreaded/btGpu3DGridBroadphase.cpp

$(BULLET_PATH)/BulletMultiThreaded/btParallelConstraintSolver.cpp

$(BULLET_PATH)/BulletMultiThreaded/btThreadSupportInterface.cpp

$(BULLET_PATH)/BulletMultiThreaded/PosixThreadSupport.cpp

$(BULLET_PATH)/BulletMultiThreaded/SequentialThreadSupport.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuCollisionTaskProcess.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuFakeDma.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuLibspe2Support.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuSampleTaskProcess.cpp

$(BULLET_PATH)/BulletMultiThreaded/Win32ThreadSupport.cpp

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.cpp

$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/MiniCLTaskWrap.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp

$(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp

$(BULLET_PATH)/BulletSoftBody/btDefaultSoftBodySolver.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftBody.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftBodyHelpers.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftRigidDynamicsWorld.cpp

$(BULLET_PATH)/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp

$(BULLET_PATH)/LinearMath/btAlignedAllocator.cpp

$(BULLET_PATH)/LinearMath/btConvexHull.cpp

$(BULLET_PATH)/LinearMath/btConvexHullComputer.cpp

$(BULLET_PATH)/LinearMath/btGeometryUtil.cpp

$(BULLET_PATH)/LinearMath/btQuickprof.cpp

$(BULLET_PATH)/LinearMath/btSerializer.cpp

$(BULLET_PATH)/MiniCL/MiniCL.cpp

$(BULLET_PATH)/MiniCL/MiniCLTaskScheduler.cpp

$(BULLET_PATH)/MiniCL/MiniCLTask/MiniCLTask.cpp



include $(BUILD_SHARED_LIBRARY)

[/java]

3 Likes

Okay, thanks. I’ll look into adding this asap. As I see the bullet source is directly compiled by the NDK too, thats good, maybe I should handle it like that in the other targets too.

When the build target is finished, there should be a new directory in the jarcontent directory (/jME3/lib/bullet/jarcontent/native/android). This directory contains the output from the NDK build. There should be 2 subdirectories inside: armeabi and armeabi-v7a (an x86 directory is created, but is excluded from being copied to jarcontent in the target).



For a user project that needs the native bullet libraries, both of these directories get copied to mobile/libs so that there is a mobile/libs/armeabi directory and a mobile/libs/armeabi-v7a directory. Each of them has a different libbulletjme.so file. The Android SDK will include them in the apk. The android system decides which version of the library (armeabi or armeabi-v7a) to use based on the hardware of the phone.



Here is an excerpt from the Android NDK site (http://developer.android.com/sdk/ndk/overview.html)



The latest release of the NDK supports these ARM instruction sets:

•ARMv5TE (including Thumb-1 instructions)

•ARMv7-A (including Thumb-2 and VFPv3-D16 instructions, with optional support for NEON/VFPv3-D32 instructions)

•x86 instructions (see CPU-ARCH-ABIS.HTML for more information)



ARMv5TE machine code will run on all ARM-based Android devices. ARMv7-A will run only on devices such as the Verizon Droid or Google Nexus One that have a compatible CPU. The main difference between the two instruction sets is that ARMv7-A supports hardware FPU, Thumb-2, and NEON instructions. You can target either or both of the instruction sets — ARMv5TE is the default, but switching to ARMv7-A is as easy as adding a single line to the application’s Application.mk file, without needing to change anything else in the file. You can also build for both architectures at the same time and have everything stored in the final .apk. Complete information is provided in the CPU-ARCH-ABIS.HTML in the NDK package.



The NDK provides stable headers for libc (the C library), libm (the Math library), OpenGL ES (3D graphics library), the JNI interface, and other libraries, as listed in the Development Tools section.

1 Like

Added the build process and binaries I built to svn. It builds perfectly on osx and linux, big fat thanks again. This is exactly how you can help jME3 the best :slight_smile:



Edit: Also added automatic replacement of the libs in the SDK to svn, its not tested yet though. It does replace the libraries but I don’t know if they get correctly registered (probably the jar should be extracted and the x86 dir deleted).

1 Like

I like how you did it. Seems much more robust. If I download the nightly for the SDK will I be able to test it out for you? I previously unchecked nightly and I haven’t setup a seperate project for nightly builds yet.

Yes, but the build isn’t through yet, will be at 0h New York time… After you updated, go to the “Mobile” panel in the application settings once, that should update the build script.

Edit: I also now do expand the android libraries from the jar, so they are in the mobile/libs/armeabi and mobile/libs/armeabi-v7a folders, which should be correct, right?

Yeah. The directories should be taken out of the jar file. I’ve never tried leaving them inside. I have a seperate sdk setup for nightly, so i can try it tomorrow.

1 Like

Okay, cool. Then everything should work automagically :smiley:

@normen



I tested this out today. When I created a new project it worked fine for both the PC (windows) and Android.


  1. Created a new project
  2. Removed the jme3-libraries and added the jme3-libraries-* libraries individually
  3. Removed jme3-libraries-physics and added jme3-libraries-physics-native
  4. Created a couple of boxes with RigidBodyControl that collided into each other



    PC version ran without any issues. For Android, I had to put the following in Main.java:

    [java]

    static {

    System.loadLibrary(“bulletjme”);

    }

    [/java]



    At this point everything worked.



    However, I then created a new project that used the default jme-libraries which included jBullet. The PC version worked fine, but the Android version removed the 4 jar files needed for jBullet and put in the native bullet folders in the mobile/libs directory.



    I believe it is because of the following lines in mobile-impl.xml:

    [java]

    <target name="-test-bullet-included">

    <condition property=“bulletIsIncluded”>

    <contains string="${javac.classpath}" substring=“bullet.jar”/>

    </condition>

    </target>

    [/java]



    Both the jBullet and native Bullet jar files contain the string “bullet.jar”, so the test is passing when jBullet is being used. I think the substring should be changed to “jme3-bullet.jar” instead of “bullet.jar” so that the test only passes when the native bullet jar file is included.



    Make sense?



    This is, of course, unless your plan is to always use native bullet and not allow the use of jBullet. I didn’t think about this when I wrote the above.
1 Like