android源码编译

xmake从入门到精通9:交叉编译详解

岁酱吖の 提交于 2019-12-09 07:16:26
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。 除了win, linux, macOS平台,以及android, ios等移动端平台的内建构建支持,xmake也支持对各种其他工具链的交叉编译支持,本文我们将会详细介绍下如何使用xmake进行交叉编译。 项目源码 官方文档 交叉编译工具链简介 通常,如果我们需要在当前pc环境编译生成其他设备上才能运行的目标文件时候,就需要通过对应的交叉编译工具链来编译生成它们,比如在win/macos上编译linux的程序,或者在linux上编译其他嵌入式设备的目标文件等。 通常的交叉编译工具链都是基于gcc/clang的,大都具有类似如下的结构: /home/toolchains_sdkdir - bin - arm-linux-armeabi-gcc - arm-linux-armeabi-ld - ... - lib - libxxx.a - include - xxx.h 每个工具链都有对应的include/lib目录,用于放置一些系统库和头文件,例如libc, stdc++等,而bin目录下放置的就是编译工具链一系列工具。例如: arm-linux-armeabi-ar arm-linux-armeabi-as arm-linux

关于GOROOT、GOPATH、GOBIN、project目录

て烟熏妆下的殇ゞ 提交于 2019-12-07 13:55:41
GOROOT、GOPATH、GOBIN、project目录 前言:我觉得java程序员学golang很容易上手。关于GOROOT、GOPATH、GOBIN这些环境变量的设置,我隐约感觉到了java的影子(尽管我是一个C++程序员),唯一和java不同的是不能设置“.”。 另外,golang的设计也很明显的透露着“约定优于配置”的原则。这在java很多框架里面很常见。golang的环境变量设计也是如此。从android和golang我觉得google喜欢java。 不了解java的C++程序员,可以尝试全新去理解golang。 GOROOT golang安装路径。 GOPATH 官方解释,请google。go工作环境中常常用到的一个很重要的环境变量(这种设计类似java)。具体用途:go命令常常需要用到的,如go run,go install, go get等。允许设置多个路径,和各个系统环境多路径设置一样,windows用“;”,linux(mac)用“:”分隔。 在linux(Mac)下,为了方便,一般配置在~/.bash_profile中。 book:~ wukebing$ vi ~/.bash_profile //编辑 book:~ wukebing$ source ~/.bash_profile //编辑完成后,使立即生效 例如:我的GOPATH设置(MAC下)

android NDK开发入门。

