android - 编译对移动应用程序的影响?
问题描述
因此,当您创建移动应用程序时,您通常打算将您的应用程序分发到多个平台和架构。但是,由于目标代码通常取决于架构等因素,因此您必须为所有不同的手机编译应用程序。那么,您的应用程序是否真的为该应用程序可用的所有不同手机编译?每当用户在他/她的设备上运行应用程序时,是否会进行这种专门针对的编译?就像在设备本身上一样,还是在应用程序实际安装在手机上之前完成编译?
解决方案
那么,您的应用程序是否真的为该应用程序可用的所有不同手机编译?
简短的回答:是的。
每当用户在他/她的设备上运行应用程序时,是否会进行这种专门针对的编译?
不; 这是在创建包时完成的(否则您将在应用程序中发送所有源代码!)这意味着一个包可能包含在多个架构上运行所需的多个库。
就像在设备本身上一样,还是在应用程序实际安装在手机上之前完成编译?
对于要放入包中的共享对象,编译是在创建包之前完成的。在安装包的过程中,所需的共享对象被复制到手机上(我怀疑不需要的共享对象被丢弃了,但它们可能不是!)。
然而,android 支持的架构数量相对较少;虽然支持它们确实会增加包装的尺寸,但尺寸很少成为问题。
选择:
如果您不想将共享对象放入包中,另一种方法是托管它们并在运行时下载适当的对象。
这样做的问题是这确实会影响用户体验(我个人讨厌当我下载一个应用程序时,然后它说它想要下载更多;感觉它是一种绕过谷歌想要做的任何安全检查的机制)
推荐阅读
- import - 如何在导入过程中高效地重命名多个文件或部分选择这些文件的名称?
- c - GCC 11 参数顺序触发误报 Wstringop-overflow,这是错误吗?
- algorithm - 对所有 i, j 有效地求和 max(Ai+Bj, Bi+Aj)
- reactjs - Material-UI 日历中的一个视图中的十二个月 - DatePicker 或任何其他包
- php - 是否可以从其他地方更改函数内部?
- html - 全宽三列行上的水平滚动条
- c++ - 如何手动将对象序列化和反序列化到二进制文件中?
- rust - actix-web json 意外行为
- python - 播放音频与视频同步,实时生成动态帧。合理吗?
- docker - 无法访问主机 debian 上的 docker 网站