android源码编译

如何在 Ubuntu 9.10 下编译 Android 源码[简单可靠]

拜拜、爱过 提交于 2019-11-30 10:44:48
========================================== 如何在 Ubuntu 9.10 下编译 Android 源码 ========================================== 问题:Ubuntu 升级为 9.10, 后 Android 源码无法编译通过怎么办? 原因: 这是 gcc 和 g++ 的版本太高导致的问题。Ubuntu 9.04 是4.3, 而 9.10 是4.4. GCC 在 4.4 时把部份 string 相关的 function 回传值的 type 改变了... char* 改成了 const char*... 也因此让一堆原本不是针对最新的gcc来写的code都无法编译成功。 解决方案:使用旧版本的 gcc 和 g++ 。 1、先下载 gcc-4.3 g++-4.3: apt-get install gcc-4.3 g++-4.3 2、删除原有的连接: sudo rm /usr/bin/gcc sudo rm /usr/bin/g++ 3、添加新的连接: sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++ ==============================================

UPX为APK加壳中.init段相关问题

隐身守侯 提交于 2019-11-29 23:16:19
感谢UPX的维护者们.最近在读UPX源码,目的是为.so文件加壳玩. 在此之前阅读了大部分我能搜到的中文相关内容.很多语焉不详,所以综合了一下,编译出了Linux下的版本. 本文简单说明了以下内容: 为什么一些.so在新版编译的UPX中压缩无法通过. .init段的一些简单探索 编译UPX 你可以参考这里,step by step. Android NDK UPX加固 作者:fallrain 无法编译的一点情况 UPX最新版d9e7cb4b5485用VS编译会报错-无法识别的导出符号.另外还有一些问题,动态结构体数组不能直接声明.需要动态申请.这都是小问题,根据报错信息很容易解决.真正的关键在于对于加壳.so动态链接库会提示无法识别的文件格式.当前我还没有在windows平台编译成功最新版. 编译的小科普 源代码如果跨平台,通过不同的编译选项可以编译成不同平台的程序. 功能不变. 无法加壳 我编译成功UPX的Linux版后,发现加壳Android上的.so动态链接库文件会报 “未知文件格式” .在使用一定数量的不同类型.so后.认为要么UPX压缩.so的传言为虚,要么我们的.so文件统统有问题. .init 多篇网文反复提到UPX只能压缩具有该”区段”的内容. UPX区分格式的方法 压缩可执行程序肯定不能像压缩软件那样直接一套通用算法就能搞定,得针对不同格式做出相应安排,

Android 平台的几个编译命令----make,mmm,mm,mma

我是研究僧i 提交于 2019-11-29 18:45:22
在android源码根目录下,执行以下三步即可编译android: 1. . build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 3. make #编译android整个系统 android平台提供了几个命令用于编译,分别为: 1. make: 不带任何参数则是编译整个系统,编译时间比较长,初次编译使用此命令。 make MediaProvider: 单个模块编译,会把该模块及其依赖的其他模块一起编译(会搜索整个源代码来定位MediaProvider模块所使用的Android.mk文件,还要判断该模块依赖的其他模块是否有修改); eg:make services:编译系统服务及相关的模块; make bootimg:生成boot.img; make -j 8:该指令通过 -j 参数来设置参与编译的线程数量,以提高编译速度。 2. mmm packages/providers/MediaProvider: 编译指定目录下的模块,但不编译它所依赖的其它模块; 3. mm: 编译当前目录下的模块,它和mmm一样,不编译依赖模块; 这种编译方式一般需要cd进入packages/providers/MediaProvider目录,然后执行mm指令; 4. mma: 编译当前目录下的模块及其依赖项 。 以上三个命令都可以用

android平台的几个编译命令----make,mmm,mm,mma

此生再无相见时 提交于 2019-11-29 18:44:34
在android源码根目录下,执行以下三步即可编译android: 1. . build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 3. make #编译android整个系统 android平台提供了几个命令用于编译,分别为: 1. make: 不带任何参数则是编译整个系统,编译时间比较长,初次编译使用此命令。 make MediaProvider: 单个模块编译,会把该模块及其依赖的其他模块一起编译(会搜索整个源代码来定位MediaProvider模块所使用的Android.mk文件,还要判断该模块依赖的其他模块是否有修改); eg:make services:编译系统服务及相关的模块; make bootimg:生成boot.img; make -j 8:该指令通过 -j 参数来设置参与编译的线程数量,以提高编译速度。 2. mmm packages/providers/MediaProvider: 编译指定目录下的模块,但不编译它所依赖的其它模块; 3. mm: 编译当前目录下的模块,它和mmm一样,不编译依赖模块; 这种编译方式一般需要cd进入packages/providers/MediaProvider目录,然后执行mm指令; 4. mma: 编译当前目录下的模块及其依赖项 。 以上三个命令都可以用

android平台的三个编译命令----make,mm,mmm

梦想的初衷 提交于 2019-11-29 18:44:06
在android源码根目录下,执行以下三步即可编译android: 1. build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 3. make #编译android整个系统 android平台提供了三个命令用于编译,这3个命令分别为: 1. make: 不带任何参数则是编译整个系统; make MediaProvider: 单个模块编译,会把该模块及其依赖的其他模块一起编译(会搜索整个源代码来定位MediaProvider模块所使用的Android.mk文件,还要判断该模块依赖的其他模块是否有修改); 2. mmm packages/providers/MediaProvider: 编译指定目录下的模块,但不编译它所依赖的其它模块; 3. mm: 编译当前目录下的模块,它和mmm一样,不编译依赖模块; 4. mma: 编译当前目录下的模块及其依赖项 以上三个命令都可以用-B选项来重新编译所有目标文件。 来源: CSDN 作者: 绿野耕夫 链接: https://blog.csdn.net/finewind/article/details/46522369

