android架构

Android 源代码中增加新apk

心已入冬 提交于 2019-12-07 09:39:57
Android build system就是编译系统的意思 在我们需要向自己编译的源代码中增加模块的时候,需要一些规则,当然这个规则都是类似的。 Android.mk文件解析 让我们来看一个 Android.mk 文件的样子 Java代码 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE :=Hello LOCAL_SRC_FILES := hello.c include $(BUILD_SHARED_LIBRARY) 复制代码 复制代码 ① LOCAL_PATH :=$(call my-dir) 固定写法, LOCAL_PATH 表示此时位于工程目录的根目录中, (call my-dir) 的功能由编译器提供,被用来返回当前目录的地址(包含 Android.mk 本身) ② include $(CLEAR_VARS) 固定写法, CLEAR_VARS 这个变量由编译系统提供,并且要执行一个 GNU makefile 文件,这个功能会清理掉所有以 LOCAL_ 开头的内容(比如 LOCAL_MODULE 、 LOCAL_SRC_FILES 等),除了 LOCAL_PATH 。这句话也是必须的,因为如果所有变量都是全局变量的话,所有的可控的编译文件都需要在一个单独的 GNU 中被解析并执行 ③ LOCAL

jvm虚拟机androidy移植-编译篇

自作多情 提交于 2019-12-07 08:46:17
有这个必要吗?都过时的东西了,android上的 Dalvik效率不够高吗,不够逼格吗? 是的但有总东西是不是我们这些码农能决定的,领导和项目需求才是你要关心的,毕竟工作要向领导汇报,项目要去挣钱钱,但挣了 money你也只有工资,就这么现实。 言归正传,发发牢骚可以,但是干活还得继续。 我们肯定不去造轮子,那样太累。还是借助开源来完成我们的功能,经过google找到了一个好的的开源jvm, PhoneMe sun开源的java虚拟机。 PhoneME简介 phoneME Feature software 是一个优化了的Java ME架构。它的核心是支持多任务的MIDP2.1规范实现。 当phoneME Feature software运行多个MIDlet时,它只使用一个系统进程,因为一个Java虚拟机实例可以执行几个应用,并提供独立的运行时空间。所有运行的应用都是独立的,看起来好象每个应用都在自己的虚拟机中执行一样。 phoneME Feature software提供给为MIDP或者是移动信息设备相关的开发人员。 以下是phoneME Feature software MR2版本包含的内容特性: l 高性能的Java ME平台架构 l 支持每个功能领域(存储,网络和用户界面等)的模块化实现 l 子系统,目录和便携性类库 l 最小的特定平台实现代码 l 多任务能力和支持并发应用

2019总结:Android 寒冬难前行?—我的进阶之路,送给正在迷茫的你!

孤街醉人 提交于 2019-12-06 21:14:42
前言 很多做 android 开发的同学都想多快好省,现实是真的是这样吗,借着前人的经验,我们的目标可以更加清晰,可以计划划分阶段去学习,但是学习的路是不会变的,别人会遇到什么我们也会遇到什么,别人躺过的坑我们一样得趟。 接着这里,我想表达我们对 android 学习之路的理解,也分享我收集到的前人经验,让前路不再晦暗,让脚下的路笔直一些,仅此而已~ 继续吐槽,分享下自己关于如何学习的想法 我想看我文章的至少都是有1年开发经验以上的了,至少都是熟练的初级 coder 了吧,在这个阶段甚至之后的几个阶段,android 的 coder 们内心其实都是惶恐焦虑的,一是大环境没有以前热了,找工作的难度提升了,对 coder 们的要求也是节节攀升;二是 coder 们在学习过程中发现了大量的知识点和面,这些东西实在太多了,看了 A 会勾连出 BCDEF,这里面又涉及到大量的 java 等其他知识点,都是比较难搞,耗时的。 种种以上让大家变得不再自信了,加之环境趋紧,所以焦虑由此产生。大家也不必太过因此而焦虑,焦虑了也没有啊,这些东西迟早都是我们的菜,都得学,都得趟过去,当然越早趟过去越好。 这里面就涉及到如何学习的问题了,会学习的 coder 效率会很高,学的会比较透,记得会比较牢,并且还会记录相关的技术博客,所以学过了基本就不用再重复了 我们在学习哪些没有吸收的知识点时

课程设计

