android源码编译

大牛耗时一年:深入探索 Android 包体积优化,共三万字建议收藏上

跟風遠走 提交于 2020-04-04 00:04:05
由于文章特别长,建议先收藏再阅读。 在 Android 性能优化的知识体系当中,包体积优化一直被排在优先级比较低的位置,从而导致很多开发同学对自身应用的大小并不重视。在项目发展的历程中,一般可划分为如下三个阶段: 初创期 => 成长期 => 成熟期 通常来说,当应用处于成长期的中后阶段时,才会考虑去做系统的包体积优化,因此,只有在这个阶段及之后,包体积优化带来的收益才是可观的。 那么,包体积优化能够给我们带来哪些 收益 呢?如何全面对应用的包体积进行 系统分析 及 针对性优化呢?在这篇文章中,我们将一起进行深入地分析与探索。 1、瘦身优化及 Apk 分析方案介绍 1、瘦身优势 我们首先来介绍下,为什么我们需要做 APK 的瘦身优化? 主要有 三个方面 的原因: (1)下载转化率 APK 瘦身优化在实际的项目中优先级是比较低的,因为做了之后它的好处不是那么明显,尤其是那些还没有到 稳定期 的项目,我们都知道,App 的发展历程是从 项目初期 => 成长期 => 稳定期,对于处于 发展初期与成长期 的项目而言,可能会做 启动优化、卡顿优化,但是一般不会做 瘦身优化,瘦身优化 最主要的好处是对应用 下载转化率 的影响,它是 App 业务运营的重要指标之一,在项目精细化运营的阶段是非常重要的。 因为如果你的 App 与其它同类型的 App 相比 Apk 体积要更小的话,那么你的 App

Xamarin.Android Binding篇

风流意气都作罢 提交于 2020-03-19 09:14:19
前言 趁着失业了,闲着没事儿学习了下Xamarin.Android binding,在以往的开发中,我相信很多人都遇到过binding的坑,也不例外, 我也踩了很多雷,好在认识了个大佬,指导了很多 ! 在做这个工作前,我上网搜索了一下关于binding的文章,也有,但是比较少,而且文章都是一两年前,很多SDK都更新了很多代了, 按照他们之前的一些做法就会有问题。 我尝试绑定了微信SDK、支付宝SDK、百度地图SDK,在大神帮助下,一步一步绑定成功了。 而且我相信这几个SDK在开发中用到的概率也还是很大的,所以特此分享下绑定遇到的坑,也为了更好的记录自己遇到的问题。 话不多说,直接上代码。 百度地图SDK绑定 1.准备工作:下载百度android开发包,毕竟工欲善其事必先利其器,地址: http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool 2.开发环境,这里就不讲解开发环境搭建了。我这儿的环境的是VS2017+win10,后续的两个绑定都是如此。 3.Binding: 3.1 新建安卓bingding工程 3.2 将下载的压缩包解压,然后把里面的jar包以及so文件放到以下目录

Android 源码编译make的错误处理

▼魔方 西西 提交于 2020-03-08 08:36:27
Android源码下载: 官方下载 或参考 android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61-Ubuntu SMP Tue Oct 11 15:29:15 UTC 2011 i686 GNU/Linux(Ubuntu10.10 32bit) 首先,我们先安装一些常用的工具 curl: sudo apt-get install curl git: sudo apt-get install git g++: sudo apt-get install g++ 然后,make遇到缺什么就安装什么 /usr/bin/ld: cannot find -lz host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt) /usr/bin/ld: cannot find -lz collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1 解决方法:

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

穿精又带淫゛_ 提交于 2020-03-01 02:41:56
感谢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文件系统编译出错记录

笑着哭i 提交于 2020-03-01 01:28:39
错误1: 注意:external/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java 使用了未经检查或不安全的操作。 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。 注意:external/protobuf/java/src/main/java/com/google/protobuf/micro/CodedInputStreamMicro.java 使用了未经检查或不安全的操作。 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。 Generated: (out/target/product/generic/android-info.txt) host C: acp <= build/tools/acp/acp.c host C++: libhost <= build/libs/host/pseudolocalize.cpp host C: libhost <= build/libs/host/CopyFile.c <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用] <built-in>:0:0: 附注: 这是先前定义的位置 <命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义

ubuntu下编译ffmpeg的过程

