android框架

Android组件化探索与实践

我们两清 提交于 2020-01-14 02:36:06
什么是组件化 不用去纠结组件和模块语义上的区别,如果模块间不存在强依赖且模块间可以任意组合,我们就说这些模块是组件化的。 组件化的好处 实现组件化本身就是一个解耦的过程,同时也在不断对你的项目代码进行提炼。对于已有的老项目,实现组件化刚开始是很难受的,但是一旦组件的框架初步完成,对于后期开发效率是会有很大提升的。 组件间间相互独立,可以减少团队间的沟通成本。 每一个组件的代码量不会特别巨大,团队的新人也能快速接手项目。 如何实现组件化 这是本文所主要讲述的内容,本篇文章同时适用于新老项目,文中会逐渐带领大家实现如下目标: 各个组件不存在强依赖 组件间支持通信 缺少某些组件不能对项目主体产生破坏性影响 组件化-理论篇 理论篇不会讲述实际项目,先从技术上实现上面的三个目标。 组件间不存在强依赖 组件间不存在强依赖从理论上来说其实很简单,我不引用你任何东西,你也不要引用我任何东西就行了。但在实际项目中,需要清楚明白那些业务模块应该定义为组件,另外在已有项目中,拆分代码也需要大量的工作。 组件间如何通信 组件间通过接口通信。为每一个组件定义一个或者多个接口,简单起见,我们假定只为每一个组件定义接口(多个接口是类似的)。 便于理解,还是要举实例。假设当前存在两个组件UserManagement(用户管理)和OrderCenter(订单中心)

RN在Android打包发布App

百般思念 提交于 2020-01-14 00:22:03
参考资料:http://www.jianshu.com/p/b8811669bcb6 RN在Android打包发布App 1-:生成一个签名密钥 你可以用keytool命令生成一个私有密钥。在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令。在mac上,直接进入项目根目录输入一下命令: $ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。最后它会生成一个叫做my-release-key.keystore的密钥库文件。 在运行上面这条语句之后,密钥库里应该已经生成了一个单独的密钥,有效期为10000天。--alias参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。 注意:请记得妥善地保管好你的密钥库文件,不要上传到版本库或者其它的地方。 2-:设置gradle变量 把 my-release-key.keystore 文件放到你工程中的 android

android WebView Note

拟墨画扇 提交于 2020-01-13 12:10:26
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。 什么是webkit WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。 传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过, 随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。 这里我们初步体验一下在android是使用webview浏览网页,在SDK的Dev Guide中有一个WebView的简单例子 。 在开发过程中应该注意几点: 1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。 2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。

Android基础之Activity基本跳转(2)

我的梦境 提交于 2020-01-13 04:06:35
本文转载自: https://www.cnblogs.com/flyone/archive/2011/07/14/2106001.html 作者:flyone 转载请注明该声明。 我的淘宝店铺, http://shop61982302.taobao.com/ , 欢迎大家光临! 你懂的, 呵呵 ! 简单介绍activity的跳转,通过intent实现,详细的注释在代码中。涉及到activity跳转,intent调用,button事件处理,xml文件编辑等知识。麻雀虽小,五脏俱全!废话少说,开始了...... 先看一下运行效果图: 点击first跳转到第二个activity 点击second会返回到第一个activity,并带回返回信息,如下图: 1 新建project,大家注意我的命名,前面都加前缀了,对于初学者来说,可以在程序运行时明白这些变量的实际命名到那儿去了,运行时大家可以再返回看这些名字! 2 开发时一般先设置界面,打开main.xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width=

Android SDK的下载与安装

ぐ巨炮叔叔 提交于 2020-01-13 03:29:05
一、Android SDK简介 Android SDK(Software Development Kit,软件开发工具包)被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。它提供了 Android API 库和开发工具构建,测试和调试应用程序。简单来讲,Android SDK 可以看做用于开发和运行 Android 应用的一个软件。 二、下载SDK 1.目前官网上已经没有单独的SDK下载安装包了。目前官网推荐的是下载包含有Android SDK的Android Studio。官网下载传送门 https://android-sdk.en.softonic.com/ Android Studio 的一个功能非常强大的用来做安卓开发试调的官方出品的工具。Ps:官网下载,需科学(翻)上(墙)网。 2.由于这个Android Studio 的安装包过大且官网下载需要翻墙,而咱们在用Appium 的时候实际上只需要用到SDK 工具而已。所以推荐大家去另外一个国内的Android 工具的下载网站下载。传送门 : https://www.androiddevtools.cn/ 进入页面后点击【Android SDK 工具】按钮,然后在弹出的选择框内点击【SDK Tools】按钮,然后界面会自动跳转到SDK 的下载界面,选择适合自己的版本进行下载