佐手、 提交于 2019-12-06 19:19:33
Android应用程序开发 课程设计报告 ( 2019—2020学年 第Ⅰ学期) 基于 Android的日历系统 系 别 信息与控制工程 专 业 计算机科学与技术 班 级 1701 姓 名 刘畅 指导教师 郭 丹 目录 一、 摘要 3 二、 需求分析 3 2.1 需求分析 3 2.2 UML 需求用例图及用例分析说明 4 三、 系统设计 5 3.1 系统总体设计 5 3.2 系统数据库设计 5 3.3 系统详细设计 6 3.4 各模块功能 6 3.5 UML 设计 7 四 、系统 测试 8 4.1 日历主界面 8 4.2 编辑日程界面 9 4.3 查看界面 12 五、系统实现 1 3 5.1 系统实现目标 13 5.2 界面布局 13 附件 19 一、摘要 日历提醒软件的设计和实现是在 Android平台下开发的,实现了一个多功能和全方位的日历提醒功能,为用户提供全方位的时间安排和管理,随时记录所思所想,具有较高的实用价值。 如今智能手机的发展,进入崭新的时代,与此同时,移动互联网也在高速的发展,进入 4G时代,促进智能手机的不断进步。Android作为一个重要的手机软件发展平台,以及当今手机软件的主流使用系统,它的特点是具有开放性体系架构,具有非常好的开发,调试环境,而且还可以支持各种拓展的用户体验,包括了丰富的图形组建还有多媒体支持功能,同时有强大的浏览器

Android下玩JNI的新老三种姿势

落爺英雄遲暮 提交于 2019-12-06 08:30:20
请尊重原创,转载请注明出处: http://blog.csdn.net/mabeijianxi/article/details/68525164 (本文已在 hongyang 微信公众号发布) 说明:本篇不撸代码,只玩编译,其包含了Android studio 2.2最新的JNI玩法 编译环境:macOS 10.12.3 工具包含:Android Studio 2.2 NDK-r14 在Android下要玩jni首先下载ndk是必须的,可以直接去 https://developer.android.google.cn/ndk/downloads/index.html 下载,当然我们家AS为开发者也提供了便捷 只需如图勾选然后OK即可,我的版本是r14,值得一提的是 google ndk-build 命令在 r13 后默认使用 Clang ,并将在后续版本中移除 GCC ,其编译速度更快、编译产出更小、出错提示更友好。 一、徒手编写Android.mk然后ndk-build编译: 这种编译其实是用make工具来玩的,在 linux 徒手写并编译过c的应该很清楚,通过编写makefile,然后再用make编译已经比不停的用gcc命令逐个编译要爽很多,但是 makefile 的编写还是有点蛋疼。程序员都是化繁为简善解人意的,通过 ndk 工具我们无需自己写 makefile 了

JNI 技巧

狂风中的少年 提交于 2019-12-06 08:28:04
JNI 是指 Java 本地层接口(Java Native Interface)。它为用 Java 语言编写的受控代码定义了一种与本地层代码(用 C/C++ 编写)交互的方式。它是厂商无关的,其支持从动态共享库加载代码,尽管有时笨重,但它仍是有效的。 如果你对它还不熟悉,可以阅读 JNI规范(Java Native Interface Specification) 来获得对它的更多了解,了解 JNI 如何工作以及它有哪些功能。规范中有些地方的说明,并不是特别的清晰简洁明了,因而接下来的一些内容也许有点用。 JavaVM 和 JNIEnv JNI 定义了两个关键的数据结构, JavaVM 和 JNIEnv 。它们都是指向函数表的指针。(在 C++ 版本中,它们是类,其中包含一个指向函数表的指针,及每个 JNI 函数对应一个的成员函数,这些成员函数则简单地调用函数表中的对应函数。) JavaVM 提供了“调用接口”函数,通过这些函数,可以创建和销毁一个 JavaVM。看一下 JavaVM 结构的定义就一目了然了: # if defined(__cplusplus) typedef _JavaVM JavaVM; # else typedef const struct JNIInvokeInterface* JavaVM; # endif /* * JNI invocation

Android系统Recovery工作原理之使用update.zip升级过程分析(四)---A...

