【发布时间】:2020-09-21 14:25:24
【问题描述】:
自 2015 年以来,我有一个应用在生产中,并且我已经使用不同的 Titanium SDK 版本对其进行了多次更新。
现在我需要再次更新它,我想使用最新的 Titanium SDK 9.0.2,但由于某种原因它无法在 Android 上启动,iOS 工作正常。该应用程序可以正确构建,但不会将其安装到设备中,并且在启动时会挂起。它显示的最后一条控制台消息是这样的:
[INFO] App successfully installed
[INFO] Starting app: com.xxx.xxx/.xxxActivity (I hided the name)
[ERROR] Application failed to launch
The current timeout is set to 120000 ms
You can increase this timeout by running: titanium.js config android.appStartTimeout <timeout ms>
它说应用程序已成功安装,但没有。我已经增加了超时时间,就像它说的那样将时间加倍,结果是一样的。
如果我使用 8.2.0.GA 运行完全相同的应用程序,它可以正常工作。
我在 MacOS 10.14.6 上使用装有 Android 9 的 Android 设备(小米米 A2 Lite)。这是我的配置:
──────────────────┤ Check Environment ├───────────────────
Node.js
✓ node installed (v10.13.0)
✓ npm installed (v6.4.1)
Titanium CLI
★ cli new version v5.2.2 available (currently v5.1.1)
Titanium CLI Dependencies
✓ acs up-to-date (v2.1.0)
✓ alloy up-to-date (v1.13.9)
✓ appc-cli-titanium up-to-date (v4.4.26)
✓ appc-inquirer up-to-date (v0.1.10)
✓ appc-logger up-to-date (v1.1.27)
✓ appc-platform-sdk up-to-date (v3.1.0)
✓ appcd up-to-date (v1.1.3)
✓ arrow up-to-date (v3.2.12)
✓ async up-to-date (v1.5.2)
✓ chalk up-to-date (v1.1.3)
✓ char-spinner up-to-date (v1.0.1)
✓ columnify up-to-date (v1.5.4)
✓ commander up-to-date (v2.9.0)
✓ debug up-to-date (v2.6.9)
✓ ejs up-to-date (v2.6.1)
✓ fields up-to-date (v0.1.24)
✓ fs-extra up-to-date (v0.26.7)
✓ inquirer up-to-date (v0.11.4)
✓ ip up-to-date (v1.1.5)
✓ jwt-simple up-to-date (v0.3.1)
✓ lodash up-to-date (v3.10.1)
✓ node-appc up-to-date (v0.2.49)
✓ node-forge up-to-date (v0.6.49)
✓ node-ios-device up-to-date (v1.7.1)
✓ npm-conf up-to-date (v1.1.3)
✓ pac-proxy-agent up-to-date (v2.0.2)
✓ plural up-to-date (v0.2.1)
✓ progress up-to-date (v1.1.8)
✓ recursive-readdir up-to-date (v2.2.2)
✓ request up-to-date (v2.88.0)
✓ retire up-to-date (v1.6.3)
✓ semver up-to-date (v5.7.0)
✓ tar up-to-date (v4.4.8)
✓ tiapp.xml up-to-date (v0.2.2)
✓ titanium up-to-date (v5.1.1)
✓ version-bump-prompt up-to-date (v3.1.2)
✓ which up-to-date (v1.3.1)
✓ wrench up-to-date (v1.5.9)
Titanium SDK
✓ latest sdk installed (v9.0.2.GA)
✓ selected sdk up-to-date (v9.0.2.GA)
Mac OS X Environment
✓ CLI Tools installed
iOS Environment
✓ Xcode installed (11.3.1)
✓ iOS SDK installed (13.2.2)
✓ WWDR cert installed
✓ developer cert installed (3 found)
✓ distribution cert installed (5 found)
✓ dev provisioning installed (21 found)
✓ dist provisioning installed (14 found)
Android Environment
✓ sdk installed (/Users/luiscript/android-sdk)
✓ tools installed (v25.2.5)
✓ platform tools installed (v29.0.6)
✓ build tools installed (v29.0.3)
✓ adb installed /Users/luiscript/android-sdk/platform-tools/adb
✕ android "android" executable not found; please reinstall Android SDK
✓ emulator installed /Users/luiscript/android-sdk/tools/emulator
✓ mksdcard installed /Users/luiscript/android-sdk/tools/mksdcard
✓ zipalign installed /Users/luiscript/android-sdk/build-tools/29.0.3/zipalign
✓ aapt installed /Users/luiscript/android-sdk/build-tools/29.0.3/aapt
✓ aidl installed /Users/luiscript/android-sdk/build-tools/29.0.3/aidl
✓ targets installed (9 found)
✓ avds installed (8 found)
✓ ndk installed (15.1.4119039)
✓ ndk-build installed (/Users/luiscript/android-ndk-r15b/ndk-build)
Java Development Kit
✓ jdk installed (v1.8.0)
✓ java installed /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java
✓ javac installed /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/javac
✓ keytool installed /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/keytool
✓ jarsigner installed /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/jarsigner
Intel® Hardware Accelerated Execution Manager (HAXM)
✓ compatible
! installed not found; install HAXM to use Android x86 emulator
Network
✓ online
- no proxy server configured
✓ Network connection test
✓ Java-based connection test
Directory Permissions
✓ home directory
✓ titanium config directory
✓ titanium sdk install directory
✓ temp directory
我尝试了不同版本的节点但没有成功。现在我已经放弃了,我想我会使用 8.2.0.GA。因为是适用于我的支持 iOS 13 和 Android 10 的最新版本。
这很奇怪,因为如果我创建一个全新的应用程序,它可以正常工作并正确安装,而且我注意到新应用程序在 tiapp.xml 文件中具有此属性:
<property name="appc-app-id" type="string">XXXXXXXXXXXXXXXXXX</property>
而我现在的应用没有那个标签,不知道是不是跟这个有关。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
你可以试试 8.3.1.GA,它是 8.x 分支中的最新版本。还可以使用
-l trace编译以查看更多输出。adb logcat将是另一个检查选项(将有很多输出,请确保观看启动过程并检查是否有任何错误)。那么,如果您在onOpen之前运行了任何可能阻止启动的代码,将会很有趣。当您使用appccli 编译时,将使用appc-app-id。它是在 appc 后端注册的 ID。如果您继续使用ticli,您可以删除它 -
8.3.1.GA 按预期工作,我很高兴有比 8.2.0.GA 更新的版本。我还用 9.0.2.GA 做了一个
-l trace,它并没有给我任何有用的东西。我相信onOpen与合金一起使用对吗?我正在使用 Titanium Classic 项目。对于adb logcat,我仍在等待完成,这太疯狂了,无法阅读,但我检查了输出,寻找一些东西,但没有发现任何错误……无论如何,非常感谢你的帮助。 -
您可以在经典应用中使用
addEventListener("open", clb)。但它在 8.x 中也应该很慢。应用程序开始在 9 中发生了变化,尤其是在 Android 上,它最终会更快(和编译!)。检查它实际上在哪里停止的艰难方法:添加大量的 console.log 来查看你要去的地方。或者使用github.com/m1ga/from_zero_to_app/blob/master/… 来单步调试您的代码。有多种方法可以找到罪魁祸首,但没有代码就很复杂:) 也尝试安装 dist 构建!我从 8 到 9 的所有过渡都非常顺利。 -
adb logcat:我一直清理我的控制台,直到启动应用程序之前的最后一刻。然后我会等待几秒钟(这里是什么都没有发生后)并终止该进程。所以你没有太多的输出,如果它在日志中,你就接近一个错误 -
我不认为 console.log 会有帮助,因为应用程序没有安装在手机上,即使控制台说它已成功安装。我会尝试你建议的一切……顺便说一句,我很久以前就在 github 上关注你,也很高兴在这里见到你。
标签: android node.js titanium appcelerator