当前位置:首页 > 电子书 > 电子书下载 > 计算机理论 >
构建安全的Android APP 构建安全的Android APP
gengkui9897

gengkui9897 提供上传

资源
21
粉丝
34
喜欢
84
评论
18

    构建安全的Android APP PDF 高清版

    Android电子书
    • 发布时间:2020-01-06 10:05:01

    给大家带来的一篇关于Android相关的电子书资源,介绍了关于Android、APP方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小30.1 MB,诺兰编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.5。

  • 构建安全的Android APP PDF 下载
  • 下载地址:https://pan.baidu.com/s/1EBJhnRu5kCVSia_WMoa4t
  • 提取码:vbn9
  • 搭建安全性的AndroidAPP向阅读者展现了怎样防御力网络黑客对Android运用的进攻技术性,书中叙述了他在数以千计的程序运行中亲身认证的安全生产技术实例,详尽演试了网络黑客对程序运行进攻的全过程,并得出了更安全性的解决方法,这包含身份认证、互联网、数据库查询、网络服务器进攻、数据库查询、硬件配置等。另外也得出了每一个技术性保持的程序流程,真正地展现了运用中存有的安全隐患,并得出实际的解决方法。根据这书能够学得:保证运用安全性的关键作法;维护编码、优化算法和保密信息不被逆向工程;应用SSL安全性地传送信息内容避免中间人攻击;在SQLite数据库查询中安全性地储存数据信息;避免进攻Web网络服务器和服务项目;保证APK安全性地运作在不一样的机器设备和Android版本号上。

    目录

    • 第1章 Android安全问题 1
    • 1.1 为什么要探讨Android 1
    • 1.1.1 反编译APK文件 4
    • 1.1.2 ART 6
    • 1.2 Android安全性指南 7
    • 1.2.1 PCI移动支付受理安全指南 7
    • 1.2.2 Google Security 8
    • 1.2.3 HIPAA Secure 10
    • 1.2.4 OWASP移动风险Top 10 13
    • 1.2.5 Forrester Research发布的在移动应用开发中非技术性安全问题的
    • 1.3 提升设备的安全 16
    • 1.4 小结 17
    • 第2章 保护你的代码 19
    • 2.1 分析class.dex文件 19
    • 2.2 混淆的最佳实践 23
    • 2.2.1 未混淆过的代码 25
    • 2.2.2 ProGuard 27
    • 2.2.3 DexGuard 32
    • 2.2.4 晦涩带来的安全性 38
    • 2.2.5 测试 39
    • 2.3 Smali 40
    • 2.3.1 Helloworld 40
    • 2.3.2 移除应用商店检查 45
    • 2.4 在NDK中隐藏业务规则 51
    • 2.5 小结 51
    • 第3章 安全验证 53
    • 3.1 安全登录 53
    • 3.2 用户验证以及账户校验的最佳实践 56
    • 3.2.1 第一步 57
    • 3.2.2 第二步 59
    • 3.2.3 第三步 61
    • 3.2.4 第四步 65
    • 3.3 使用LVL给应用授权 68
    • 3.4 OAuth 82
    • 3.4.1 使用Facebook的OAuth 83
    • 3.4.2 网页和移动端Session管理 87
    • 3.4.3 易受攻击 89
    • 3.5 用户行为 90
    • 3.6 小结 91
    • 第4章 网络通信 93
    • 4.1 HTTP(S)连接 94
    • 4.2 对称性密钥 99
    • 4.3 非对称性密钥 102
    • 4.4 无效的SSL 107
    • 4.4.1 中间人攻击示例 108
    • 4.4.2 Root你的手机 110
    • 4.4.3 Charles Proxy测试 111
    • 4.5 小结 115
    • 第5章 Android数据库 117
    • 5.1 Android数据库安全问题 117
    • 5.2 SQLite 118
    • 5.2.1 使用adb备份数据库 119
    • 5.2.2 阻止备份 122
    • 5.3 SQLCiphe

    读书笔记

    Android分包MultiDex策略详解

    1.分包背景

    这里首先介绍下MultiDex的产生背景。

    当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。

    但是在早期的Android系统中,DexOpt有一个问题,DexOpt会把每一个类的方法id检索起来,存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的,导致了方法id的数目不能够超过65536个。当一个项目足够大的时候,显然这个方法数的上限是不够的。尽管在新版本的Android系统中,DexOpt修复了这个问题,但是我们仍然需要对低版本的Android系统做兼容。

    为了解决方法数超限的问题,需要将该dex文件拆成两个或多个,为此谷歌官方推出了multidex兼容包,配合AndroidStudio实现了一个APK包含多个dex的功能。

    我们在Android开发中,会不断的在App代码里面增加新功能,引入新的类库,如果不加控制的话,那么会碰到编辑器IDE爆出一下错误:

    Error:Execution failed for task ':ttt:transformClassesWithDexForDebug'.
    com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

    这个错误是Android应用的对方法总数有限制造成的。Android平台的Java虚拟机Dalvik在执行DEX格式的Java应用程序时,使用原生类型short来索引DEX文件中的方法。这意味着单个DEX文件可被引用的方法总数被限制为65536。通常APK包含一个classes.dex文件,因此Android应用的方法总数不能超过这个数量,这包括Android框架、类库和你自己开发的代码。

    这个问题可以通过将一个DEX文件分拆成多个DEX文件解决。

    2. 分包策略实现

    Gradle 配置:

    defaultConfig {  
        applicationId "XXX"
        minSdkVersion 14
        targetSdkVersion 23
        multiDexEnabled true
    }
    .......
    dependencies {
      compile 'com.android.support:multidex:1.0.0'
    }

    在应用的Application 类重写方法:

    @Override
    protected void attachBaseContext(Context base) {
      super.attachBaseContext(base);
      MultiDex.install(this);
    }

    3.分包效果说明

    经过以上的配置,你的应用已经可以实现多个DEX文件了。当应用构建时,构建工具会分析哪些类必须放在第一个DEX文件,哪些类可以放在附加的DEX文件中。当它创建了第一个DEX文件后,如果有必要会继续创建附加的DEX文件,如classes2.dex, classes3.dex。Multidex的支持类库将被包含在应用的第一个DEX文件中,帮助实现对其它DEX文件的访问。

    虽然Google解决了应用总方法数限制的问题,但并不意味着开发者可以任意扩大项目规模。Multidex仍有一些限制:

    DEX文件安装到设备的过程非常复杂,如果第二个DEX文件太大,可能导致应用无响应。此时应该使用ProGuard减小DEX文件的大小。

    由于Dalvik linearAlloc的Bug,应用可能无法在Android 4.0之前的版本启动,如果你的应用要支持这些版本就要多执行测试。
    同样因为Dalvik linearAlloc的限制,如果请求大量内存可能导致崩溃。Dalvik linearAlloc是一个固定大小的缓冲区。在应用的安装过程中,系统会运行一个名为dexopt的程序为该应用在当前机型中运行做准备。dexopt使用LinearAlloc来存储应用的方法信息。Android 2.2和2.3的缓冲区只有5MB,Android 4.x提高到了8MB或16MB。当方法数量过多导致超出缓冲区大小时,会造成dexopt崩溃。

    -Multidex构建工具还不支持指定哪些类必须包含在首个DEX文件中,因此可能会导致某些类库(例如某个类库需要从原生代码访问Java代码)无法使用。

    4.对开发者的建议

    开发者应该避免使用Google Guava这样的类库,它包含了13000多个方法。

    尽量使用专为移动应用设计的Lite/Android版本类库,或者使用小类库替换大类库,例如用Google-gson替换Jackson JSON。而对于Google Protocol Buffers这样的数据交换格式,其标准实现会自动生成大量的方法。采用Square Wire的实现则可以很好地解决此问题。

    在出现应用分包后低版本手机无法使用,高版本正常使用的问题时,可以考虑检查一下分包的配置是否正确。

    总结

    以上就是本文关于Android分包MultiDex策略详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关内容,如有不足之处,欢迎留言指出。

    上一篇:数据结构与算法分析:Java语言描述

    下一篇:R语言与数据挖掘最佳实践和经典案例

    展开 +

    收起 -

     
    Android 相关内容
    OPhone/Android游戏开发与推广指南
    OPhone/Android游戏开发与推广指南 高清版

    《OPhone/Android游戏开发与推广指南》 一书系统地介绍了游戏开发的知识,结合案例把游戏引擎、重力感应游戏、飞行战机游戏、3D游戏和联网游戏深入浅出地呈现给开发者。更难能可贵的是,作

    立即下载
    Android并发开发
    Android并发开发 高质量版

    本书共8章,第1章介绍了一个非典型的并发模型,为后文的阐释做好铺垫。第2章和第3章分别介绍了Java并发和Android应用程序模型,主要介绍Java线程、同步、并发包、生命周期和组件、Android进程

    立即下载
    高级Android开发强化实战
    高级Android开发强化实战 完整版 立即下载
    Android云存储客户端开发
    Android云存储客户端开发 高质量版

    《Android云存储客户端开发》 较为全面地介绍了目前流行的开源OpenStack云计算架构中Swift存储的相关知识及以此为基础进行Android云存储客户端开发的相关技术,最终实现了基于Swift存储的Androi

    立即下载
    深入OpenCV Android应用开发
    深入OpenCV Android应用开发 高清版

    《深入OpenCV Android应用开发》以在Android 平台上开发OpenCV 应用为重点,详细介绍了计算机视觉技术的理论及其在移动平台的应用。《深入OpenCV Android应用开发》由浅入深,囊括了从基本的开发环

    立即下载
    Android开发实战:从学习到产品
    Android开发实战:从学习到产品 清晰完整版 立即下载
    Kotlin从零到精通Android开发
    Kotlin从零到精通Android开发 高清完整版

    是一部讲解Kotlin语言的入门书籍,从Kotlin语言的基本语法一直讲到如何将其运用于Android开发,本书从基本语法,到应用开发、电商App开发实录,尽现Kotlin魅力

    立即下载
    大话移动APP测试 Android与iOS应用测试指南
    大话移动APP测试 Android与iOS应用测试指南 高清版

    移动互联网软件测试无论从思想还是技术上都与传统互联网产品或软件产品截然不同,导致了很多正在移动互联网中摸索的测试人员迷失了方向。作为一名移动互联网的测试从业人员,需要正

    立即下载
    学习笔记
    网友NO.534157

    判断iOS、Android以及PC端的示例代码

    前言 我们在做移动端时,在跨平台、浏览器、移动设备兼容的时候,要根据设备、浏览器做特定调整,想起用navigator.userAgent来对浏览器类型进行判断,查了点资料,在这里总结下 还有一个就是移动端的缩放问题,在meta标签中进行设置,对部分浏览器进行强制性的限制 1.navigator的一些常用属性 navigator为window对象的一个属性,指向了一个包含浏览器相关信息的对象 navigator.appVersion 浏览器的版本号 navigator.language 浏览器使用的语言 navigator.userAgent 浏览器的userAgent信息 其中userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。 2.较常见的ios端、Android端及PC端的判断 简单点的 /* 判断浏览器类型 */let userAgent = navigator.userAgent;/* 判断手机型号 */let app = navigator.appVersion;/* Android 终端 */let isAndroid = userAgent.indexOf('Android');/* ios终端 */let isMac = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); 封装性的 /* 判断各类型方法 */const browser = { version: function() { const userAgent = navigator.userAgent; return { /* 判断是否是ios */ ios: !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), /* 判断是否是Android */ android: userAgent.indexOf('Android') -1 || userAgent.indexOf('Adr') -1, /* 判断是否是移动端 */ mobilePhone: !!userAgent.match(/AppleWebKit.*Mobile.*/), /* IE内核 */ trident: userAgent.indexOf(……

    网友NO.256792

    react-native android状态栏的实现

    react-native 开发App的时候难免会遇到状态栏的,背景颜色和字体颜色与App内容页面,色调适配,间言之就是将状态栏颜色与App颜色一致,使用户界面更加整体。 1.android设备系统元素 导航栏:就是设备顶部的网络、时间、电量等信息栏 ActionBar: 返回按钮以及系统默认的header区域,RN开发中一般不会用到,RN中在navigation中进行定制 导航栏: 设备下方的物理返回、回桌面、选择应用程序等系统导航栏 2.状态栏的呈现形式 默认展示,一直显示手机系统的状态栏 透明状态栏,状态栏背景颜色透明,状态栏颜色与App颜色一致,用户界面更加整体。 隐藏状态栏(沉浸式),状态栏完全隐藏,类似于全屏游戏、视频播放器的效果 2.1 默认展示 系统默认状态栏样式,无法改变 2.2 透明状态栏 透明状态栏很常见,大多数的App都是使用这种模式,使得状态栏颜色与App颜色一致,使用户界面更加整体,整个应用看起来更加美观。 实现透明的状态栏的方式很多: 一、使用App的主题进行配置,在app/main/res/values/styles.xml中设置主题 resources !-- Base application theme. -- style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar" item name="android:windowTranslucentStatus"true/item // 设置状态栏不占据空间 // item name="android:windowLightStatusBar"true/item // 设置状态栏字体颜色 /style/resources 这种……

    网友NO.760116

    第一次使用Android Studio时你应该知道的一切配置(推荐)

    【开发环境】 物理机版本:Win7旗舰版(64位) Android Studio版本:2.1正式版 【Android Studio的优势】 •基于Gradle的构建支持 •Android特定重构和快速修复 •更加丰富的模板代码,让创建程序更简单 •提示工具更好地对程序性能、可用性、版本兼容和其他问题进行控制捕捉 •直接支持ProGuard和应用签名功能; •自带布局编辑器,可以让你拖放UI组件,并在多个屏幕配置上预览布局等; •内置Google云支持; •内置svn、git工具支持; •支持插件,eclipse有的,Android Studio里基本都能找到。 •2.0之后,支持NDK了。 Android Studio下载的绿色通道:http://www.androiddevtools.cn/ 一、第一次安装: Android Studio安装完成后,第一次启动AS前,为了避免重新下载新版本的SDK,需要做如下操作: AS启动前,打开安装目录,请先将bin目录的idea.properties文件中增加一行:disable.android.first.run=true就行了,避免第一次打开AS时自动重新下载SDK。mac平台的右键安装包-Show Package Contents 就找到bin目录了。 第一次打开Android Studio时,需要配置JDK和SDK: 上图中,选择“Project Structure”,弹出如下界面:(选择JDK和Android SDK的路径) 注:不要问我JDK和Android SDK怎么来的吧?要提前自行安装好哦,这种帖子一搜一大把,不是我的写作风格。 当然,以后我们在使用Android Studio 的……

    网友NO.389932

    ionic2打包android时gradle无法下载的解决方法

    问题 之前在使用ionic2时使用建立android平台命令或者编译时,总是会在获取gradle时卡住,等很久进度也不变化,导致命令超时失败。于是经过查阅资料和自己实践测试,总结出以下办法。 方法 其实主要原因是用命令下载时用的是指定的下载途径(可能不该这样形容,欢迎大家评论批评指正),国内通过这样下载十分慢,甚至时断时续,从而导致出现上面的问题。 所以我们自己去下载gradle,存放在本地,然后更改配置文件,使其不去网上下载而是从我们指定的本地位置获取。 首先我们打开下面这个js: 你的项目名称/platforms/android/cordova/lib/builders/GradleBuilder.js 其中有对distributionUrl的默认定义: var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-2.14.1-all.zip'; 我的是2.14.1版本,大家的版本可能不一样,但是方法是一样的,接下来我们只要修改这句就行了。 我们可以进入上面代码中的网址里找到对应版本的gradle进行下载: http://services.gradle.org/distributions/ 帮大家拿出来了,直接打开就好。 下载的gradle不需要解压。 存放到如下路径: 你的项目名称/platforms/android/gradle 然后把上面我们找到的代码修改成: var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || '../gradle-2.14.1-all.zi……

    网友NO.578941

    Android Studio中ButterKnife插件的安装与使用详解

    1》Android Studio 安装ButterKnife插件 同安装其他插件类似,如下: 1.1》打开Plugins界面 按照上图中1,2,3指示操作(注意:这里我的Android Studio中已经安装了该插件,所以显示的内容不太一样)。然后重启Android Studio。 2》在项目上使用该开源项目(以Android Studio 为例) 2.1》在bulid.gradle中添加依赖 重新编译一下该项目,通过后继续操作。 2.2》在代码中就可以使用注解的方式了 2.2.1》示例布局文件如下: LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" TextView android:id="@+id/text_veiw_tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView 1" / Button android:id="@+id/button_bt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button1" / TextView android:id="@+id/text_veiw_tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView 2" / Button android:id="@+id/button_bt2" android:layout_width="match_parent" android:l……

    电子书 编程教程 PC软件下载 安卓软件下载

    Copyright 2018-2020 xz577.com 码农之家

    本站所有电子书资源不再提供下载地址,只分享来路

    免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

    版权投诉 / 书籍推广 / 赞助:QQ:520161757