Android Gradle文件拆解

只谈情不闲聊 提交于 2020-01-12 21:05:16
Gradle是一种 Groovy语言 编写的构建工具。 在Android中的运用主要在于 build.gradle 和 settings.gradle 我们可以先从 Android的 build.gradle(project) 中去研究它的东西。 1.build.gradle(Project) 先随便找里面一段代码出来: 因为用groovy语言写的,所以不懂的其所以然的人会觉得这段代码的结构有点奇怪。 但是因为之前学过kotlin,上面这段代码的结构其实就是一个 闭包 ,也叫做 一等函数支持 。里面的参数 repositories、google()、jcenter()都是作为参数传入到 allprojects()这个函数中的。 注 :所谓闭包,就是可以把A函数作为参数传入到B函数中使用。在Java中是没有这种概念的,但是有与差不多的做法,就是监听器的回调方法。这里我就不多介绍了,之前的Kotlin中有讲到这种概念: Kotlin学习(5)函数与函数式编程 。 上述的代码其实就是相当于这样: allprojects ( new Action < Project > ( ) { @Override void execute ( Project project ) { project . repositories { google ( ) jcenter ( ) } } } ) 2

Android系统的架构

帅比萌擦擦* 提交于 2020-01-12 15:01:35
屏幕快照 2016-09-07 上午9.26.57.png android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。    1.应用程序   Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。    2.应用程序框架   开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。   隐藏在每个应用后面的是一系列的服务和系统, 其中包括;   * 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。   * 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据   * 资源管理器(Resource Manager)提供

Android 常见工具类封装

时光毁灭记忆、已成空白 提交于 2020-01-12 04:26:12
1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] btInput = s.getBytes(); // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest mdInst = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 mdInst.update(btInput); // 获得密文 byte[] md = mdInst.digest(); // 把密文转换成十六进制的字符串形式 int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new

转: Android 使用android-support-multidex解决Dex超出方法数的限制问题

我与影子孤独终老i 提交于 2020-01-11 20:57:03
转自: 时之沙: http://blog.csdn.net/t12x3456 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: [java] view plain copy UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [ 0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$ 6.updateIndex(DexMerger.java: 501) at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java: 282) at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java: 490) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java: 167) at com.android.dx.merge.DexMerger.merge(DexMerger.java: 188) at com

Android分包方案multidex

淺唱寂寞╮ 提交于 2020-01-11 20:15:33
对于功能越来越复杂的app的两大问题 一:我们自己应用的方法数超过了65536 我们所说的方法数限制,这个方法数包括了jar包,框架,还有我们自己应用的代码,当我们应用的代码超过65536时,结果如下: 我们看到,显示我们方法的引用是65579.而引用数最大是65536,建议我们开启分包方案。 二:我们应用的方法数没有超过65536,但是加上依赖的jar包,框架等,超过了65536(根据方案一的结果,我们应用方法数是65579,那我们删掉200个方法,就小于65536) 报错如下: 三:方法数并没有超过65536,编译也完成了,但是在android2.3以前的系统安装的时候,会异常中止安装。 这个问题会发生在 Android 2.2以及Android 2.3的设备上,涉及到一个名为dexopt的程序,全称dex optimization,即dex文件优化程序。在优化过程中,dexopt采用一个固定大小的缓冲区(LinearAlloc)来存储应用中所有方法的信息,那么之所以会出现在老版本停止安装,是因为老版本的缓冲区的大小是5M,而在新版本中,这个缓冲区的大小是8M或者16M,在老版本中更容易超过这个限制。 dexopt的执行过程是在第一次加载dex文件的时候执行的。这个过程产生了一个ODEX文件,全称Optimised Dex