Uploaded image for project: 'Titanium SDK/CLI'
  1. Titanium SDK/CLI
  2. TIMOB-27706

Android: Native modules having uppercase "name" are excluded from build on case-sensitive systems

    Details

    • Story Points:
      5
    • Sprint:
      2020 Sprint 1

      Description

      Summary:
      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.

      [WARN]  Module facebook version 8.0.0 does not have a main jar file
      

      (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:

      1. Open the "Disk Utility" app.
      2. From the menu, click: File -> New Image -> Blank Image
      3. Click on the "Image Format" drop-down and select "sparse bundle disk image".
      4. In "Save As" field, enter: CaseSensitive.sparsebundle
      5. In "Where" field, select destination to write this image file to.
      6. In "Name" field, enter: CaseSensitive
      7. In "Size" field, enter: 1 GB
      8. Click "Format" drop-down and select "Mac OS Extended (Case-sensitive)".
      9. 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:

      1. Download kitchensink-v2 to the case sensitive volume.
      2. Download the newest release version of the ti.facebook module.
      3. Unzip module to folder: kitchensink-v2/modules/ti.facebook/...
      4. Open the "tiapp.xml" file.
      5. Build and run on Android.
      6. Notice the following gets logged:

        [WARN]  Module facebook version 8.0.0 does not have a main jar file
        

      7. Tap on the app's "Mashups" tab.
      8. Tap on the Facebook row.
      9. Notice the app crashes.

      Reason:
      Titanium's build script is doing a toLowerCase() on the JAR file name here.

      Note:
      This issue causes a build failure in Titanium 9.0.0 since moving to gradle.

        Attachments

          Activity

            People

            • Assignee:
              jquick Joshua Quick
              Reporter:
              jquick Joshua Quick
              Reviewer:
              Gary Mathews
              Tester:
              Satyam Sekhri
            • Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Backbone Issue Sync

                • Backbone Issue Sync is enabled for your project, but we do not have any synchronization info for this issue.

                  Git Integration