Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-24499] Hyperloop: iOS - Unable to use a third-party framework with Hyperloop

GitHub Issuen/a
TypeBug
PriorityCritical
StatusClosed
ResolutionNot Our Bug
Resolution Date2019-01-15T18:21:38.000+0000
Affected Version/sn/a
Fix Version/sn/a
ComponentsHyperloop
Labelsn/a
Reporterrogerio.coelho
AssigneeJan Vennemann
Created2017-01-30T21:26:59.000+0000
Updated2019-01-15T18:21:38.000+0000

Description

Hi there, I'm trying to use Hyperloop to integrate a third-party framework to the app, but it is not working. The framework is a native Geolocation APIs from Android and iOS and send that data back to our systems , so our goal would be create a very simple app with our SDK integrated to Titanium to send the Geolocation data and register for push notifications to our platform, I'm new to the current Titanium version, so what would you recommend us to do to? I'm creating a sample project, a blank standard "hello world" project and follow the instructions to Hyperloop. The framework is developed on OBJC for iOS and for Android API 19 In this case I tried first the iOS one and it did fail on iMac running Sierra, latest xCode, latest Appcelerator and iOS SDK, executed the wizards for Android SDK/Simulators but it always gives me this error: [INFO] : [Hyperloop] generating class HandsMDM/HandsMDM [WARN] : [Hyperloop] Couldn't resolve typedef: ObjectType [WARN] : [Hyperloop] Not sure how to handle: name= firstObject type= typedef value= ObjectType [WARN] : [Hyperloop] Couldn't resolve typedef: ObjectType [WARN] : [Hyperloop] Not sure how to handle: name= lastObject type= typedef value= ObjectType Also I attached a screenshot of the simulator error. This is our apps.js on the project root
module.exports = {
	hyperloop: {
		ios: {
			xcodebuild: {
				flags: {
					FRAMEWORK_SEARCH_PATHS: '../../src'
				},
				frameworks: [
					'HandsMDM'
				]
			},
			thirdparty: {
				'HandsMDM': {
					source: ['src'],
					header: 'src',
					resource: 'src'
				}
			}
		}
	}
};
and our index.js
var HandsMDM = require('HandsMDM/HandsMDM');
HandsMDM.sharedManager();
HandsMDM.debugMode = true;
HandsMDM.track();
Here the apps info:
Appcelerator Command-Line Interface, version 6.1.0
Copyright (c) 2014-2017, Appcelerator, Inc.  All Rights Reserved.

Operating System
  Name                        = Mac OS X
  Version                     = 10.11.6
  Architecture                = 64bit
  # CPUs                      = 4
  Memory                      = 12.0GB

Node.js
  Node.js Version             = 4.6.0
  npm Version                 = 2.15.9

Appcelerator CLI
  Installer                   = 4.2.8
  Core Package                = 6.1.0

Titanium CLI
  CLI Version                 = 5.0.11
  node-appc Version           = 0.2.39

Titanium SDKs
  6.0.1.GA
    Version                   = 6.0.1
    Install Location          = /Users/predicta/Library/Application Support/Titanium/mobilesdk/osx/6.0.1.GA
    Platforms                 = iphone, android, mobileweb
    git Hash                  = 265db0d
    git Timestamp             = 12/20/2016 00:55
    node-appc Version         = 0.2.39
 
Mac OS X
  Command Line Tools          = installed

Intel® Hardware Accelerated Execution Manager (HAXM)
  Installed                   = yes
  Memory Limit                = 544 MB

Java Development Kit
  Version                     = 1.7.0_80
  Java Home                   = /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

Genymotion
  Path                        = not found
  Genymotion Executable       = not found
  Genymotion Player           = not found
  Home                        = not found

VirtualBox
  Executable                  = not found
  Version                     = unknown

Android SDK
  Android Executable          = /Users/predicta/Library/android-sdk-macosx/tools/android
  ADB Executable              = /Users/predicta/Library/android-sdk-macosx/platform-tools/adb
  SDK Path                    = /Users/predicta/Library/android-sdk-macosx

