热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android开发分享Android5.0和Android6.0适配

gradle配置项1.compileSdkVersion用哪个AndroidSDK版本编译你的应用。因此我们强烈推荐总是使用最新的SDK进行编译。在现有代码上使用新的编译检查可以获

gradle配置项

  1. compilesdkversion
    用哪个 android sdk 版本编译你的应用。因此我们强烈推荐总是使用最新的 sdk 进行编译。在现有代码上使用新的编译检查可以获得很多好处,避免新弃用的 api ,并且为使用新的 api 做好准备。
  2. minsdkversion
    是应用可以运行的最低要求,也是各大android应用商店用来判断用户设备是否可以安装某个应用的标志之一
  3. targetsdkversion
    targetsdkversion 是 android 提供向前兼容的主要依据
targetsdkversion < 平台的api级别 向前兼容举个栗子:targetsdkversion==23(6.0),当前设备android版本7.0,运行程序时用6.0那一套接口。接口:api接口
targetsdkversion = 平台的api级别 不启用兼容性
targetsdkversion > 平台的api级别 举个栗子:targetsdkversion==23(6.0),当前设备android版本是 5.0 ,运行程序 用的是5.0那套接口。设备根本到不了6.0

是不是意味着targetsdkversion越低越好?

  1. 使用低版本api的其中一个不足,显示的效果比较out,提供的可用的接口或类比较少
  2. 高版本api会针对低版本存在的问题进行改进和完善,摈弃一下不用的类或接口,新增一些方法或属性,如果你使用的方法是在某个api被另一个方法代替的话,你可能就得在代码中区分app是运行在哪个版本的android系统
  3. 应用平台对targetsdkversion有要求

minsdkversion <= targetsdkversion <= compilesdkversion

andorid 5.0 新特性

  1. material design
  2. 支持64位art虚拟机。
  3. overview 多任务视窗。
  4. recyclerview
  5. 卡片cardview
  6. palette是一个可以从图片(bitmap)中提取颜色的帮助类,可以使ui更加美观,根据图片动态的显示相应的颜色

android 5.0适配

  1. 启动服务,不支持隐式调用的问题
    解决方案
    1. 使用action调用,必须指定包名启动(判断当前当前系统版本)
    2. componentname 传入包名和类名,必须是完整类名路径。
  2. android5.0 getrunningtasks 和getrunningappprocesses(仅返回当前应用包名)失效
    解决方案
    1. 第一种办法,用 usagestatsmanager,需要权限,且只针对系统应用有效,而且要打开设置页面。
    2. 第二种,不需要权限,外国的一个开源项目:https://github.com/jaredrummler/androidprocesses(android7.0后不生效)
  3. backgroundtint属性只能在5.0以上的api中调用
    解决方案
    1. 我们可以新建一个values-v21文件夹,这个里面声明的属性会在api21以上的机器上优先于values文件夹中执行
  4. android api 21(5.0)引入了一个drawable的子类vectordrawable
    解决方案()
    1. minsdkversion<21:如果想要渲染矢量图的话必须在app模块的build.gralde文件里添加一行代码:

       defaultconfig {      vectordrawables.usesupportlibrary = true  }
    2. 在application或者activity上加上appcompatedelegate开启compatvectorfromresources支持
    3. button,textview,应用矢量图,保险的是先把矢量图转为selector,然后selector代替矢量图使用

  5. android5.0上 webview中http和https混合问题
    解决方案

    if (build.version.sdk_int >= build.version_codes.lollipop) {     webview.getsettings().setmixedcontentmode(websettings.mixed_content_always_allow); }
  6. webview COOKIE 存储问题

     public static void syncCOOKIE(string url, string key) {      COOKIEmanager COOKIEmanager = COOKIEmanager.getinstance();      if (build.version.sdk_int >= build.version_codes.lollipop) {          COOKIEmanager.removesessionCOOKIEs(null);          COOKIEmanager.flush();      } else {          COOKIEmanager.removesessionCOOKIE();          COOKIEsyncmanager.getinstance().sync();      }      COOKIEmanager.setacceptCOOKIE(true);      COOKIEmanager.setCOOKIE(url, key);  }
  7. jobscheduler和jobservice是安卓在api 21中增加的接口(保活),功能更强的闹钟


