Ubuntu 下编译goldfish内核并使用模拟器运行
Ubuntu 下编译goldfish内核并使用模拟器运行前言要学习Android Framework开发,通常需要下载AOSP(Android Open Source Project)项目。AOSP包含了Android操作系统的全部源代码,但并不包含内核部分。若需进一步学习驱动开发,则需另行下载内核源码。 需要特别说明的是,Android系统使用的内核并非原生Linux Kernel,而是基于Linux内核进行了深度定制,加入了进程间通信(Binder)、低内存管理等Android专属特性。内核有很多版本,我们可以选择谷歌官方维护的Android通用内核(Android Common Kernel, ACK),也可根据实际设备情况选用厂商开源的内核(需注意部分设备可能要求解锁Bootloader)。 简单起见,本文选用goldfish内核作为学习对象。该内核是Android模拟器专用版本,特别适合在虚拟环境中进行驱动开发测试。 值得注意的是,虽然Android基于Linux内核构建,但是AOSP是不需要和内核编译到一起的,而是在设备启动时,Bootloader 负责选择并加载内核,然后 ...
使用apktool实现一个apk修改和打包脚本
使用apktool实现一个apk修改和打包脚本1 背景最近接到一个需求,app有多个服务器环境,上传发布时可以根据所处环境生成对应的配置参数以供app初始化时使用,我们选择的方法是在服务器对上传的apk进行解包插入配置文件并重新打包及签名,再发布。主要用到apktool及签名工具apksigner的相关知识,顺便了解一下如将java代码打包成可执行程序及脚本的使用。 2 用到的工具2.1 apktoolApktool 是一个开源的逆向工程工具,用于 反编译(解包)和回编译(重新打包)Android APK 文件,这里会用到其中的解包和打包命令 。安装方式 从apktool官网下载最新版的jar文件,重命名为apktool.jar 下载Apktool的启动脚本(右键保存),其作用是简化运行 Apktool 的命令行调用。不同平台的脚本不同,window上是apktool.bat,linux则是不带后缀的apktool。 将jar文件和脚本文件保存至自定义的目录,然后将该路径添加到配置环境变量Path中,也可以复制到Path默认的目录,windows是 C://Windows,Linux ...
Ubuntu 下编译LibreOffice Android版
前言LibreOffice 是一套开源且免费的办公软件,类似于 Microsoft Office 和 Apache OpenOffice。它包括文字处理、电子表格、演示文稿、绘图、数据库等功能模块。LibreOffice可执行于各种系统平台,包括Microsoft Windows、MacOS及GNU/Linux,LibreOffice 也提供了 Android 平台的版本,支持Office文档的浏览和少量的编辑功能。本文介绍在Ubuntu下编译LibreOffice 的Android 版本,生成apk及so文件。 本文所用编译环境: Ubuntu 22.04.3 LTS, 64Bit gcc/g++ 12.3.0,LibreOffice 要求版本12或以上 jdk 17.0.10,根据Gradle版本而定 ndk 25.2.9519653,LibreOffice 要求版本23~25 1 下载1.1 克隆源代码在LibreOffice中文社区源码介绍页面可以获取到仓库地址,除了官方仓库外,也提供了国内镜像。使用git clone命令将源码下载下来,源码非常大, ...
基于nginx搭建v2ray服务端配置vmess tls websocket
前言 vps:一台在墙外的vps服务器,它能自由上网 v2ray:负责你的网络与vps之间的网络通讯 VMess:一个加密传输协议,通常作为 V2Ray 客户端和服务器之间的桥梁。 nginx:作为web服务器,负载均衡服务器,邮件服务器等,本例用到web服务器功能部署网站 websock:一个传输协议,支持全双工,大概用来客户端与服务端中传输数据包 tls:传输层安全协议,用来加密http 流程:{浏览器} <–(socks) {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <–(VMess)–> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <–(Freedom)–> {目标网站}–> 123456flowchart LR; A[用户浏览器] -->|请求访问| B(域名解析到VPS IP); B -->|443端口| C[Nginx]; C -->|WebSocket| D[v2ray]; D ...
Ubuntu 下编译AOSP源码
前言AOSP是谷歌维护的一个开源项目,它包含了Android系统的源码和功能。 狭义的Android系统是谷歌的一个商标,除了包括asop的源码部分,还包括手机处理器、摄像头等硬件所需的固件等内核设备驱动,以及要谷歌移动服务(GSM、如Chrome、Google Play等等。其他第三方厂商在AOSP的基础上构建出自己的RoM,获得Android商标的授权后也可以标注Android的字样。 编译完AOSP后,可以导入Android studio进行阅读学习、修改和调试。谷歌提供了的nexus和pixel手机的硬件驱动代码,它们是使用AOSP作为原生系统,因此我们如果有nexus和pixel手机也可以对AOSP进行定制并刷到设备上。 编译配置要求 16 GB 以上的内存,越大越好,这里是指构建过程的可用内存, Google 建议提供 64 GB。 400G以上可用磁盘空间。代码占150-200GB,构建产物占150多G,重复构建占用更多 Ubuntu 18.04 以上,64位。官方现已不再支持在 Windows 或 MacOS 上进行构建。 以下以获取android-13.0.0_ ...
Ubuntu下使用GoMobile构建AndroidLibXrayLite/AndroidLibV2rayLite的arr包
前言V2Ray 是 Project V 项目下的一个核心工具,主要负责网络协议、路由等网络通信功能的实现。Xray 是由 V2Ray 项目衍生出来的一个全新的网络代理工具,其目标是对 V2Ray 进行优化和改进,以提供更好的性能和功能。 V2Ray和Xray主要是使用 Go 语言( Golang)编写的。Go 是一种由 Google 开发的开源编程语言,它提供了丰富的标准库和并发支持,非常适合构建高性能的网络应用程序。go语言的项目可以通过Gomobile库将Go代码构建为可以在移动平台上运行的原生应用程序或依赖库。 AndroidLibV2rayLite和AndroidLibXrayLite 就是基于V2Ray和Xray的 Android 库,通过这个库,可以在 Android 应用中集成 V2Ray(Xray) 功能,实现网络代理、加密通信等功能。 本文构建环境 Ubuntu 22.04.3 LTS Desktop 64-bitopenjdk 17.0.10Android sdk 34, NDK 26.2.11394342go 1.22.1 1 搭建环境1.1 安装jdk1 ...
Ubuntu下编译envoy mobile
Ubuntu下编译envoy mobile前言Envoy 是一个开源的高性能、可扩展的代理服务,最初由 Lyft 公司开发。它设计用于处理现代的微服务架构中的网络通信,并提供了许多功能,包括负载均衡、服务发现、路由、认证、授权等。Envoy 被广泛用于构建和部署云原生应用程序以及微服务体系结构。 Envoy Mobile 是 Envoy 的移动端版本,专门设计用于在移动应用程序中处理网络流量。envoy 提供了官方依赖,不过提供的api有限,如果需要对其进行定制则需要重新编译构建aar 1api("io.envoyproxy.envoymobile:envoy:0.5.0.20231016") 本文将介绍在Linux下编译envoy mobile,生成aar文件的流程。 1 使用环境硬件要求 内存8G以上,建议12G以上 磁盘空间50G以上,建议使用SSD 科学上网(可访问google、github等网站) 编译环境 Ubuntu 22.04.3 LTS Desktop 64-bit Java 8 以上 Android SDK Platform 30 Androi ...
ubuntu 下部署envoy 并作为前端代理
前言Envoy 是一个开源的高性能、可扩展的代理服务,最初由 Lyft 公司开发。它设计用于处理现代的微服务架构中的网络通信,并提供了许多功能,包括负载均衡、服务发现、路由、认证、授权等。Envoy 被广泛用于构建和部署云原生应用程序以及微服务体系结构。本文将通过将envoy作为前端代理来演示envoy的安装、配置和简单使用。 本文使用环境 Ubuntu 22.04.3 LTS Desktop 64-bit 1 安装envoy 编译比较复杂,可以使用Envoy 社区提供的docker镜像和getenvoy项目,不过getenvoy所使用的版本比较老。在Linux下最简单的方式还是直接使用官方的envoy预编译二进制文件。 1.1 下载 从Envoy 的 GitHub 发行版页面下载 Ubuntu 的最新版的envoy预编译二进制文件,这里选择“envoy-1.28.0-linux-x86_64”1https://github.com/envoyproxy/envoy/releases 1.2 安装envoy新建项目目录,将文件复制到该目录下(本文使用/home ...
Ubuntu 22.04 安装教程及使用技巧
Ubuntu 22.04 安装教程及使用技巧前言通常所说的 Linux 其是指Linux内核,Linux 系统是指基于 Linux 内核的操作系统的泛称,而不是一个具体的操作系统。Ubuntu 则是 Linux 其中一个发行版,其他比较知名的还有 Debian、Fedora、CentOS等。 作为程序员,我们可以用使用 Ubuntu 系统来体验 Linux、 熟悉命令行操作、部署服务器、搭建梯子和交叉编译,如编译 Android 项目所需的so库,编译 Android 系统源码等等。本文将面向新手介绍在 VMware 中安装和配置 Ubuntu 的过程,以及一些常用的技巧和命令。 本文所用环境 VMware Workstation 17 Pro Ubuntu 22.04.3 LTS Desktop 64-bit 1 下载镜像12# Ubuntu官方网站https://cn.ubuntu.com/download/desktop 在Ubuntu官网下iso镜像文件,同时也可看到官方推荐的Ubuntu配置要求 2 安装2.1 VMware虚拟机安装如果对性能要求不是很严格,通常选择在虚 ...
Markdown快速上手
Markdown快速上手前言Markdown是一种轻量的标记语言,它可以使原来的纯文本内容带上排版格式,原理就是用简单的标记符号编辑文本然后转换成HTML,多被用来写博文、README、开发文档、帮助文档,云笔记等。对于更复杂排版还是建议使用专门的如word等文字处理软件,它们各有所长,我们要做的是在不同的场景选择称手的工具。 1 基本语法Markdown是如此轻量,语法标签很少,十分钟可以上手。 1.1 标题(1)语法语法:# 标题文字 要写文章,首先要有个标题,Markdown中用#来标识标题,# 的数量代表了标题的级别,一共有1到6级标题,一个#是字号最大的标题,6个#是字号最小的标题。 (2)书写规范一般情况下不建议使用超过四层标题。具体什么标题用多大的字号参考: 一级标题:文章的标题二级标题:文章主要部分的大标题三级标题:二级标题下面一级的小标题四级标题:三级标题下面某一方面的小标题 (3)标题序号如果需要为标题加上序号,可以参考论文中的标题序号规范: 第一层:一、汉字数字加顿号 第二层:(一) 括号中包含汉字数字 第三层:1.阿拉伯数字加下脚点 第四层:(1)括号中包 ...