Android NDK
  NDK Path                    = not found
  NDK Version                 = not found

Android Platforms
  1) android-23
    Name                      = Android 6.0
    API Level                 = 23
    Revision                  = 1
    Skins                     = HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800, WVGA854, WXGA720, WXGA800, WXGA800-7in, AndroidWearRound, AndroidWearRound360x360, AndroidWearRoun
d400x400, AndroidWearRound480x480, AndroidWearRoundChin320x290, AndroidWearRoundChin320x300, AndroidWearRoundChin360x325, AndroidWearRoundChin360x326, AndroidWearRoundChin360x330
, AndroidWearSquare, AndroidWearSquare240x240, AndroidWearSquare320x320
    ABIs                      = armeabi-v7a, x86, x86_64
    Path                      = /Users/predicta/Library/android-sdk-macosx/platforms/android-23

Android Add-Ons
  None

Android Emulators
  titanium_1_WVGA800
    Path                      = /Users/predicta/.android/avd/titanium_1_WVGA800.avd
    SDK Version               = Android 6.0 (API level 23)
    ABI                       = armeabi-v7a
    Skin                      = wvga800
    SD Card                   = /Users/predicta/.android/avd/titanium_1_WVGA800.avd/sdcard.img
    Google APIs               = no

Genymotion Emulators
  None

Connected Android Devices
  None

Xcode
  8.2.1 (build 8C1002) - Xcode default
    Install Location          = /Applications/Xcode.app/Contents/Developer
    iOS SDKs                  = 10.2
    iOS Simulators            = 10.2
    Watch SDKs                = 3.1
    Watch Simulators          = 3.1
    Supported by TiSDK 6.0.1.GA = yes
    EULA Accepted             = yes
    Teams                     = none
 
iOS Keychains
  login.keychain              = /Users/predicta/Library/Keychains/login.keychain
  System.keychain             = /Library/Keychains/System.keychain

iOS Development Certificates
  None

iOS Distribution Certificates
  None

Apple WWDR Certificate
  Apple WWDR                  = installed

Development iOS Provisioning Profiles
  None

Distribution iOS Provisioning Profiles
  None

Ad Hoc iOS Provisioning Profiles
  None

iOS Simulators
10.2
  iPad Retina (ipad)
    UDID                      = 5D4E3756-B0EC-45D1-A244-30D1E5999D04
    Supports Watch Apps       = no
  iPad Air (ipad)
    UDID                      = CA27D66B-9C43-4CDF-95FC-5ABE672D61DE
    Supports Watch Apps       = no
  iPad Air 2 (ipad)
    UDID                      = 283AB17C-4F91-4E7D-8823-B24CC0847CA3
    Supports Watch Apps       = no
  iPad Pro (9.7 inch) (iPad Pro (9.7-inch)) (ipad)
    UDID                      = 93182EA8-A62E-4A63-A94A-A8F954983F78
    Supports Watch Apps       = no
  iPad Pro (12.9 inch) (iPad Pro (12.9-inch)) (ipad)
    UDID                      = 3172C9DE-5A01-44A3-A8AD-923A89FA3831
    Supports Watch Apps       = no
  iPhone 5 (iphone)
    UDID                      = F2DA8731-20C9-42C3-BD62-FCF18426F03C
    Supports Watch Apps       = yes
  iPhone 5s (iphone)
    UDID                      = 43CC07F7-6F0E-4524-B360-EF4A246FE252
    Supports Watch Apps       = yes
  iPhone 6 Plus (iphone)
    UDID                      = 0C619B45-699C-4918-B8A1-44E1ACCCE0C9
    Supports Watch Apps       = yes
  iPhone 6 (iphone)
    UDID                      = B42F2AB7-24DA-44EF-A638-DC0A38DCD2A8
    Supports Watch Apps       = yes
  iPhone 6s (iphone)
    UDID                      = 224B5EB3-8D72-4EE0-A27D-B9251BCB3ABE
    Supports Watch Apps       = yes
  iPhone 6s Plus (iphone)
    UDID                      = 2DEFEE14-5FF5-46F0-A192-CFCD93D8860E
    Supports Watch Apps       = yes
  iPhone SE (iphone)
    UDID                      = E98172E3-E8B6-41C6-962D-2BD32F058BE9
    Supports Watch Apps       = yes
  iPhone 7 (iphone)
    UDID                      = EC1D83EB-764B-4664-8A57-8529DCD9F668
    Supports Watch Apps       = yes
  iPhone 7 Plus (iphone)
    UDID                      = B4DB4DE3-4A0A-487B-B90D-E3B75DADF418
    Supports Watch Apps       = yes

