NDK
Make构建
LOCAL_PATH := $(call my-dir)
:当前目录include $(CLEAR_VARS)
:清理LOCAL_XXX
目录LOCAL_MODULE := xxx
:定义模块名称include $(BUILD_SHARED_LIBRARY)
:生成so库include $(BUILD_STATIC_LIBRARY)
:生成a库include $(BUILD_EXECUTABLE)
:生成bin文件
编译命令:
ndk-build \
NDK_PROJECT_PATH=. NDK_OUT=./out/obj NDK_LIBS_OUT=./out/libs \
APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk
CMake构建
示例ndk.zip (直接右键另存为下载)
Android tools
# 查看APK版本
cd E:\Android\SDK\build-tools\25.0.3
aapt dump badging app.apk
# 属性设置
getprop | grep log
setprop persist.sys.logd.level V
# 查看软件信息
dumpsys package com.xxx.xxx | grep Path
Process memory layout
ps, top
: 查看内存基本信息procrank, cat /proc/pid/status
: 查看内存详细信息
Vss: 虚拟内存
Rss: 实际使用内存,包括共享库内存
Pss: 实际使用内存,共享内存按比例分配计算
Uss: 进程独占内存
pmap, cat /proc/pid/maps
: 查看内存映射
AOSP
主要步骤参考ArchWiki的AOSP构建,其它的关键步步骤如下:
# 打开pacman的lib32选项
sudo vim /etc/pacman.conf #找到[multilib],把这一行和它下一行的注释去掉
sudo pacman -Syy
# 自己遇到的一个问题,makd时需要,不然报错
sudo pacman -S lib32-glibc
# 安装repo
sudo pacman -S repo
# 使用Python2环境
virtualenv -p /usr/bin/python2 venv
source venv/bin/activate
# 下载源码,这里使用清华的源
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r81 --depth 1
repo sync -j4 -c
# 配置openjdk
sudo ln -s /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/java-7-openjdk-amd64
sudo ln -s /usr/lib/jvm/java-7-jdk /usr/lib/jvm/default-runtime
sudo ln -s /usr/lib/jvm/java-7-jdk /usr/lib/jvm/default
# 防止AOSP自带gcc/ld的BUG,用系统的代替
cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin/ld
# 在bash环境下执行以下命令
export LC_ALL=C # 去除本地变量,防止影响编译
source build/envsetup.sh
lunch
make -j4
# 运行模拟器
source build/envsetup.sh
lunch # 选择刚才设置的目标版本
emulator
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]