Android.mk 小结 和 手机分区 && 开机动画

Android 支持客户自定义第三方动画,我们只要将做好的动画文件,命名为bootanimation.zip 打包固件的时候存储到 /system/media 文件夹下面,Android系统就能够自动使用第三方的动画作为开机动画。
说明:Android原生的动画是使用openGL进行实时绘制的,所以在/system/media 无法找到 Android 原生动画的动画文件。
Android 开机会出现3个画面:
a. Linux 系统启动,出现Linux小企鹅画面(reboot);
b. Android平台启动初始化,出现"A N D R I O D"文字字样画面;
c. Android平台上层图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。
————————————————

adb shell setprop persist.vendor.bootanimselectover 0
adb shell 改 SystemProperties
学习路径GitHub–各种语言
Android.bp文件模块单独编译:make modulename
MK语法小结
android.bp详解
nanja-android.bp
grep -r “sssss” /vendor-common/base linux 搜索
git diff ./ > a.patch git 拿到不同的改动 生成文件
mmma frameworks/base/packages/SystemUI/ > …/systemui.txt 编译文件

# Module name should match apk name to be installed
LOCAL_MODULE := Music
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
include $(BUILD_PREBUILT)

$(shell mkdir -p out/target/product/xxx/system/fonts  ; \
        cp -f vendor/mediatek/proprietary/packages/xxx/xxx/先休息.ttf  out/target/product/xxx/system/fonts/先休息.ttf ;)

# 01 引入lib 其他的so库
include $(CLEAR_VARS)
LOCAL_MODULE := name
LOCAL_SRC_FILES := lib/name.so
LOCAL_MODULE_TAGS := optional
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_SUFFIX = .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/app/Music/lib/arm
include $(BUILD_PREBUILT)


# 02 源码编译apk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := platform


LOCAL_STATIC_JAVA_LIBRARIES := httpclient httpcore zxingcore

LOCAL_PACKAGE_NAME := bbplay

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_DEX_PREOPT:= false
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
             httpclient:libs/httpclient-4.2.5.jar  \
             httpcore:libs/httpcore-4.2.4.jar  \
             zxingcore:libs/zxing.core.jar            
include $(BUILD_MULTI_PREBUILT)

## MK
一、编译一个 简单的APK  
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  # Build all java files in the java subdirectory
  LOCAL_SRC_FILES := $(call all-subdir-java-files)
  # Name of the APK to build
   LOCAL_PACKAGE_NAME  := LocalPackage
  # Tell it to build an APK
  include $( BUILD_PACKAGE )
二、编译一个 依赖静态.jar文件的APK 
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  # List of static libraries to include in the package
   LOCAL_STATIC_JAVA_LIBRARIES :=  static-library
  # Build all java files in the java subdirectory
  LOCAL_SRC_FILES := $(call all-subdir-java-files)
  # Name of the APK to build
  LOCAL_PACKAGE_NAME := LocalPackage
  # Tell it to build an APK
   include $( BUILD_PACKAGE)
  注: LOCAL_STATIC_JAVA_LIBRARIES 后面应是你的APK程序所需要的JAVA库的JAR文件名。
三、编译一个 需要platform key签名的APK 
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  # Build all java files in the java subdirectory
  LOCAL_SRC_FILES := $(call all-subdir-java-files)
  # Name of the APK to build
  LOCAL_PACKAGE_NAME := LocalPackage
   LOCAL_CERTIFICATE : = platform
  # Tell it to build an APK
  include $(BUILD_PACKAGE)
 注: LOCAL_CERTIFICATE 后面应该是签名文件的文件名
四、编译一个 需要特殊vendor key签名的APK 
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  # Build all java files in the java subdirectory
  LOCAL_SRC_FILES := $(call all-subdir-java-files)
  # Name of the APK to build
  LOCAL_PACKAGE_NAME := LocalPackage
   LOCAL_CERTIFICATE := vendor/example/certs/app
  # Tell it to build an APK
  include $(BUILD_PACKAGE)
五、装载一个 普通的第三方APK
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  # Module name should match apk name to be installed.
  LOCAL_MODULE := LocalModuleName
   LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
   LOCAL_MODULE_CLASS := APPS
   LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
  LOCAL_CERTIFICATE := platform
  include $( BUILD_PREBUILT ) 
六、装载 需要.so(动态库)的第三方apk
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := baiduinput_android_v1.1_1000e
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
include $( BUILD_PREBUILT )
 
#################################################################
####### copy the library to /system/lib #########################
#################################################################
include $(CLEAR_VARS)
LOCAL_MODULE := libinputcore.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)
LOCAL_SRC_FILES := lib/$(LOCAL_MODULE)
OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)
include $( BUILD_PREBUILT )
七、编译一个静态java库 
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  # Build all java files in the java subdirectory
  LOCAL_SRC_FILES := $(call all-subdir-java-files)
  # Any libraries that this library depends on
   LOCAL_JAVA_LIBRARIES := android.test.runner
  # The name of the jar file to create
   LOCAL_MODULE := sample
  # Build a static jar file.
  include $( BUILD_STATIC_JAVA_LIBRARY )