心已入冬 提交于 2019-12-07 09:37:45
关于 NDK 的使用,首先需要了解一个概念: JNI 。什么是 JNI ? 2.1 Hello-jni 这个是 NDK 自带的例子程序,安装官方网站的说明,一步步来,应该没有什么问题,这里就不细说了。 2.2 My God I did it 学习的第一步,就是模仿。我们依照上面 Hello-jni 的例子,在创建自己的 NDK 程序。在此过程中,对相关的内容和概念进行分析和说明。 首先, 在工程的 src 夹子下用来放置 Java 文件。我们打开 Eclipse ,然后新建一个 Android 工程,工程名就叫 MyJNI ,工程路径选择我们创建的 NDK 的路径。这里需要注意的是,工程名,包名等,需要和上面的 c 文件中的保持一致。 (Java _ com_jpf_myjni _ MyJNI _ stringFromJNI) 工程建立好后,编辑 src/com/jpf/myjni/MyJNI.java 文件,内容如下: package com.jpf.myjni; import android.app.Activity; import android.widget.TextView; import android.os.Bundle; public class MyJNI extends Activity { /** Called when the activity is

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 多任务能力和支持并发应用

android 编译环境on x64_ubuntu

旧街凉风 提交于 2019-12-06 22:45:21
repo sync 0. setup complie env on local ubuntu: The Android build is routinely tested in house on recent versions of Ubuntu (10.04 and later), but most distributions should have the required build tools available. In general you will need: * Python 2.4, which you can download from python.org. * JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download either from java.sun.com. * Git 1.5.4 or newer. You can find it at http://git.or.cz/ . The Sun JDK is no longer in Ubuntu's main package repository. In order to download it, you need to add the appropriate

GOROOT、GOPATH、GOBIN、project目录 _(转)

六月ゝ 毕业季﹏ 提交于 2019-12-06 12:25:18
前言:我觉得java程序员学golang很容易上手。关于GOROOT、GOPATH、GOBIN这些环境变量的设置,我隐约感觉到了java的影子(尽管我是一个C++程序员),唯一和java不同的是不能设置“.”。 另外,golang的设计也很明显的透露着“约定优于配置”的原则。这在java很多框架里面很常见。golang的环境变量设计也是如此。从android和golang我觉得google喜欢java。 不了解java的C++程序员,可以尝试全新去理解golang。 GOROOT golang安装路径。 GOPATH 官方解释,请google。go工作环境中常常用到的一个很重要的环境变量(这种设计类似java)。具体用途:go命令常常需要用到的,如go run,go install, go get等。允许设置多个路径,和各个系统环境多路径设置一样,windows用“;”,linux(mac)用“:”分隔。 在linux(Mac)下,为了方便,一般配置在~/.bash_profile中。 book:~ wukebing$ vi ~/.bash_profile //编辑 book:~ wukebing$ source ~/.bash_profile //编辑完成后,使立即生效 例如:我的GOPATH设置(MAC下) export GOPATH=$HOME/workspace/go

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

你。 提交于 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

深入理解JAVA虚拟机原理之Dalvik虚拟机(三)

我的未来我决定 提交于 2019-12-05 22:38:58
更多Android高级架构进阶视频学习请点击: https://space.bilibili.com/474380680 本文是Android虚拟机系列文章的第三篇,专门介绍Andorid系统上曾经使用过的Dalvik虚拟机。 也许有人会问,既然Dalvik虚拟机都已经被废弃了,为什么我们还要了解它呢?出于下面的原因,让我觉得还是有必要了解一下Dalvik虚拟机的: Dalvik留下的很多机制在现在的Android系统是一样适用的,例如Dalvik指令,dex文件 并非每个人都是在最新版本的Android系统上工作 了解一项技术曾经的历史和演进过程,有助于增加对于现在状态的理解 Dalvik是Google专门为Android操作系统开发的虚拟机。它支持.dex(即“Dalvik Executable”)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 Dalvik由Dan Bornstein编写,名字来源于他的祖先曾经居住过的小渔村达尔维克(Dalvík),位于冰岛。 栈 VS 寄存器 大多数虚拟机都是基于堆栈架构的,例如前面提到的HotSpot JVM。然而Dalvik虚拟机却恰好不是,它是基于寄存器架构的虚拟机。 对于基于栈的虚拟机来说,每一个运行时的线程,都有一个独立的栈。栈中记录了方法调用的历史

android studio 初印象

旧街凉风 提交于 2019-12-05 20:05:53
ANSROID STUDIO sdk 目录 build-tools目录,存放各版本Android的各种编译工具。 docs目录,存放开发说明文档。 extras\android目录,存放兼容低版本的新功能支持库,比如android-support-v4.jar、v7的各种支持库、 v13以上兼容库等。 platforms目录,存放各版本Android的资源文件。 platform-tools目录与tools目录,存放常用的开发辅助工具,如数据库管理工具sqlite3.exe、模拟器管 理工具emulator.exe samples目录,存放各版本Android常用功能的demo源码。 sources目录,存放各版本Android的API开放接口源码。 system-images目录,存放模拟器各版本的系统镜像与管理工具 androidStudio 编译 选择菜单Build→Make Project,编译整个项目下的所有模块。 选择菜单Build→Make Module ***,编译指定名称的模块。 选择菜单Build→Clean Project,然后选择菜单Build→Rebuild Project,先清理项目,再对整个项目 重新编译。 AS下的目录结构 manifests子目录,下面只有一个xml文件,即AndroidManifest.xml,是App的运行配置文件。

今天是JVM的生日,来了解下JVM的发展历史吧

血红的双手。 提交于 2019-12-05 19:43:43
1991年4月,由James Gosling主导的团队创造了Oak语言,java的前身,1995年5月23号,Oak语言更名Java,并且提出那句注明的:”write Once,Run Anywhere”的口号.1996年1月23日,JDK1.0发布. 当时正好赶上浏览器快速崛起,发展的浪潮,大家发现java一处编译到处使用的特性和浏览器很契合,同一个页面不可能每一个操作系统我都写一遍.用现在的话说java正好站在这个风口上.导致它飞速发展才有了今天的江湖地位. 一、JVM简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后