• Linux Process

     · Grape

    概念

    程序是一系列指令的集合,通常存为可执行文件。进程是程序的执行过程。

    进程属性

    使用ps可以查看系统正在运行的进程。 ps --help显示该命令的用法。

    ps -e -o USER,PID,PPID,GID,NAME
    USER …
  • The Implementation Details of Android's force-stop

     · 28 min read  · Grape

    基于AOSP 8.0.1源码分析force-stop的实现细节。

    使用 force-stop

    am force-stop com.example
    

    com.example 是应用程序包名。

    am命令

    cat /system/bin/am
    #!/system/bin/sh
    if [ "$1" != "instrument" ] ; then
        cmd activity "$@"
    else
        base=/system
        export CLASSPATH=$base/framework/am.jar
        exec app_process $base/bin com …
  • Debug Android Framework with Android Studio

     · Grape

    背景

    在阅读Android Framework代码时,有时需要动态调试加深理解,或者想调试某个API的实现原理(如startActivity)时,希望可以使用Android Studio调试,且可以对应到源码的每一行 …

  • C++ 继承

     · 7 min read  · Grape
    export NDK_ROOT=~/android-ndk-r18b
    
    ${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
      --target=x86_64-none-linux-android
      --gcc-toolchain=${NDK_ROOT}/toolchains/x86_64-4.9/prebuilt/linux-x86_64
      --sysroot=${NDK_ROOT}/sysroot
      -isystem ${NDK_ROOT}/sysroot/usr/include/x86_64-linux-android
      -pie -o  hello.c.o -c hello.c
    
    ${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/clang
      --target=x86_64-none-linux-android
      --gcc-toolchain=${NDK_ROOT}/toolchains/x86_64-4.9 …
  • Android Unicode 字符串

     · Grape

    相关源码

    String16

    // http://androidxref.com/6.0.1_r10/xref/system/core/libutils/String16.cpp#allocFromUTF8
    static char16_t* allocFromUTF8(const char* u8str, size_t u8len)
    {
        const ssize_t u16len = utf8_to_utf16_length(u8cur, u8len);
        utf8_to_utf16(u8cur …
  • Android 智能指针

     · Grape

    相关源码

    http://androidxref.com/6.0.1_r10/xref/system/core/include/utils/StrongPointer.h http://androidxref.com/6.0.1_r10/xref/system/core/include/utils/RefBase.h http://androidxref.com/6.0.1_r10/xref/system/core/libutils/RefBase.cpp

    StrongPointer

    INITIAL_STRONG_VALUE 为什么不是0 …

  • Android 源码开发

     · 1 min read  · Grape

    准备开发环境

    使用docker-aosp搭建

    编译步骤

    source build/envsetup.sh 
    including device/asus/deb/vendorsetup.sh
    including device/asus/flo/vendorsetup.sh
    including device/asus/fugu/vendorsetup.sh
    including device/generic/mini-emulator-arm64/vendorsetup.sh
    including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
    including device/generic …
  • Docker 基础

     · 2 min read  · Grape

    Dockerizing a Python Flask App

    Install nginx 1.27.2

    docker pull nginx:1.27.2
    docker pull python:3.13
    
    services:
      web:
        container_name: example_nginx
        image: nginx:1.27.2
        privileged: true
        ports:
          - 80:80
          - 443:443
        volumes:
          - "$PWD/html:/usr/share/nginx/html:rw"
          - "$PWD/conf/conf.d:/etc …
  • Android ClassLoader

     · 1 min read  · Grape

    Class

    // http://androidxref.com/6.0.1_r10/xref/libcore/libart/src/main/java/java/lang/Class.java
    public final class Class<T> implements Serializable, AnnotatedElement, GenericDeclaration, Type {
        static native Class<?> classForName(String className, boolean shouldInitialize,
            ClassLoader classLoader) throws ClassNotFoundException;
    }
    

    VMClassLoader

    // http://androidxref.com/6.0.1_r10/xref/libcore/libart/src …
  • Android ProgressBar Circle

     · 1 min read  · Grape

    Shape

    <?xml version="1.0" encoding="utf-8"?>
    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape=["rectangle" | "oval" | "line" | "ring"] 
        android:innerRadius="integer"
        android:innerRadiusRatio="integer"
        android:thickness="integer"
        android:thicknessRatio="integer"
        android:useLevel="boolean"
        >
        <corners
            android:radius="integer"
            android:topLeftRadius="integer"
            android:topRightRadius="integer"
            android:bottomLeftRadius …
  1. 1
  2. 2
  3. 3
  4. 4