ios - How to fix "couldn't find module: ti.cloudpush for architecture: armv7" (Appcelerator Titanium) -
i've upgraded appcelerator studio , updated project titanium sdk v5.0.2.ga 5.3.0.ga, works fine on android (although had remove color property progressbar rendered correctly), on ios showed red error screen following message...
couldn't find module: ti.cloudpush architecture: armv7
the console reports following...
[info] : app started [error] : script error couldn't find module: ti.cloudpush architecture: armv7
[error] : script error module "ui/common/loginwindow" failed leave valid exports object
[error] : script error module "common/services" failed leave valid exports object
[error] : errorcontroller up. aborting showing of modal controller
[error] : errorcontroller up. aborting showing of modal controller
a quick google search implied needed change manifest files , recompile module - it's not module wrote, it's provided appcelerator (titanium).
could please guide me what's required fix problem?
reverting 5.0.2.ga - blows up, perhaps in appcelerator studio has broken something, or applie/xcode has new requirements?
i'm deploying via usb - no appstore @ stage.
my project has following (note many of uirequireddevicecapabilities commented out, no changes here many months)...
<?xml version="1.0" encoding="utf-8"?> <ti:app xmlns:ti="http://ti.appcelerator.org"> <id>com.devology.****.app</id> <name>****</name> <version>1.37</version> <publisher>*****</publisher> <url>https://www.****.com</url> <description>****</description> <copyright>****</copyright> <icon>appicon.png</icon> <!-- android = appicon.png --> <!-- <fullscreen>false</fullscreen><navbar-hidden>false</navbar-hidden> --> <analytics>true</analytics> <guid>****</guid> <property name="ti.ui.defaultunit" type="string">dp</property> <ios> <min-ios-ver>6.0</min-ios-ver> <!-- 6.0 exclude ipad 1--> <!-- 7.0 minimum version armv7s--> <plist> <dict> <key>nslocationalwaysusagedescription</key> <string>****</string> <key>nslocationwheninuseusagedescription</key> <string>****</string> <key>uisupportedinterfaceorientations~iphone</key> <array> <string>uiinterfaceorientationportrait</string> <string>uiinterfaceorientationportraitupsidedown</string> </array> <!-- <key>uisupportedinterfaceorientations~ipad</key><array><string>uiinterfaceorientationportrait</string><string>uiinterfaceorientationportraitupsidedown</string><string>uiinterfaceorientationlandscapeleft</string><string>uiinterfaceorientationlandscaperight</string></array> --> <key>uirequirespersistentwifi</key> <!-- specifies whether app requires wi-fi connection. ios maintains active wi-fi connection open while app running. --> <false/> <key>uiprerenderedicon</key> <false/> <key>uistatusbarhidden</key> <true/> <key>beta-reports-active</key> <true/> <key>uistatusbarstyle</key> <string>uistatusbarstyledefault</string> <key>uibackgroundmodes</key> <array> <string>location</string> <!-- causes rejection apple, shouldn't need backgrounded sound because use notifications <string>audio</string> --> </array> <key>uirequireddevicecapabilities</key> <array> <!--<string>armv7</string>--> <!--iphone 3gs, iphone 4, iphone 4s, ipod 3g/4g/5g, ipad, ipad 2, ipad 3, ipad mini --> <!--<string>armv7s</string>--> <!-- iphone 5, ipad 4 --> <string>gps</string> <!-- should require gps if app needs location data more accurate cellular or wi-fi radios might otherwise provide. --> <string>location-services</string> <!-- if include 'gps' key, should include location-services key --> <!--<string>sms</string> --> <!-- include key if app requires (or prohibits) presence of messages app. might require feature if app opens urls sms scheme. --> <!--<string>telephony</string> --> <!-- include key if app requires (or prohibits) presence of phone app. might require feature if app opens urls tel scheme. --> <!--<string>wifi</string>--> <!-- include key if app requires (or prohibits) access networking features of device. --> </array> </dict> </plist> </ios> <android xmlns:android="http://schemas.android.com/apk/res/android"> <manifest android:versioncode="37" android:versionname="1.37"> <uses-permission android:name="android.permission.internet"/> <uses-permission android:name="android.permission.vibrate"/> <uses-permission android:name="android.permission.sound"/> <uses-permission android:name="android.permission.access_network_state"/> <uses-permission android:name="android.permission.access_coarse_location"/> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.access_mock_location"/> </manifest> <services> <service type="interval" url="common/androidbackgroundservice.js"/> </services> </android> <mobileweb> <precache/> <splash> <enabled>true</enabled> <inline-css-images>true</inline-css-images> </splash> <theme>default</theme> </mobileweb> <modules> <module platform="android">ti.cloudpush</module> <module platform="commonjs">ti.cloud</module> </modules> <deployment-targets> <target device="blackberry">false</target> <target device="android">true</target> <target device="ipad">false</target> <target device="iphone">true</target> <target device="mobileweb">false</target> </deployment-targets> <sdk-version>5.0.2.ga</sdk-version> .... </ti:app>
as mentioned "but on ios showed red error screen following message...",.....
the ti.cloudpush module android can see these lines in tiapp.xml:
<modules> <module platform="android">ti.cloudpush</module> <module platform="commonjs">ti.cloud</module> </modules>
now, problem have not put check on os wherever requiring cloudpush module.
i suggest code calling :
var cloudpush = require('ti.cloudpush');
so, make work, use code:
var cloudpush; if (os_android) { cloudpush = require('ti.cloudpush'); } else { cloudpush = null; }
if not help, share code calling module.