直接添加 Android Studio 工程到 Framework 下之 Makefile 指定 Manifest 目录及资源目录
创始人
2025-02-12 15:01:25
0次

Android 系统源码下的 App 工程目录结构还是跟 Eclipse 时代一样,项目根目录下直接包含 src、res、AndroidManifest.xml 等。

[[191920]]

1. 直接添加 Eclipse 工程

添加一个 Eclipse 工程只需新建 Android.mk,内容为:

  1. LOCAL_PATH := $(call my-dir) 
  2.   
  3. include $(CLEAR_VARS) 
  4.   
  5. LOCAL_MODULE_TAGS := optional 
  6. LOCAL_SRC_FILES := $(call all-subdir-java-files) 
  7. LOCAL_PACKAGE_NAME := DeveloperTools 
  8. LOCAL_CERTIFICATE := platform 
  9.   
  10. LOCAL_PROGUARD_FLAG_FILES := proguard.cfg 
  11. LOCAL_PROGUARD_ENABLED := full 
  12.   
  13. include $(BUILD_PACKAGE) 

即可,而对于 Android Studio 工程如若也是如此,便会报:

(1) AndroidManifest 文件找不到

  1. make:进入目录'...' 
  2. make: *** 没有规则可以创建“.../target/product/generic/obj/APPS/DeveloperTools_intermediates/package.apk”需要的目标“packages/apps/DeveloperTools/AndroidManifest.xml”。 停止。 
  3. make:离开目录“...” 
  4.   
  5. #### make failed to build some targets (1 seconds) #### 

(2) 资源 R 文件错误

  1. make:进入目录'...' 
  2. target Java: DeveloperTools (.../target/common/obj/APPS/DeveloperTools_intermediates/classes) 
  3. packages/apps/DeveloperTools/app/build/generated/source/r/debug/.../systemservice/R.java:10: 错误: 类重复: ....R 
  4. public final class R { 
  5.              ^ 
  6. 注: packages/apps/DeveloperTools/app/src/main/java/... 使用或覆盖了已过时的 API。 
  7. 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 
  8. 1 个错误 
  9. make: *** [.../target/common/obj/APPS/DeveloperTools_intermediates/classes-full-debug.jar] 错误 41 
  10. make:离开目录“...” 
  11.   
  12. #### make failed to build some targets (1 seconds) #### 

2. 直接添加 Android Studio 工程

在项目根目录下新建 Android.mk 文件,对于一般 Android Studio 工程内容如下:

  1. LOCAL_PATH := $(call my-dir) 
  2.   
  3. include $(CLEAR_VARS) 
  4.   
  5. LOCAL_MODULE_TAGS := optional 
  6. LOCAL_SRC_FILES := $(call all-subdir-java-files) 
  7. LOCAL_PACKAGE_NAME := DeveloperTools 
  8. LOCAL_CERTIFICATE := platform 
  9. LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml 
  10. LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/app/src/main/res 
  11.   
  12. LOCAL_PROGUARD_FLAG_FILES := proguard.cfg 
  13. LOCAL_PROGUARD_ENABLED := full 
  14.   
  15. include $(BUILD_PACKAGE) 

与 Framework 中 packages/apps 下其他 app Makefile 文件不同点主要在于

(1) 指定了LOCAL_MANIFEST_FILE属性,表示 Manifest 的路径

(2) 指定了LOCAL_RESOURCE_DIR属性,表示 Res 的路径

如此即可将一个 Android Studio 工程代码完整放入到 packages/apps 进行编译。

注意上面 Manifest 路径可以用项目路径相对地址,而 Res 路径 LOCAL_RESOURCE_DIR 需要加上基地址 $(LOCAL_PATH)。

3. Android.mk 其他属性

LOCAL_STATIC_JAVA_LIBRARIES 表示依赖的库别名

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 表示依赖的库具体路径

PRODUCT_COPY_FILES 表示复制某个文件到目的地,如:

PRODUCT_COPY_FILES += $(LOCAL_PATH)/libs/armeabi/libapkpatch.so:system/lib/libapkpatch.so

表示复制应用内 so 到系统 so 目录下。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...