03 2018 档案
摘要:No1: 在根项目下的local.properties文件中配置 在gradle.properties里配置 No2: 配置so库的模块名,是在build.gradle脚本文件里配置 No3: 申明NDK级别必须是Android SDK和Android NDK都存在的API级别,否则找不到相应的ND
阅读全文
摘要:No1: Android既可以用传统的JUnit测试,也可以用Android的instrument测试。 No2: 当我们运行测试的时候,androidTest SourceSet会被构建成一个可以安装到设备上的测试apk,这个测试apk里有很多我们写好的测试用例,它们会被执行,来测试我们的app。
阅读全文
摘要:No1: Build Variant = Build Type + Product Flavor Build Variant:构建的产物 Build Type:构建的类型 Product Flavor:构建的渠道 No2: Flurry多渠道和友盟多渠道构建 Flurry本身没有渠道的概念,它有Ap
阅读全文
摘要:废话不多说,直接adb -help查看所有命令然后翻译 指导adb监听连接的所有接口。 引导命令到唯一连接的USB设备。如果存在多个USB设备,则返回一个错误。 将命令定向到唯一运行的模拟器。如果存在多个模拟设备,则返回一个错误。 用给定的序列号或限定符将命令定向到设备或模拟器。覆盖ANDROID_
阅读全文
摘要:转载自SparseArray源码解析 No1: Android官方推荐:当使用HashMap(K, V),如果K为整数类型时,使用SparseArray的效率更高. No2: HashMap是使用数组+链表的数据结构存储键值对,而SparseArray只是用了两个数组进行存储. No3: Conta
阅读全文
摘要:No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle lib2/ build.gradle setting.gradle配置文件 也可以指定项目目录 No2:
阅读全文
摘要:No1: 指定共享库 No2: android除了标准的sdk,还存在两种库 1)add-on库:位于add-ons目录下,大部分是第三方厂商或者公司开发的 2)optional可选库:位于platforms/android-xx/optional目录下,一般是为了兼容旧版本的API,比如HttpC
阅读全文
摘要:No1: minSdkVersion No2: android代号版本对应表 No3: versionCode-内部版本号 No4: versionName-版本名称 No5: testApplicationId-app的包名 No6: testInstrumentationRunner-配置单元测
阅读全文
摘要:No1: Android Gradle插件分类 App插件id:com.android.application Library插件id:com.android.library Test插件id:com.android.test No2: 除了插件id之外,如果是第三方的插件,还要配置它们的依赖cla
阅读全文
摘要:No1: No2: gradle提供的依赖配置 No3: 依赖的通用使用格式 No4: 依赖项目 No5: 依赖文件 这样配置后,libs文件夹下的扩展名为jar的都会被依赖 No6: SourceSet--源代码集合--源集。是java插件用来描述和管理源代码及其资源的一个抽象概念,是一个java
阅读全文
摘要:No1: 应用插件 这三种写法等价 注:‘java‘是一个plugin id No2: 应用脚本插件 结果 No3: No4: 应用第三方发布的插件 No5: 使用plugins DSL应用插件 No6: 自定义插件 结果 注:自定义的插件必须要实现Plugin接口,这个接口只有一个apply方法,
阅读全文
摘要:No1: 多种方式创建任务 结果 No2: Task参数中Map的可用配置 No3: 多种方式访问任务 结果 注: 任务都是通过TaskContainer创建的,其实TaskContainer就是我们创建任务的集合,在Project中我们可以通过tasks属性访问TaskContainer,所以我们
阅读全文
摘要:No1: 设置文件默认名是setting.gradle,放在根目录下,大多数作用都是为了配置子工程 No2: 一个Project包含很多个Task。Task就是一个操作,一个原子性的操作。其实它是Project对象的一个函数 No3: 结果 说明这两个任务是一样的 No4: 依赖:用于控制执行顺序
阅读全文
摘要:No1: Groovy中分号不是必须的 No2: Groovy中,单引号和双引号都可以定义一个字符串常量,不同的是单引号标记的是纯粹的字符串常量,而不是对字符串里的表达式做运算,但是双引号可以。 结果 No3: List 结果 No4: Map 结果 No5: 方法括号可省略 结果 No6: ret
阅读全文
摘要:No1: Window下搭建Gradle:添加GRADLE_HOME环境变量,然后把GRADLE_HOME\bin添加到PATH系统变量里保存即可。完成后打开CMD,运行gradle -v来验证 No2: 运行 No3: 生成Wrapper 生成文件 No4: 意思是配置Wrapper使用2.4版本
阅读全文
摘要:No1: Project的build.gradle文件添加 Module:app的build.gradle添加 No2: @Inject、@Component 调用 No3: @Module、@Provides 调用 No4: @Named、@Qualifier 调用 No5: @Singleton
阅读全文
摘要:No1: EventBus三要素: 1)Event:事件 2)Subscriber:事件订阅者 3)Publisher:事件发布者 No2: EventBus的4种ThreadMode(线程模型): 1)POSTING(默认):该事件是在哪个线程发布出来的,事件处理函数就会在哪个线程中运行 2)MA
阅读全文
摘要:No1: 标准注解: 1)@Override:覆写 2)@Deprecated:过时 3)@SuppressWarnings:取消警告 4)@SafeVarargs:申明使用了可变长度参数的方法 No2: 元注解:用来注解其他注解,从而创建新的注解 1)@Targe:注解所修饰的对象范围 2)@In
阅读全文
摘要:No1: 添加依赖库 Project的build.gradle文件添加 在Module:app的build.gradle文件添加 No2: 绑定控件id No3: 绑定资源 No4: 绑定监听 No5: 可选绑定 No6: ButterKnife注解处理器是ButterKnifeProcessor,
阅读全文
摘要:No1: RxJava使用 1)创建Observer(观察者) 或者 2)创建Observable(被观察者) 3)Subscribe(订阅) No2: RxJava的Subject 可以理解为Subject=Observal+Observer 1)PublishSubject:PublishSub
阅读全文
摘要:事件总线RxBus,替代EventBus和otto 1)创建RxBus 2)发送事件 3)接收事件 4)取消订阅事件
阅读全文
摘要:1)配置 2)修改请求网络接口 Retrofit请求接口返回Call。若结合RxJava,则需要把Call改为Observable 3)修改请求网络方法 4)请求返回数据格式封装 5)取消请求
阅读全文
摘要:No1: Lock接口 No2: 不要讲获取锁的过程写在try块中,因为如果在获取锁(自定义锁的实现)时发生了异常,异常抛出的同时,也会导致锁无故释放 No3: No4: 队列同步器(同步器)是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成
阅读全文
摘要:No1: Hybrid就是原生和Html5混合开发app No2: 插件化方法Altas或者DroidPlugin No3: 热修复技术可以把更新补丁上传到云端,此时APP就可以直接从云端下拉补丁直接应用生效 优势: 1)无需重新发版,实时高效热修复 2)用户无感知修复,无需下载新的应用,代价小 3
阅读全文
摘要:看阿里巴巴的《深入探索Android热修复》,里面的代码看不懂,一查才知道是Smali语法,百度了语法,转载如下 转载自smali 语言语法 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。smali语言是Davlik的寄存器语言,
阅读全文
摘要:No1: Volley源码分析: Volley.newRequestQueue-> RequestQueue.start()-> CacheDispatcher.start()->CacheDispatcher.run()-> NetworkDispatcher.start()->NetworkDi
阅读全文
摘要:No1: 实现多线程的3中方法 1)继承Thread,重写run()方法 2)实现Runnable接口,并实现该接口的run()方法 3)实现Callable接口,重写call()方法 No2: 原子性: 对基本数据类型变量的读取和赋值是原子性操作,即这些操作是不可被中断的 只有语句1是原子性操作
阅读全文
摘要:No1: View的滑动 1)layout()方法的 2)offsetLeftAndRight()与offsetTopAndBottom() 对上面代码进行修改 3)LayoutParams(改变布局参数) 同样对上面代码进行修改 4)动画 5)scrollTo与scrollBy scrollTo(
阅读全文
摘要:接上篇《Android进阶之光》--Android新特性 No1: 组件: 1)底部工作条-Bottom Sheets 2)卡片-Cards 3)提示框-Dialogs 4)菜单-Menus 5)选择器 6)滑块控件-Sliders 7)进度和动态 8)Snackbar(底部可操作弹出框)与Toas
阅读全文
摘要:Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview 6)设备识别解锁--比如附近信任设备 7)Ok Google语音指令 8)Face unlock面部
阅读全文