m、mm、mmm编译命令

…衆ロ難τιáo~ 提交于 2019-11-29 18:43:30
m:编译所有的模块; mm:编译当前目录下的模块,当前目录下要有Android.mk文件; mmm:编译指定路径下的模块,指定路径下要有Android.mk文件; 使用上述三个命令之前,需要在android源码根目录执行source build/envsetup.sh命令设置环境,m和make的区别便在此处。 来源: CSDN 作者: otto_yx 链接: https://blog.csdn.net/yx2817/article/details/59539082

Android系统编译指令make 、mmm、mm优缺点比较

白昼怎懂夜的黑 提交于 2019-11-29 18:43:11
Android 系统提供了三种指令用于编译,他们分别为 make、mmm、mm, 这三个指令编译的优缺点如下: 1. make: 不带任何参数,用于编译整个系统,编译时间比较长,除非是进行初次编译否则不建议此种做法; 例如:make MediaProvider z这种模式对应于单个模块的编译。它的优点是:会把该模块依赖的其他模块一起跟着编译。例如:make libmedia 就会把libmedia依赖库全部编译好。当然缺点也会很明显,那就是它会搜索整个源码来定位MediaProvider 模块所使用的Android.mk文件。并且还要判断该模块依赖的其他模块是否有修改。所以编译时间比较长。 2. mmm pacKages/providers/MediaProvider:该命令编译指定目录下的目标模块,而不编译它所依赖其他模块。所以,若是初次编译,采用此种模式编译一个模块往往会报错,错误的原因就在于它依赖的其他模块没有一起编译。 3. mm 这种编译方式一般需要cd 进入pacKages/providers/MediaProvider目录,然后执行mm指令。该命令会编译当前目录下的模块。它和mmm一样,只编译目标模块。mm和mmm编译的速度都很快。 从使用者的角度来考虑: 1. 如果只知道目标模块的名称,则建议使用 make 模块名 的方式编译目标模块。例如:如果要编译

Ubuntu10.04上编译Android源码(Build Android source in...

不羁的心 提交于 2019-11-29 17:34:53
一、Introduction 今天我们就来谈谈如何在Ubuntu平台上面编译android源码,我的是ubuntu10.04版本,在进行编译流程讲解之前我想讲一下 make 、make snod 、make kernel的作用,m、mm、mmm它们的作用以及区别。 - make: 编译源码,生成相应的系统镜像文件。 - make snod: 重新生成一个system.img系统镜像文件 - make kernel: 编译内核(可选)一般根据envsetup.sh文件内容而论 - m: Makes from the top of the tree(编译全部模块)。 - mm: Builds all of the modules in the current directory(编译当前目录下的所有模块)。 - mmm: Builds all of the modules in the supplied directories(编译指定目录下的所有模块)。 二、 编译Android source以及SDK 2.1、完全编译 使用make编译并生成镜像 ~$: cd ~/android/src ~$: make 映像编译成功后会在目录 ~/android/src/out/target/product/generic 下产生一些image文件 ramdisk.img system.img

基于i.MX8开发板进行安卓Android9.0编译和开发

醉酒当歌 提交于 2019-11-29 14:47:10
安卓 Android 凭借其丰富的生态环境,以及快捷的应用开发和分发,获得了广泛的市场关注。米尔最新基于 NXP iMX8 处理器的MYD-JX8MX核心板及开发板也提供了Android 9.0支持。下面我们将介绍如从源码开始编译安卓Android 9.0。 i.MX8开发板介绍 http://www.myir-tech.com/product/myc-jx8mx.htm请添加链接描述 部署开发环境 开发前需要在PC安装好Linux操作系统,推荐使⽤Ubuntu 16.04 64bit发行版,8G内存, 500G以上空闲硬盘。连接网线并配 置好网络,后续操作需要连接互联网安装或下载相关软件包。可以参考NXP官方文档 《Android_User's_Guide.pdf》。 替换Ubuntu软件源 操作步骤如下: 1.备份源 cp /etc/apt/sources.list /etc/apt/sources.list-bak 2.复制16.04清华源内容到此/etc/apt/sources.list 文件。 3.更新源 apt-get update PS: 如遇到appstream3报错可以先删除软件包,再更新。 安装必备软件包 新装Ubuntu系统还需要安装一些常用软件,执行如下命令进行安装。 sudo apt-get install gawk wget git-core

跨平台编译ceres for Android

好久不见. 提交于 2019-11-29 07:31:48
折腾了几乎一天,记录一下。 最大的坑是官网给出的    1.进入ceres源代码目录下的jni目录    2. EIGEN_PATH ="指向eigen库目录,即包含EIGEN文件夹的那个文件夹” ndk -build 这方法的确编译出了一个近700M的静态库,但使用时总是未定义链接错误。现在想想跟以前编译OpenCV时遇到的错误相似, 解决的办法也相似,通过cmake调用ndk的工具链编译。 我编译动态库的命令 /home/hk/Android/Sdk/cmake/3.10.2.4988404/bin/cmake -DCMAKE_TOOLCHAIN_FILE=/home/hk/Android/Sdk/ndk/20.0.5594570/build/cmake/android.toolchain.cmake -DEIGEN_INCLUDE_DIR=/home/hk/ndk/eigen-git-mirror-3.3.6 -DANDROID_ABI=arm64-v8a -DANDROID_STL=c++_shared -DANDROID_NATIVE_API_LEVEL=android-27 -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DMINIGLOG=ON -DCMAKE_BUILD_TYPE