• Android零基础, 现在要负责公司的一个项目, 该如何接手?
  • 发布于 5小时前
  • 5 热度
    11 评论
项目的主要功能是使用 NFC 通过 APDU 指令对智能卡进行通信和读取资料, 然后通过 Restful API 发往后端进行核验并返回结果, 功能就这样比较单一, 顶多再加上 User Agreement 和 About Us 的静态页面,不涉及到复杂和华丽的 UI ,但要求 app 要尽可能考虑适配不同机型, 特别是大部分老年人使用的低端机。

本人 Andriod 零基础,这几年主要写后端(java)和 web 前端(vue):
1.应该使用 kotlin 还是 java? 我看官网上是主推 kotlin, 但未知入门是否困难, 坑是否多
2.界面应该用传统的 view 还是 compose? 查了一下 compose 好像在低端机会有些问题, 是不是用 view 比较稳
3.为应对上线后排查问题, 客户端日志收集, 崩溃上报一般是怎么做的
4.考虑到一些图片或文字资源,后续如果有变更就在线更新,避免重新打包上架。此类有没有一些通用的做法, 现在想到是 app 启动就调用后端一个 API 把资源拉下来做对比, 有更新就替换
用户评论
  • 封锁爱
  • 会 Java 就 Java ,用 Java 就用 View ,compose kotlin 写的,(推荐原由:没必要没苦硬吃),你又不是以后要搞这个,这东西学习成本很高的,想对 Java 来说
  • 2025/7/1 12:04:00 [ 0 ] [ 0 ] 回复
  • 晴昼烟雨长
  • 这个简单,用 Java 跟原生 view 就行,可以兼容老机器,你自己都说了,不需要华丽的 UI ,那就是有个结果反馈跟读写进度显示就行了,就一个 image 跟 button 就能完成功能了 甚至都不需要 button ,直接在启动的时候,开个后台线程用来读写数据,然后把结果反馈到主界面的 image ,就行了。
  • 2025/7/1 11:58:00 [ 0 ] [ 0 ] 回复
  • Vinda
  • 首先我非常建议用 kotlin ,而且是 full kotlin ,本身 kotlin 经过优化已经和 Java 原生没啥性能差别了,而且 full kotlin 还可以不用考虑 Java 的空安全问题了。Java 你如果用了某些高版本特性或者函数必须 desuger 。而且某些机型魔改 ART ,未实现 JVM 中的某些函数(此处指某国产自研品牌),你用 kotlin stblib 中自己实现的同功能函数就不会遇到这个坑。


    至于框架的话,考虑到设备兼容性和性能较低,首先排除 flutter ,在老低端机上性能较差,而且新版本用的 vulkan 和 Impeller 对老设备兼容性很差。uniapp 性能较差,uniapp-x 虽然是编译到原生,但其可用的插件很少,需要根据业务慎重考虑。所以基本就是 compose 和 view 里选。


    你提到的 compose 性能问题,在多个版本的优化后,基本是早期才有的问题了。目前最多就是在长列表加载复杂数据这种场景,可能在某些极端场景下不如 recycleview 了,毕竟 recycleview 是优化了很多年的东西了。而且 compose 的一个好处就在于和原生 view 无缝兼容,具体使用中可以和原生 view 混合编写。原生那堆东西写起来非常折磨人,不如 compose 写起来舒服多了,你是前端的话应该更有体会。但是 compose 也不是说没有别的问题了,比如最新版本 1.8.x 我记得在某些 Android p 设备上会闪退,需要一点魔法,太旧的版本性能又太差,我个人建议图稳定先 1.5.x-1.6.x ,等熟悉了再升级。还有就是 compose 最低兼容到 Android 5 ,你要是需要兼容 Android 4.x 这种极老的设备的话,那就只能选择原生 view 了。


    原生 view 是兼容性最强的,但也是坑最多的,写起来最折磨人的,上限极高下限极低,完全看你水平了。我反正能不用原生就不用原生写,太折磨人了。原生 view 除了写法折磨人,主要坑点在于不同版本兼容性适配,style 系统,还有不同系统对于 view 的魔改上。其中 style 系统折磨人的地方在于,它会因为你用的不同 SDK 版本,不同真机系统而出现不同的 bug ,还有 IDE 大多时候识别不出来 xml 中的问题,你需要在编译时甚至运行时闪退才知道有问题,而且很不好排查问题出在哪里。还有不同品牌系统多多少少都会魔改 view 系统,你得替他们擦屁股。
  • 2025/7/1 11:47:00 [ 0 ] [ 0 ] 回复
  • 耀国
  • 我也是安卓新手,岗位前端,年初开始依靠 Ai 维护更新着公司的安卓 App ,如果是我的话考虑到兼容性的问题
    1:语言无所谓,Java 和 Kotlin 本来就是兼容的
    2:页面绘制建议用 View ,因为要兼容老安卓机型,新手遇到兼容性问题是很头疼的,别给自己上强度,没苦硬吃
    3:第三方 SDK
    4:6 楼的建议足够了
    最后,别用 uniapp
  • 2025/7/1 11:38:00 [ 0 ] [ 0 ] 回复
  • 春风不醉
  • kotlin 和 java 都无所谓,但是原生安卓起手肯定是 kotlin ,java 已经不是优先选择。kotlin 语法基本上和 js 也差不太多,写简单的东西不会碰到语言障碍。直接用 传统 view + xml 也许对界面少的更加方便。在线更新会把你简单的 App 搞复杂了。
  • 2025/7/1 11:33:00 [ 0 ] [ 0 ] 回复
  • Spring
  • 1. 现在都推荐 Kotlin ,原因就是官方基于 Java 的库不打算更新新特性了,后续基本就没有 Java 这东西了。现在查资料基本都是用的 Kotlin 的,你有 Java 基础,Kotlin 对你来讲应该犹如开挂切菜。
    2. 你的页面比较简单,View 和 Compose 都差不多,但是你的前端经验是 Vue ,而不是老式的 Jquery ,可能用 Compose 更加适合你。官方后续也只可能推 Compsoe 。
    3. 集成第三方的 SDK ,例如腾讯的 Bugly ,这个还是挺好用的。
    4. 这个就是你 App 的架构设计问题了,和 Android 没关系。通常比较简单的做法是先拉取一个配置文件。然后直接用配置文件里面的资源。你把资源拉下来做对比, 有更新就替换,这个步骤听起来很扯,你都拉下来了,直接用最新的不就行了?这里一定要注意,图片资源一般你都是使用第三方库加载的,因为缓存问题,你最好不要使用同一个 URL 。更新了的图片要使用不同的 URL 。

  • 2025/7/1 9:17:00 [ 0 ] [ 0 ] 回复
  • 烂好人i
  • 1 如果你会 Java ,那就直接 Java 算了,否则选 Kotlin
    2 因为界面不多,要考虑兼容性和性能,直接用原生的 View 实现
    3 日志收集和崩溃上报集成个第三方的框架
    你还没考虑到这里最大的坑,就是不同安卓版本机型的 NFC 可能会有各种兼容性的问题,尽量找个别人封装好的 star 最多的库吧
  • 2025/7/1 9:07:00 [ 0 ] [ 0 ] 回复