一、将无源码的 APK 和它 依赖的库预置进系统,此apk可以升级

二、

++++++++++++++++++++++++++++++

一、将无源码的 APK 和它 依赖的库预置进系统,此apk可以升级

---------- cut here ------------------
LOCAL_PATH := $(call my-dir)
#预置aliuyi.apkinclude $(CLEAR_VARS)
LOCAL_MODULE := wwwa.apk
LOCAL_SRC_FILES := aliuyi.apk
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
include $(BUILD_PREBUILT)#方法一:预置so等资源文件
include $(CLEAR_VARS)
LOCAL_MODULE := wanghai.so
LOCAL_SRC_FILES := wanghai.so
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/
include $(BUILD_PREBUILT)#方法二:预置so等资源文件
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PREBUILT_LIBS := sdfapk.so sdffff.so
include $(BUILD_MULTI_PREBUILT)
#方法三:
预置so等资源文件,在Android.mk里 添加 这样一句,注意:这样的方式 如果路径不存在,这条指令 执行 失败,但 不会 报错!
$(shell cp -rf $(LOCAL_PATH)/libs/*.so $(TARGET_OUT)/lib)
---------- cut here ------------------

解释:

LOCAL_MODULE 指定 拷贝后的apk的名字(全名),这个变量里可以有路径,但路径也会被拷贝,创建如果 是在编译整个Android的源码,这个apk必须已经添加到了PRODUCT_PACKAGES 变量里,否则 不会拷贝到,相应的位置,

LOCAL_MODULE_PATH 指定拷贝的路径,如果路径不存在自己创建

LOCAL_SRC_FILES 指定 源apk

LOCAL_CERTIFICATE := PRESIGNED 表示 这个apk已经签过名了,系统不需要再次 签名;

LOCAL_MODULE_CLASS 指定文件类型,apk文件用APPS, 并且 会检查 是否是apk文件,动态库so文件用SHARED_LIBRARIES ,bin文件用EXECUTABLES,其他文件 用ETC

注意:若是被预置的apk里有so库,需要将从Test.apk的 so库拷贝到 out/target/product/xxx/system/lib/目录下,若无 so 库,则去掉此步;

方法一 只能针对 一个文件,方法二 可以 针对多个文件,但 只能 把 文件 拷贝到 system/lib/ 下,
Android提供了Prebuilt编译方法,两个文件prebuilt.mk和multi_prebuilt.mk,对应的方法宏是BUILD_PREBUILT和 BUILD_MULTI_PREBUILT。
prebuilt.mk就是prebuilt的具体实现,它是针对独立一个文件的操作,multi_prebuilt.mk 可以针对多个文件的,它对多个文件进行判断,然后调用prebuilt对独立一个文件进行处理。

Android.mk 使用 环境 小结相关推荐

  1. Android.mk入门教程

    Android.mk是Android源码中提供的一套用于编译Android系统.子模块的基于makefile语法规则的脚本文件.作为一名Android系统工程师,我们必须要了解Android.mk的语 ...

  2. Android.mk小结

    Android.mk小结 Android.mk结构 多目录Android.mk包含语句 设置头文件搜索路径 设置需要链接的动态库 导出模块头文件路径 导出模块依赖关系 预编译 实例 Android.m ...

  3. Android.mk文件语法规范

    序言: ------------- 此文档旨在描述Android.mk文件的语法,Android.mk文件为Android NDK(原生开发)描述了你C/C++源文件. 为了明白下面的内容,你必须已经 ...

  4. Android.mk 用法介绍

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  5. Android.mk文件语法规范及使用模板 (转载)

    2019独角兽企业重金招聘Python工程师标准>>> http://blogold.chinaunix.net/u3/99423/showart_2206760.html Andr ...

  6. Android.mk简介

    Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译. 因为所有的编译文件都在同一个 GNU MAKE 执行环境中进行执行,而Android.mk中所有的变 ...

  7. Android JNI入门第五篇——Android.mk分析

    转载请标明出处: http://blog.csdn.net/michael1112/article/details/56671708 江东橘子的博客 Android.mk文件是在使用NDK编译C代码时 ...

  8. android.mk 比较字变量,Android.mk的用法和基础

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  9. Android_NDK问题:APP_BUILD_SCRIPT points to an unknown file: project_path/jni/Android.mk

    问题详情: Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: <path>/jni/Android.mk ...: ...

最新文章

  1. Amber18安装(非root用户)
  2. linux线程池实现多线程并发,基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF...
  3. rethat安装MySQL多例_Spring框架-Bean作用域中单例模式和多例模式的区别
  4. 【游戏开发备注之二】配置Xcode版本控制SVN详细步骤内含部分问题解决方案
  5. Catch Overflow!
  6. Fiori应用里如何给客户主数据维护图片
  7. puppeteer执行js_使用Node.js和Puppeteer与表单和网页进行交互– 2
  8. js根据数组中对象的多个属性值进行排序
  9. php计算昨天,php时间计算,明天,昨天,前天,上周,本周,上月等等
  10. c 语言中 十六进制数表达,c – 如何解释像0x0A这样的十六进制数?
  11. meta标签以及一些基本标签
  12. 关于在Mac上启动了模拟器/连接了手机之后。adb device一直提示List of devices attached的问题...
  13. 二进制流 最后一段数据是最后一次读取的byte数组没填满造成的
  14. 【数据挖掘】数据挖掘简介及十大经典算法
  15. ImageAI 学习
  16. 什么是html文件?html格式如何打开?(图)
  17. 基于JavaWeb的网上订餐网站设计与实现 毕业论文+任务书+外文翻译及原文+答辩PPT+项目源码及数据库文件
  18. intel 显卡 opencl安装
  19. Traceback (most recent call last): File “C:\ProgramData\Anaconda3\lib\site-packages\qtpy\QtWebEngine
  20. Z世代成为消费新主力,我国潮牌营销洞察报告​

热门文章

  1. 计算DataTable某列的值(SUM)
  2. hadoop集群安装配置
  3. MOSS2007-学习笔记-备忘录-单点登录-(1)-我的网站'?
  4. office 在线浏览和编辑 部署 Office Web Apps Server
  5. 最火的开源项目及编程语言
  6. phpnow mysql密码_使用PHPnow搭建本地PHP环境+创建MySQL数据库
  7. mysql更新一条语句_讲讲一条MySQL更新语句是怎么执行的?
  8. Rplidar学习(三)—— ROS下进行rplidar调试
  9. ImportError: No module named managers
  10. Java报错 -- The public type c must be defined in its own file