V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hustlzp
V2EX  ›  程序员

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

  •  
  •   hustlzp ·
    hustlzp · 2013-09-14 17:02:44 +08:00 · 2669 次点击
    这是一个创建于 3869 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    1970-01-01 08:00:00 +08:00
    so898
        1
    so898  
       2013-09-14 17:24:42 +08:00
    我觉得楼主的理解挺正确的
    但是实际上没有这么好的事情的……
    比如说从Android 4.0开始强制要求网络请求开单独线程这种玩意……
    还比如说某些老版SDK里面根本就没有玩意……
    都是坑……
    hustlzp
        2
    hustlzp  
    OP
       2013-09-14 17:27:27 +08:00
    @so898 好多坑啊...目前计划做一个主要是用于内容展示的App,希望能够顺利~
    meta
        3
    meta  
       2013-09-14 17:40:31 +08:00   ❤️ 1
    最小版本号是用来对比运行库的,如果运行库版本低于这个版本号,app则不能安装,甚至在google play里面都看不到这个app。
    使用了不兼容的api的话,会编译通不过的,编译器会提示这个api只有在xxx版本才提供。通过检测目标系统Build.VERSION.SDK_INT的办法没试过,一般通过使用support库来在低版本上获得高版本的特性,当然不是所有的都可以,另外,support库也分版本的。
    至于效率什么的就不了解了,我觉得java是目标代码直接在虚拟机上运行,并不连接,用哪个版本的sdk编译没有什么区别吧。
    meta
        4
    meta  
       2013-09-14 17:41:53 +08:00
    @so898 是主线程不允许长时间操作啦,不仅限于网络连接。
    wwqgtxx
        5
    wwqgtxx  
       2013-09-14 17:59:12 +08:00 via Android
    应该更执行效率无关,除非你用ndk,androidsdk是不会有效率区别的,那个是系统内核的事情
    9hills
        6
    9hills  
       2013-09-14 18:48:23 +08:00
    除了编译那段,其他的挺对的
    hustlzp
        7
    hustlzp  
    OP
       2013-09-14 19:43:23 +08:00
    @meta
    @wwqgtxx
    @9hills 明白了,编译那段是在网上看别人说的。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5704 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.