Native Android modules such as "ti.facebook" will not have their main JAR included in the app if built from a case-sensitive file system. The app will succeed to build, but attempting to use the module's APIs will fail.
For "ti.facebook", the following warning will be logged when doing a build.
(This is more of an issue on Linux where the file system is case-sensitive by default.)
How to create case-sensitive disk image on macOS:
- Open the "Disk Utility" app.
- From the menu, click: File -> New Image -> Blank Image
- Click on the "Image Format" drop-down and select "sparse bundle disk image".
- In "Save As" field, enter: CaseSensitive.sparsebundle
- In "Where" field, select destination to write this image file to.
- In "Name" field, enter: CaseSensitive
- In "Size" field, enter: 1 GB
- Click "Format" drop-down and select "Mac OS Extended (Case-sensitive)".
- Click the "Save" button.
You can mount the above image by double clicking the "CaseSensitive.sparsebundle" file. You can find the "CaseSensitive" volume in "Finder" under the "Locations" section.
Steps to reproduce:
- Download kitchensink-v2 to the case sensitive volume.
- Download the newest release version of the ti.facebook module.
- Unzip module to folder: kitchensink-v2/modules/ti.facebook/...
- Open the "tiapp.xml" file.
- Build and run on Android.
- Notice the following gets logged:
- Tap on the app's "Mashups" tab.
- Tap on the Facebook row.
- Notice the app crashes.
Titanium's build script is doing a toLowerCase() on the JAR file name here.
This issue causes a build failure in Titanium 9.0.0 since moving to gradle.