最后都变了- 提交于 2020-02-28 01:02:53
后续一段时间准备音视频相关知识的学习,所以先编译ffmpeg做练习用. 以最新版本的android api 29, ndk21, ffmpeg4.2,编译ffmpeg库文件. 1,环境配置, 1)安装yasm,如果没有安装会报nasm not found的错误. 下载 http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz 解压后,进入目录:cd yasm-1.3.0 执行配置 ./configure 编译 :make 安装 make install (这一步使用root权限) 2,ndk的配置, 1)下载 https://developer.android.google.cn/ndk/downloads/ 选择 linux版本的ndk 2)解压后,配置ndk环境 vim ~/.bashrc # 在文件末尾添加 export NDKROOT=/home/**/ndk/android-ndk-r21 exprot PATH=$NDKROOT:$PATH # 保存退出,更新一下环境变量 source ~/.bashrc 或者配置 ~/.profile文件,功能是类似的. .bashrc和.profile这两种配置环境参数的区别,大概时profile是以login方式进入bash环境运行的,意思是要用户登录才行;

编译android版libmpg

不打扰是莪最后的温柔 提交于 2020-02-22 00:48:23
环境:ubutnu 12.04,android SDK 1. 下载libmpg的一个android工程,得到一个Android-libmpg-master.zip。 https://github.com/Nobleworks/Android-libmpg 2. 下载libmpg123源码,得到一个mpg123-1.15.4.tar.bz2。 http://www.mpg123.org/ 3. 将两个文件放到安卓工程目录下,目前是 /home/gong/android/workspace/。分别解压到此处。 现在的目录结构是workspace/下多两个文件夹 mpg123-1.15.4 和 Android-libmpg-master 4. 把目录/home/gong/android/workspace/mpg123-1.15.4/src/libmpg123/里面的所有文件拷贝到 /home/gong/android/workspace/Android-libmpg-master/Android-libmpg/jni/libmpg123/ 5. Android-libmpg-master/Android-libmpg/src/nobleworks/libmpg文件夹下有三个 .java文件。 Feature.java MP3Decoder.java Encoding.java

Ubuntu 15.04 编译UE4 for Linux版

陌路散爱 提交于 2020-02-18 14:13:16
  源  起   Unreal Engine 4 是全球最先进的Realtime Illumination & Physical 引擎;   长期以来,UE4都只有Windows版和Mac版,今年终于向Linux开放,但是需要开发者自己动手编译C++源代码。。。好吧,正好练一下在Ubuntu系统中编译C++源代码;   看来EP是认准了Linux系统的用户都是极客~ Ubuntu是最受欢迎的Linux系统,下面是我在Ubuntu中编译UE4的全过程:   1、首先进入GitHub   没错,EP已经把UE4的源代码托管到了传说中的GitHub上, 地址: https://github.com/EpicGames ,从GitHub获取UE4的源代码压缩包并提取出文件夹;   2、获取最新存档   Ctrl+Alt+T 打开终端,进入源码文件夹根目录,输入 ./Setup.sh ,现在开始从GitHub获取最新源代码的存档,并自动构建第三方库,请确保你的硬盘或分区有10G以上的空间,否则获取过程会出现failue的红色提示;   获取并构建成功后,会出现如下提示:   如果最后没出现”********** SUCCESS ****************“,则构建可能没有成功,请重复上一步; If you don't see SUCCESS message in the end,

编译Android 4.4源代码并烧录到Nexus4

时光毁灭记忆、已成空白 提交于 2020-02-06 08:07:14
环境准备: 基本环境:ubuntu-12.04-desktop-64bit(裸机或者Windows下虚拟机安装均可,14.04也可以) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,内存越大越好。 ========================================== 第一部分:环境初始化 ========================================== 1. 安装Oracle JDK 注意:如果编译Android4.4不能用OpenJDK,必须用Oracle JDK1.6,1.7目前是不支持的。 2. 安装必备工具软件 $sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev $ sudo ln -s /usr/lib

jni入门 eclipsecygwin+ndk

别等时光非礼了梦想. 提交于 2020-02-05 03:34:35
声明:本文转载自 http://blog.sina.com.cn/s/blog_7aa2703601010jrx.html 一、安装CDT、NDK CDT是一个在Eclipse下可以搞C++代码的插件。 NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和java 应用一起打包成apk。 怎么在eclipse装这两个我就不多说了。大家按照以前装adt和sdk的方法来搞就好了。不过有一点是要注意的:因为cygwin是在window上模拟linux的控制台环境,所以对于访问文件的路径是不能带有空格的,貌似也不能带中文。所以ndk的解压后存放的路径必须不能包括空格或中文,比如这种“D:\Program Files\android-ndk-windows”在cygwin是不能识别成功的。 二、安装cygwin 然后是cygwin,我给大家发的那个cygwin压缩包是有安装说明的,大家按照说明一步一步来就可以安装成功。 三、配置NDK环境变量 上述三样安装成功后,就是配置NDK环境变量的问题了。 1、 首先找到cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile。(注意:我安装的时候我的home文件夹下面神马都没有,解决 的办法