注: LOCAL_JAVA_LIBRARIES 表示生成的java库的jar文件

find ./out/target/product/ -name “Video*” | xargs rm -rf
find /system/app -name Launcher.apk
find . -type f | xargs grep -r “Browser2”
find -name “xxx.cpp”

android P以上出现“”此应用专为旧版Android打造,因此可能无法正常运行。请尝试检查更新或与开发者联系

  1. as项目检查项目及依赖的项目中每个build.gradle里面targetSdk、minSdkVersion是否大于17。

  2. eclipse项目检查项目及依赖的项目中每个AndroidManifest.xml里面targetSdk、minSdkVersion是否大于17

Android 架构 Lifecycle的使用

Lifecycle_1
Lifecycle_2

SQL测试
SQL训练

#define LOG_NDEBUG 0
#define LOG_NIDEBUG 0
#define LOG_NDDEBUG 0

放开ALOGD日志

手机分区

1.普通启动模式
方法:长按电源键

用途:正常使用

2.fastboot模式
方法一:长按 电源键+音量下键

方法二:抠掉电池,然后长按音量下键,再插入USB线

方法三:进入adb模式,在adb里输入 adb reboot bootloader(PS:必须可以正常开机)

用途:刷整个系统或者刷某个分区

3.紧急下载模式
方法一:抠掉电池,长按 音量下键 + 音量上键,再插入USB线

方法二:将主板上的紧急下载测试点与地相连,再插入USB线

方法三:在进入fastboot模式后,利用fastboot erase sbl1,此后插入USB线

方法四:在手机正常开机情况下,利用QFIL下载软件时,会有从正常模式转换到紧急下载模式的过程

方法五:工厂空的PCBA的板子,在插入USB后,也会进入紧急下载模式

​用途:在fastboot模式进入不了时,是唯一的刷机方法

4. Recovery模式
方法一:长按 电源键 + 音量上键

方法二:手机正常开机情况下,利用adb reboot recovery

用途:可以备份或者恢复系统

5.FFBM模式
方法一:利用QFIL软件

刷机后,第一次开机会进入该模式,在点击该模式中finish后,此后再次开机不会进入该模式,同样通过fastboot erase misc也可以达到不用进入该模式的作用。

用途:该模式不是Android本身的模式,而是高通的,它的主要作用是用于快速测试手机的一些基本功能。

二、手机分区

1.boot
正如名字所代表的意思(注:boot的意思是启动),这个分区使手机可以启动。它包括了内核(kernel)和ramdisk两部分。如果没有这个分区,手机通常无法启动到安卓系统。只有必要的时候,才去通过Recovery软件擦除(format)这个分区,一旦擦除,设备只有再从新安装一个新的boot分区,可以通过安装一个包含boot分区的ROM来实现,否则无法启动安卓系统。

2.system
这个分区基本包含了整个安卓操作系统,除了内核(kernel)和ramdisk。包括安卓用户界面、和所有预装的系统应用程序。擦除这个分区,会删除真个安卓系统,但不会导致不能启动。你可以通过进入Recovery程序或者bootloader程序中,安装一个新ROM,也就是新安卓系统。这里有 /system/bin 和 /system/sbin 保存很多系统命令。它是由编译出来的system.img来烧入。

3.recovery
这个分区可以认为是一个boot分区的替代品,可以是你的手机进入Recovery程序,进行高级恢复或安卓系统维护工作。

4.userdata
这个分区也叫用户数据区,包含了用户的数据:联系人、短信、设置、用户安装的程序。擦除这个分区,本质上等同于手机恢复出厂设置,也就是手机系统第一次启动时的状态,或者是最后一次安装官方或第三方ROM后的状态。该分区挂在/data目录下。在Recovery程序中进行的“data/factory reset ”操作就是在擦除这个分区。

5.cache
这个分区是安卓系统缓存区,保存系统最常访问的数据和应用程序。擦除这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容,缓存内容会在后续手机使用过程中重新自动生成。

6.modem
主要管理手机的基带部分。与电信网络交互就是靠它了,一般往往用专用开发环境来开发。手机无线信号、蓝牙、wifi等无线管理也在这里。

6.sbl1分区
它是second bootloader1的缩写,该分区中放置着引导程序,它是在little kernel(lk)前启动,起到引导lk的作用,如果将该分区擦除,则手机表现为进入紧急下载模式,即,擦除该分区后,插入USB显示QDload端口。

7.aboot
该分区放置设lk相关系统文件。lk主要是初始化相关底层硬件,起到引导boot的作用。在编译时,可以利用指令 make aboot单独编译lk。

8.splash
该分区主要存放开机的第一帧画面。

9.modemst1/modemst2/fsg
这三个分区主要用于存放高通的QCN,QCN简单的理解为和modem关系很大的一些参数。

在高通平台的手机 通过如下adb指令查看分区详细的相关情况:
cd /dev/block/platform/xxx/by-name //其中xxx可能会根据平台有所不同
原作者:手机分区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值