
【Android 新技术预研】
文章平均质量分 93
sbsujjbcy
业精于勤,荒于嬉;行成于思,毁于随!
展开
-
Android 热补丁技术——资源的热修复
今年真是热补丁框架的洪荒之力爆发的一年,短短时间内,已经出现了好几个热修复的框架了,基本上都是大同小异,这里我就不过多的去评论这些框架。只有自己真正的去经历过,你才会发现其中的坑。事实上,现在出现的大多数热修复的框架,稳定性和兼容性都还达不到要求,包括阿里的Andfix,据同事说,自己的app原本没有多少crash,接入了andfix倒引起了一部分的crash原创 2016-09-15 08:55:30 · 24663 阅读 · 11 评论 -
android studio下ndk开发
新建项目使用向导新建一个android studio项目新建一个Test类package cn.edu.zafu.jnidemo;public class Test { static { System.loadLibrary("Test"); } public native String getName();}make projectbuild->make原创 2015-04-15 20:26:33 · 4823 阅读 · 0 评论 -
NDK开发环境
一、关于NDK:NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要转载 2013-07-30 19:33:37 · 3643 阅读 · 0 评论 -
Android ORM系列之GreenDao自定义类型转换器与代码混淆配置
从Android Studio 1.3 Beta1开始,就支持了NDK。不过使用的是一个全新的实验性的gradle构建工具。官方地址http://tools.android.com/tech-docs/new-build-system/gradle-experimental,英文好的可以直接看原文。在进行配置前请先将Android Studio更新至最新版本,目前最新版本是1.4 Bata4并且使用原创 2015-09-15 16:32:30 · 7154 阅读 · 1 评论 -
Android插件化开发之OpenAtlas插件适配
前三篇文章,介绍了OpenAtlas的一些基本用法以及patch的aapt的编译方法。 - Android插件化开发之Atlas初体验 - Android插件化开发之Atlas生成插件信息列表 - Android插件化开发之Atlas资源打包工具补丁aapt的编译OpenAtlas的原则就是避免引入冗余的库。也就是宿主中提供了第三方库后,插件中就不要再引入该库,编译的时候以provide原创 2015-08-20 12:09:46 · 5863 阅读 · 2 评论 -
Android插件化开发之解决OpenAtlas组件在宿主的注册问题
OpenAtlas有一个问题,就是四大组件必须在Manifest文件中进行注册,那么就必然带来一个问题,插件中的组件都要重复在宿主中注册。像Service,ContentProvider等组件目前没有什么好的解决方法,只能在宿主中注册。但是像Activity,显然是有解决方法的,就是使用Fragment代替Activity,Activity只是作为一个放Fragment的容器,那么不仅在插件中不用原创 2015-08-21 12:38:03 · 4413 阅读 · 0 评论 -
Android插件化开发之OpenAtlas资源打包工具补丁aapt的编译
我们先来看看Android Studio自动生成的R文件里的内容,你会发现,R文件里有很多内部类,而内部类里有很多int类型的值,他们都是以0x7f开头。 我们在编译一个Android应用程序的资源的时候,至少会涉及到两个包,其中一个是被引用的系统资源包,另外一个就是当前正在编译的应用程序资源包。每一个包都可以定义自己的资源,同时它也可以引用其它包的资源。那么,一个包是通过什么方式来引用其它包的资原创 2015-08-19 12:42:09 · 7123 阅读 · 2 评论 -
Android插件化开发之OpenAtlas生成插件信息列表
上一篇文章,[Android插件化开发之Atlas初体验]( http://blog.youkuaiyun.com/sbsujjbcy/article/details/47446733),简单的介绍了使用Atlas的整个流程,但是如果你没有实践过的话估计还是一头雾水,从这篇文章开始,慢慢的切入细节。这篇文章的主题是生成插件信息列表。细心的你或许发现了上篇文章中我们使用了一个叫openatlasbundler的原创 2015-08-13 11:40:49 · 4034 阅读 · 0 评论 -
Android插件化开发之OpenAtlas初体验
OpenAtlas一款强大的Android非代理动态部署框架,目前已经处于稳定定状态。 与传统的代理方式插件不同,OpenAtlas需要对注册动态部署的组件到manifest文件。初体验,只不过就是把程序跑起来,跑通,后面的路还很长。这个过程中也是遇到了不少问题,刚开始拿到这个项目真是无处下手(没有看到有wiki),后来百度搜索了下找到四篇博文,大概就是OpenAtlas的作者写的吧And原创 2015-08-12 16:29:03 · 14570 阅读 · 10 评论 -
Android 实现沉浸式状态栏
上一篇文章将Android 实现变色状态栏我们实现了变色的状态栏,也介绍了沉浸式状态栏和透明状态栏的区别,这篇文章我们实现沉浸式状态栏。 沉浸式状态栏的来源就是很多手机用的是实体按键,没有虚拟键,于是开了沉浸模式就只有状态栏消失了。于是沉浸模式成了沉浸式状态栏。我们先来看下具体的效果开启沉浸模式后,状态栏消失,从顶部向下滑动,状态栏出现,退出沉浸模式,状态栏也出现了。我们的代码基于前一篇文章。原创 2015-09-12 10:09:56 · 13929 阅读 · 9 评论 -
Android应用发布后的统计——百度移动统计的应用
一个App发布到各个渠道之后,我们需要采集不同渠道的一些信息,比如app在运行过程中产生的一些异常信息,app在各个android版本的分布,以及各个app版本的分布,各渠道的用户数,用户忠诚度等等信息。这一切,我们可以使用百度移动统计来实现。首先,你必须有百度开发者的账号,之后到http://developer.baidu.com/console#app/project创建一个工程,如图我们创建了原创 2015-07-05 09:54:03 · 6544 阅读 · 5 评论 -
美团Android资源混淆保护的具体实践
原文章[美团Android资源混淆保护实践]( http://tech.meituan.com/mt-android-resource-obfuscation.html),但是该文章并没有给出具体的混淆方案,只是放了一个函数,函数的实现过程需要自己去实现,本篇文章也并没有实现该函数,只是对实现该函数有一个前期的准备。在android 5.0的系统源码中,要修改的代码位于 /frameworks原创 2015-10-09 17:16:46 · 5048 阅读 · 7 评论 -
Android React Native的使用细节问题
踩了几天React Native Android的坑。总结为一句话,目前android学习react native还为时过早,坑太多,需要你慢慢去踩。就目前来讲,能踩的坑基本上都踩了一遍,所以还是等它稳定下来再去学吧,否则会浪费掉一大堆时间。单位在React Native中,组件的宽度,高度都是不用写单位的,你写个100,在Android中代表的到底是100px还是100dp,就不得而知了,这时候自原创 2015-11-20 13:26:41 · 7152 阅读 · 2 评论 -
Android React Native组件的生命周期
和Android一样,React的组件也有对应的生命周期。Android React Native组件的生命周期可以总的概括为下面这一张图。可以把组件生命周期大致分为三个阶段:第一阶段:是组件第一次绘制阶段,如图中的上面虚线框内,在这里完成了组件的加载和初始化;第二阶段:是组件在运行和交互阶段,如图中左下角虚线框,这个阶段组件可以处理用户交互,或者接收事件更新界面;第三阶段:是组件卸载消亡的阶原创 2015-11-19 13:15:55 · 5528 阅读 · 2 评论 -
Android JSBridge的原理与实现
在Android中,JSBridge已经不是什么新鲜的事物了,各家的实现方式也略有差异。大多数人都知道WebView存在一个漏洞,见WebView中接口隐患与手机挂马利用,虽然该漏洞已经在Android 4.2上修复了,即使用@JavascriptInterface代替addJavascriptInterface,但是由于兼容性和安全性问题,基本上我们不会再利用Android系统为我们提供的原创 2016-02-28 09:08:49 · 44756 阅读 · 30 评论 -
Android 热修复使用Gradle Plugin1.5改造Nuwa插件
从1.5开始,gradle插件包含了一个叫**Transform**的API,这个API允许第三方插件在class文件转为为dex文件前操作编译好的class文件,这个API的目标就是简化class文件的自定义的操作而不用对Task进行处理,并且可以更加灵活地进行操作。我们如何注入一个Transform呢,很简单,实现Transform抽象类中的方法,使用下面的两个方法之一进行注入即可原创 2016-03-12 10:13:21 · 19457 阅读 · 7 评论 -
MVP模式在Android开发中的最佳实践
这篇文章拖了好久了,一直存在草稿箱里没有继续写,趁几天有空,撸撸完。回想一下,你刚刚学习Android的时候,总会看到一些书上写着,Android使用的是MVC模式,Activity就是一个Controller,或许那个时候,你没有什么深刻的体会。随着经验的积累。你发现,Activity既是Controller,掌管着许许多多的业务逻辑,同时它也作为View的一部分,控制着视图层的显示。原创 2016-02-21 13:47:56 · 6892 阅读 · 4 评论 -
Android React Native自定义组件的流程
假设我们现在有这么一个需求,就是自定义一个组件,该组件由一个小图标和图标的文字说明组成,并且带有背景色,背景色可设置,宽度高度可设置。如下图所示正是两个这样的组件所组成。首先,在index.android.js目录下新建一个js文件,命名为item.js,在里面输入模板代码原创 2015-11-20 14:56:02 · 8327 阅读 · 1 评论 -
记一次在Windows上搭建React Native Android环境踩过的坑
要说最近技术圈什么比较活跃,我想除了动态加载框架和热修复技术之外,非Facebook的React Native莫属了吧,其实RN对IOS的支持比较早,但是Android似乎难产了,直到9月份才刚开源。距离RN开源也有一段时间了,一直没有去学习,今天兴趣来潮,索性学一把吧。本文假设你的Windows上安装了Android SDK,并配置好了环境变量。安装Node.js从官网https://nodejs原创 2015-11-18 23:04:01 · 15595 阅读 · 2 评论 -
Andriod React Native 样式表中可用样式属性
写了这么多篇Android React Native的博文,基本上把复杂的东西都搞定了,接下来来看看一些轻松的东西,和布局有关,就是css样式,那么一个View可以设置哪些css样式呢,是和web中的css样式完全一样呢,还是有所不同呢?其实你只要在样式表中书写一个不存在的样式,就会报一大堆错,提示你该样式不存在,然后提供所有可用的样式给你,如图下面的样式就是样式表中所有可用的属性。"alignIt原创 2015-11-24 18:58:28 · 27357 阅读 · 1 评论 -
Android React Native使用原生模块
有时候我们的App需要访问平台API,并且React Native可能还没有相应的模块包装;或者你需要复用一些Java代码,而不是用Javascript重新实现一遍;又或者你需要实现某些高性能的、多线程的代码,譬如图片处理、数据库、或者各种高级扩展等等。 而用React Native可以在它的基础上编写真正原生的代码,并且可以访问平台所有的能力。如果React Native还不支持某个你需要的原创 2015-11-20 22:55:06 · 17734 阅读 · 7 评论 -
Android React Native加载图片资源的正确姿势
在这篇文章中Android React Native的使用细节问题提到了 图片使用的问题,也提到了无论用哪种方法都不能加载app内部的图片资源的问题,当时的代码是这样子的 <Image source={ require('image!icon') } />在官方文档中也是这么写的Image但是在另一个页文档中却与其相矛盾的,Images,估计这页文档刚加入不久也就是说正确的app内部图片加载姿势应该原创 2015-11-22 21:12:14 · 41041 阅读 · 4 评论 -
Android React Native使用原生UI组件
Android React Native 已经将几个常用的原生组件进行了封装,比如 ScrollView 和 TextInput,但是并不是所有系统的原始组件都被封装了,因此有的时候我们不得不自己动手封装一下,从而能够使用那些React Native没有为我们封装的原生组件,比如WebView,官方并没有提供Android端的实现,那么我们现在就动手封装一下WebView。原创 2015-11-23 15:12:03 · 14003 阅读 · 5 评论 -
Android React Native在Android Studio中执行bundleReleaseJsAndAssets 打包失败的解决方法
这个坑在文章记一次在Windows上搭建React Native Android环境踩过的坑中我已经提到过,当时找不到解决方法,只能开一个命令提示符终端独立执行打包。就像这样子react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output C:\Users\Adminis原创 2015-11-21 19:17:22 · 11182 阅读 · 1 评论 -
Android 实现变色状态栏
首先我们得了解什么是透明状态栏以及什么是沉浸式状态栏,以及其区别,国内习惯称透明状态栏为沉浸式状态栏,但是两者是有本质区别的。先来看看什么是沉浸式模式。 Android 4.4中,沉浸式体验得到了再次强化,提供了一种“全屏模式”(Full-screen Immersive Mode)。全屏模式又分两种,一种叫后撤式 (Lean Back),另一种叫做沉浸式(Immersive)。原创 2015-09-11 11:36:41 · 20454 阅读 · 13 评论 -
Android ORM系列之GreenDao关联关系映射
上一篇文章对greenDao有一个整体的把握 Android ORM系列之GreenDao最佳实践。这篇文章将重点介绍GreenDao的关联关系的映射以及实体类的生成。在GreenDao中,实体类的生成是通过Entity类来进行的,可以说一个Entity对象对应一个实体类。实体类中的属性可以通过Entity对象的方法进行添加,GreenDao会根据我们添加的属性自动生成实体类。我们可以通过一系列方法生成实体类原创 2015-09-02 09:41:59 · 5206 阅读 · 8 评论 -
Android应用发布的准备——渠道注册与认证
今天早上申请了一个早上的渠道账号,这工作真是太繁琐,申请的是企业账号,需要营业执照等相关资料,如果申请个人的话估计需要身份证相关信息。下面贴出国内主流的几个渠道,不完全,但是基本上涵盖了大部分。360移动开放平台地址:http://dev.360.cn/ 豌豆荚地址:http://open.wandoujia.com/ 百度手机助手地址:http://app.baidu.com/原创 2015-07-03 20:59:32 · 3401 阅读 · 0 评论 -
Android新技术学习——阿里巴巴免Root无侵入AOP框架Dexposed
阿里巴巴无线事业部最近开源的Android平台下的无侵入运行期AOP框架Dexposed,该框架基于AOP思想,支持经典的AOP使用场景,可应用于日志记录,性能统计,安全控制,事务处理,异常处理等方面。 针对Android平台,Dexposed支持函数级别的在线热更新,例如对已经发布在应用市场上的宿主APK,当我们从crash统计平台上发现某个函数调用有bug,导致经常性crash,这时,可以原创 2015-08-07 15:46:30 · 3036 阅读 · 0 评论 -
使用Android Studio将开源库发布到Jcenter中央库
首先在 https://bintray.com 注册一个账号,登录后然后从其后台获得一个API Key 在你的项目根目录下的build.gradle文件中加入依赖,最后文件内容就变成了这样子。buildscript { repositories { jcenter() } dependencies { classpath 'com.andro原创 2015-07-28 09:33:47 · 5254 阅读 · 4 评论 -
Android 调试神器-Stetho(Facebook出品)的使用
前言Chrome的Developer Tools对于WEB开发者来讲几乎是一个神器,而Chrome Store里也有无奇不有的插件,如果Chrome能调安卓应用应该是一件美好的事,而Facebook开源的一个工具Stetho让Chrome调试android 应用不再是一个梦。安卓在调试时,有时候需要查看数据库,SharePreference等,而这个前提是必须root,另一方面,andoird的网络原创 2015-05-01 17:26:58 · 19872 阅读 · 4 评论 -
Android Studio编译时Gradle报乱码
其实这个问题已经困扰了很久了,只不过对编译没什么影响,就一直放着了,今天又遇到了,实在看不过去了,就去找解决方法,然后呢,搜出来的答案全都是一样的,而且也试了,没有用,尼玛,太过分了。问题是这样的,代码中有中文,中文是在注释中,显示的时候是完全正常的,然而编译的时候gradle会报错,但是呢,又可以编译成功。这尼玛,真蛋疼。。提示信息其实也是乱码的,别问我既然乱码的下面的信息你是怎么得出来的,这不是原创 2015-05-07 11:03:39 · 11688 阅读 · 0 评论 -
Android 使用LeakCanary 检测内存泄露
LeakCanary 是 Android 和 Java 内存泄露检测框架,该框架是Square公司的一个开源库,项目地址 leakcanary 。Android 开发中你是否频频遇到内存泄露而无奈无从解决。说不定哪天你不小心写的一行代码就导致了内存泄露。可以先看看这些问题导致的内存泄露 Android开发编码规范导致的内存泄露问题,而LeakCanary 则很直白得检测出了内存泄露并展示给我们原创 2015-08-27 09:36:38 · 7232 阅读 · 5 评论 -
Android apk增量升级
在服务器端,生成最新版与之前所有版本的差分包,为什么是所有版本,因为我们无法知道用户当前版本是什么版本在手机客户端更新程序时,下载差分包,使用已安装的旧版apk与这个差分包,合成为一个新版apk校验新合成的apk文件是否完整,检验合成版本的签名是否和已安装客户端一致,如一致则提示用户安装原创 2015-05-29 16:20:31 · 3734 阅读 · 2 评论 -
Android 各大网络请求库的比较及实战
自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个。本篇文章对常见的网络请求库进行一个总结。HttpUrlConnection最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug原创 2015-05-11 09:30:07 · 19747 阅读 · 20 评论 -
Android插件化开发之OpenAtlas插件的安装与卸载、更新与回滚
用过Android的同学都知道,手机上的APP可以进行安装,安装完之后可以卸载,安装完后如果有新版本的话可以更新。此外还有一点,就是像windows那样,从win7升级到win10感觉不满意可以回滚到win7。但是回滚功能貌似在Android里是没有的。OpenAtlas也是如此,在我们的宿主上安装的插件,也是类似这个机制。OpenAtlas为我们提供了很好的插件安装,卸载,更新,回滚的功能。假设现原创 2015-08-26 09:23:48 · 4251 阅读 · 4 评论 -
Android插件化开发之OpenAtlas插件启动方式与插件启动广播
到现在为止已经写了6篇文章了Android插件化开发之OpenAtlas初体验Android插件化开发之OpenAtlas生成插件信息列表Android插件化开发之OpenAtlas资源打包工具补丁aapt的编译Android插件化开发之OpenAtlas插件适配Android插件化开发之解决OpenAtlas组件在宿主的注册问题Android插件化开发之OpenAtlas中四大组件与A原创 2015-08-25 13:26:38 · 3763 阅读 · 0 评论 -
V7兼容包——调色板Palette的使用
之前写过四篇文章是关于v7兼容包RecyclerView的使用 android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理 android v7兼容包RecyclerView的使用(三)——布局管理器的使用 android v7兼容包RecyclerView的使用(二) android v7兼容包RecyclerView的使用(一) 今天无意看到一个v7兼容包原创 2015-04-04 11:29:04 · 3552 阅读 · 0 评论 -
Andorid使用WiFi 连接adb进行调试
无奈数据线连接经常掉线。于是寻找wifi连接adb的方法,在github上搜索了一下客户端的源码后编译后运行了下,发现可以行得通,于是记录一下。 对应的安卓客户端源码在这wifi adb调试客户端编译后安装到手机上。手机需要ROOT权限,对于小米开发版用户请到安全中心打开root授权。打开后软件会自动打开对应端口的服务。这时候下方会提示adb connect *.*.*.*:5555在电脑上打开终原创 2015-07-17 09:51:08 · 3996 阅读 · 0 评论 -
Android应用发布的准备——生成渠道包
我们需要使用一个变量标明该app的渠道,通常我们可以在manifest中的application节点下声明,如下。<meta-data android:name="CHANNEL_NAME" android:value="CHANNEL_VALUE" />然后将CHANNEL_VALUE的值替换成对应的渠道名。我们可以使用gradle的flavor替我们完成 productFlavo原创 2015-07-04 19:59:25 · 2937 阅读 · 0 评论 -
Android OkHttp文件上传与下载的进度监听扩展
相信大家对OkHttp也是相当的熟悉了,毕竟是Square的东西,对于其种种优点,这里也不再叙说。优秀是优秀,但是毕竟优秀的东西给我们封装了太多,那么问题来了,我们使用OkHttp作为我们的网络层,简单地进行GET/POST请求是毫无问题。近日看了产品的设计稿,毛估估会有文件的上传与下载的需求,如果使用OkHttp作为网络层进行封装,你会惊讶的发现,简直封装的太“完美”了。如果现在有这么一个需求,要求对文件进行上传原创 2015-09-04 09:34:54 · 29613 阅读 · 32 评论