从AndroidO开始,Android开始使用Android.bp来管理代码的编译,Android通过soong和blueprint将Android.bp转换为ninja文件(保存在out/soong/build.ninja),通过ckati将Android.mk转换为ninja文件(保存在out/buil-$(target).ninja)。然后将这两个ninja文件include到一个文件,最后使用ninja来编译。

Android.bp与Android.mk_第1张图片

在Android.bp中定义的模块在Android.mk中可以依赖,但是Android.bp中的模块不能依赖Android.mk中的模块。如果需要在Android.bp中依赖Android.mk中模块需要将依赖的Android.mk转换为Android.mk。简单的转换可以直接使用工具:out/soong/host/linux-x86/bin/androidmk。

例如需要将如下的Android.mk换换为Android.bp。

## Copyright (C) 2008 The Android Open Source Project## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##      http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.#LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional# This is the target being built.LOCAL_PACKAGE_NAME := UpgradeExample# Only compile source java files in this apk.LOCAL_SRC_FILES := $(call all-java-files-under, src)# Link against the current Android SDK.LOCAL_SDK_VERSION := currentLOCAL_PROGUARD_ENABLED := disabledinclude $(BUILD_PACKAGE)

通过使用命令转换:androidmk Android.mk > Android.bp

// Copyright (C) 2008 The Android Open Source Project//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at////      http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.//android_app {    // This is the target being built.    name: "UpgradeExample",    // Only compile source java files in this apk.    srcs: ["src/**/*.java"],    // Link against the current Android SDK.    sdk_version: "current",    optimize: {        enabled: false,    },}

 

更多相关文章

  1. 安卓android readonly 无法增删文件
  2. android Uri利用及解析(文件操作)以及与路径的相互转换
  3. Android Studio 打不开layout 文件夹下的xml
  4. Android文件管理器与media数据库的同步问题
  5. 【Android Developers Training】 42. 从另一台设备接收文件
  6. Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原
  7. android 创建文件夹和文件
  8. Android核心模块及相关技术介绍

随机推荐

  1. android 学习笔记 Android(安卓)SDK 中重
  2. android +ubuntu9.10+eclipse-java-galil
  3. 第15章 Android启动过程 [Android应用开
  4. android:TabHost使用方法
  5. Android(安卓)支持多屏幕机制
  6. android屏幕适配,自动生成不同的dimens.xm
  7. Android(安卓)ImageView 总结
  8. Android的多媒体框架OpenCore(PacketVideo
  9. Android(安卓)不要做错来使内存泄漏
  10. 教你如何开关Android的APN网络