WatchOS Simulators
3.1
  Apple Watch - 38mm (watch)
    UDID                      = 67D591E4-7D41-4F38-8576-538600D99121
  Apple Watch - 42mm (watch)
    UDID                      = 4026C913-5F58-4A12-9C94-1E1C5DC00A69
  Apple Watch Series 2 - 38mm (watch)
    UDID                      = D8D58DAC-4D7E-4791-8786-7DF3FC0EF7F6
  Apple Watch Series 2 - 42mm (watch)
    UDID                      = DF62B50E-9DCC-4576-B02A-B4AA0D1BD7DD

Connected iOS Devices
  None

Attachments

FileDateSize
Captura de Tela 2017-01-30 às 5.02.21 PM.png2017-01-30T21:24:57.000+000089665
HandsMDM.framework_for_development.tar.gz2017-03-16T19:15:13.000+0000155821
HandsMDM.framework_for_release.tar.gz2017-03-16T19:15:13.000+000076735

Comments

  1. Hans Knöchel 2017-01-31

    Hey [~rogerio.coelho], can you provide the framework for a closer look?
  2. rogerio.coelho 2017-01-31

    @Hans Knöchel . Thanks for getting back. I attached it to the ticket. There is a plist file that need to be imported to the XCode project with the basic configuration for the framework, if it is not found or invalid, the framework does not crash, it starts and simply do not track the info we need, so on normal conditions, this should work. I can confirm the framework is working fine on a native OBJC project
  3. rogerio.coelho 2017-02-01

    @Hans Knöchel I forgot to mention that this framework is for simulators only, if need I can send the release one, they are the same, we just don't make a fat binary for the frameworks
  4. Sharif AbuDarda 2017-03-16

    Hello, [~rogerio.coelho], Can you follow up your current status? Also, send a release version of the framework.
  5. rogerio.coelho 2017-03-16

    The latest version of the framework. We have built one for release and other for the simulator
  6. rogerio.coelho 2017-03-16

    @sdarda Hello Sharif AbuDarda. We're still waiting for your feedback on this issue. Currently we are unable to go forward on implement Appcelerator until we have this issue fixed. The latest version is attached, we've built the release and simulator separately, so there is no need for a build script to strip the simulator binares.
  7. Jan Vennemann 2017-03-31

    [~sdarda], i just tried their framework with TiSDK 6.0.3.GA and Hyperloop 2.0.1 and it works for me after some small changes. First they need to adjust the runpath search paths via a xcode build flags option in appc.js. Just place it under FRAMEWORK_SEARCH_PATHS:
       LD_RUNPATH_SEARCH_PATHS: '@executable_path'
       
    After that they need to change their code slightly so it looks something like this:
       var HandsMDM = require('HandsMDM/HandsMDM');
       var sharedManager = HandsMDM.sharedManager();
       sharedManager.debugMode = true;
       sharedManager.track();
       
    I still get an exception from their Framework that the publisherId key is missing but i guess that's because some initialization is missing from that code example.
  8. Jan Vennemann 2019-01-15

    Closing ticket due to inactivity. If the issue still persists please reopen.

JSON Source