怎甘沉沦 提交于 2019-12-06 07:49:25
Android系统Recovery模式的工作原理 在使用update.zip包升级时怎样从主系统(main system)重启进入Recovery模式,进入Recovery模式后怎样判断做何种操作,以及怎样获得主系统发送给Recovery服务的命令,这一系列问题的解决是通过整个软件平台的不同部分之间的密切通信配合来完成的。为此,我们必须要了解Recovery模式的工作原理,这样才能知道我们的update.zip包是怎样一步步进入Recovery中升级并最后到达主系统的。 一、 Recovery模式中的三个部分 Recovery的工作需要整个软件平台的配合,从通信架构上来看,主要有三个部分。 ① MainSystem:即上面提到的正常启动模式(BCB中无命令),是用boot.img启动的系统,Android的正常工作模式。更新时,在这种模式中我们的上层操作就是使用OTA或则从SD卡中升级update.zip包。在重启进入Recovery模式之前,会向BCB中写入命令,以便在重启后告诉bootloader进入Recovery模式。 ② Recovery:系统进入Recovery模式后会装载Recovery分区,该分区包含recovery.img(同boot.img相同,包含了标准的内核和根文件系统)。进入该模式后主要是运行Recovery服务(/sbin/recovery

Android.mk文件语法规范

泄露秘密 提交于 2019-12-06 06:42:03
序言: ————- 此文档旨在描述Android.mk文件的语法,Android.mk文件为Android NDK(原生开发)描述了你C/C++源文件。 为了明白下面的内容,你必须已经阅读了docs/OVERVIEW.TXT的内容,它解释了Android.mk文件扮演的角色 和用途。 概述: ——— 写一个Android.mk文件是为了向生成系统描述你的源代码。更明确的说: - 这个文件实际上是GNU Make文件的一小片段,它会被生成系统解析一次或多次。 因此,你应该在Android.mk里尽量少地声明变量,而不要误以为在解析的过程中 没有任何东西被定义。 - 该文件的语法的明的人为了让你能将你的源代码组织为组件(module).一个组件指的是下面的一项: - 一个静态库(static library) - 一个共享库(shared library) 只有一个动态库会被安装/拷贝至你的application package中。但是静态库可用来 生成动态库。 你可以在每个Android.mk文件定义一个或多个组件,并且我可以在几个组件中使用 相同的源文件。 - 生成系统为你处理了一些琐碎之事。比如,在你的Android.mk里,你不须要列出头文件或 列出生成的文件之间的明确认依赖关系。NDK生成系统会为你自动生成。 这也意味着,当更新至新的NDK版本时,你能得到新的工具链/平台支持

热修复设计之热修复原理(三)

你。 提交于 2019-12-06 04:59:11
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 本篇文章将先从热修复原理来介绍热修复设计: Android 热修复 在Android的热修复中主要用来替换类,资源,so的过程; Java 虚拟机 栈架构指令集的主要缺点是执行速度相对来说稍微慢一些;基于堆栈的机器需要更多指令,(内存) Android 虚拟机 而基于寄存器(硬件在CPU内部)的机器指令更长 速度: CPU - > 寄存器 -> 内存 -> 外存 http://blog.csdn.net/ljtyzhr/article/details/39859659 Android 目前有2中虚拟机, Dalvik 和 ART 虚拟机; Android 虚拟机和编译加载顺序 Android 热修复其实主要是针对 Android 虚拟机加载类的一个过程,所以首先先我们应该知道 Android 常用的虚拟机是 Dalvik 虚拟和 ART 虚拟机; Android 4.0 之前是主要是的 Dalvik 虚拟机。 Android 4.4 之后开始支持 ART 虚拟机(可选), Android 5.0 之后就是 ART 虚拟机; Android 4.0 --> Android 4.4 --> Android 5.0 ---> Android 7.0

adb工具介绍与安装

老子叫甜甜 提交于 2019-12-06 02:58:01
一天笑嘻嘻是一名测试人员,想了解Android的测试方法,于是,就找到了小测试。 笑嘻嘻:身为一名测试人员需要了解ADB的哪些内容? 小测试:了解原理和简单的命令使用就可以了。 笑嘻嘻:你有毒啊,都了解原理了,还简单实用? 小测试:用工具不疑,疑工具不用,知道这个工具怎么运行的用起来才得心应手啊。另外ADB命令就像Linux的命令一样,记住常用的,了解大部分的,遇到问题知道百度什么就好。 ADB介绍 [ ] ADB即Android Debug Bridge,是Android提供的一个通用的调试工具,是一个C/S架构的命令,用这个工具可以直接操作管理android模拟器或者真实的android设备。 [ ] ADB是一个客户端/服务器架构的命令行工具,主要由3个部分组成。 Adb clent(客户端):可以通过它对Android应用进行安装、卸载及调试。 adb service(服务器):管理客户端到Android设备上abd后台进程的连接。 adb daemon(守护进程):运行在Android设备上的adb后台进程。 ADB安装 安装方法大同小异,很多文章都推荐安装Android sdk,其实adb工具是包含在Android sdk平台工具软件包里的一个,我们把adb下载了就好。举个例子:王者荣耀是应用宝的一个应用,如果我们要玩王者荣耀,需要把所有的应用都下载了么?当然不需要。