• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hustlzp
V2EX  ›  程序员

求证:对SDK的“向下兼容”概念的理解

  •  
  •   hustlzp · Sep 14, 2013 · 3258 views
    This topic created in 4673 days ago, the information mentioned may be changed or developed.
    LZ初学Android,最近在看Android的SDK兼容性方面的资料。有点不确定自己对于“向后兼容”的概念是否理解正确,开贴向大家求证一下:

    所谓的“向后兼容”,就是说旧版本SDK中提供的API,在新版本的SDK中都有提供,2者在调用的时候没什么区别,无论是形式还是实现的功能都一样(内部实现可能不一样)。

    因此可以得出以下2个推论:

    (1)使用旧版本SDK编译的App,完全可以在新版本SDK的环境下运行;
    (2)使用新版本SDK编译的App,如果没有使用新版API(就是说只使用旧版本SDK中的API),那么完全可以在旧版本SDK的环境下运行。

    最终结论:在开发涉及SDK兼容性的应用时,应该:

    (1)根据App所必须使用到的API,来设置最小兼容的SDK版本(Minimum SDK version);
    (2)在开发过程中:要么不使用高于Minimum SDK version中的API;要么通过if进行版本测试后使用;要么加入第三方的library替代此API;
    (3)在编译的时候,一律使用最新的SDK进行编译,因为即使API在新旧SDK中看上去一样,但是其实现可能进行了优化,因此编译出来的apk文件执行效率可能更高。

    不知道以上理解是否正确?
    7 replies    1970-01-01 08:00:00 +08:00
    so898
        1
    so898  
       Sep 14, 2013
    我觉得楼主的理解挺正确的
    但是实际上没有这么好的事情的……
    比如说从Android 4.0开始强制要求网络请求开单独线程这种玩意……
    还比如说某些老版SDK里面根本就没有玩意……
    都是坑……
    hustlzp
        2
    hustlzp  
    OP
       Sep 14, 2013
    @so898 好多坑啊...目前计划做一个主要是用于内容展示的App,希望能够顺利~
    meta
        3
    meta  
       Sep 14, 2013   ❤️ 1
    最小版本号是用来对比运行库的,如果运行库版本低于这个版本号,app则不能安装,甚至在google play里面都看不到这个app。
    使用了不兼容的api的话,会编译通不过的,编译器会提示这个api只有在xxx版本才提供。通过检测目标系统Build.VERSION.SDK_INT的办法没试过,一般通过使用support库来在低版本上获得高版本的特性,当然不是所有的都可以,另外,support库也分版本的。
    至于效率什么的就不了解了,我觉得java是目标代码直接在虚拟机上运行,并不连接,用哪个版本的sdk编译没有什么区别吧。
    meta
        4
    meta  
       Sep 14, 2013
    @so898 是主线程不允许长时间操作啦,不仅限于网络连接。
    wwqgtxx
        5
    wwqgtxx  
       Sep 14, 2013 via Android
    应该更执行效率无关,除非你用ndk,androidsdk是不会有效率区别的,那个是系统内核的事情
    9hills
        6
    9hills  
       Sep 14, 2013
    除了编译那段,其他的挺对的
    hustlzp
        7
    hustlzp  
    OP
       Sep 14, 2013
    @meta
    @wwqgtxx
    @9hills 明白了,编译那段是在网上看别人说的。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5511 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 08:06 · PVG 16:06 · LAX 01:06 · JFK 04:06
    ♥ Do have faith in what you're doing.