android 6.0 适配及新特性

  1. 运行时权限,请务必在运行时检查和请求权限
    1. normal premission:普通权限
    2. dangerous permission/group: 危险权限/组

      android.permission.read_calendar允许程序读取用户日历数据
      android.permission.write_calendar允许一个程序写入但不读取用户日历数据
      android.permission.camera,允许访问摄像头进行拍照
      android.permission.read_contacts允许程序读取用户联系人数据
      android.permission.write_contacts允许程序写入但不读取用户联系人数据
      android.permission.get_accounts访问一个帐户列表在accounts service中
      android.permission.access_fine_location允许一个程序访问精良位置(如gps)
      android.permission.access_coarse_location允许一个程序访问cellid或wifi热点来获取粗略的位置
      android.permission.record_audio允许程序录制音频
      android.permission.call_phone允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认
      android.permission.read_phone_state 访问电话状态
      android.permission.read_call_log  查看电话日志
      android.permission.write_call_log写入电话日志
      android.permission.add_voicemail  允许应用程序添加系统中的语音邮件
      android.permission.use_sip  允许程序使用sip视频服务
      android.permission.process_outgoing_calls   允许应用程序监视、修改、忽略拨出的电话
      android.permission.body_sensors  允许该应用存取监测您身体状况的传感器所收集的数据,例如您的心率
      android.permission.send_sms允许程序发送sms短信
      android.permission.receive_sms允许程序监控一个将收到短信息,记录或处理
      android.permission.read_sms允许程序读取短信息
      android.permission.receive_wap_push允许程序监控将收到wap push信息
      android.permission.receive_mms允许一个程序监控将收到mms彩信,记录或处理
      android.permission.write_external_storage   允许程序写入外部存储,如sd卡上写文件
      android.permission.read_external_storage   访问您设备上的照片、媒体内容和文件

  2. 取消支持 apache http
    解决方案:
    android {
    uselibrary ‘org.apache.http.legacy’
    }

  3. boringssl
    请勿链接到并非 ndk api 组成部分的加密库,如 libcrypto.so 和 libssl.so

  4. 硬件标识符访问权
    1. wifiinfo.getmacaddress() 方法和 bluetoothadapter.getaddress() 方法现在会返回常量值 02:00:00:00:00:00。
    2. 现在想访问硬件标识,如:wifi和蓝牙,必须要有 access_fine_location或者access_coarse_location权限
      wifimanager.getscanresults()
      bluetoothdevice.action_found
      bluetoothlescanner.startscan()
  5. audiomanager类 不再支持直接设置音量或将特定音频流静音
    1. setstreamsolo() 方法已弃用,您应该改为调用 requestaudiofocus() 方法。
    2. setstreammute() 方法也已弃用,请改为调用 adjuststreamvolume() 方法并传入方向值 adjust_mute 或 adjust_unmute
  6. 相机服务变更
    1. 相机服务中共享资源的访问模式已从之前的“先到先得”访问模式更改为高优先级进程优先的访问模式
  7. dlopen failed: "has text relocations"
    1. 解决方案一:将targetsdkversion 修改为<23
    2. 解决方案二: https://wiki.gentoo.org/wiki/hardened/textrels_guide 通过scanelf / objdump定位存在textrel问题的文件, 以及关键代码在文件中的偏移量, 然后根据偏移量对应的特征 (函数名 / hard code的绝对地址等), 定位到代码所在.
    3. 在mk脚本中, 对local_cflags, 增加-fpic参数
  8. 电源管理
    在原有的电源管理的基础上加入了两种新的状态:
    1. app standby—应用待机状态
    2. doze 系统休眠状态
  9. 规范化app link (应用程序链接)
  10. 指纹识别(统一api)


推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
author-avatar
mobiledu2502873927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有