Android系统源码中添加可编译运行执行程序,C,C++

文章目录

  • Android系统源码中添加可编译运行执行程序,C,C++
    • 1. 源码product分区中添加可执行程序

Android系统源码中添加可编译运行执行程序,C,C++

1. 源码product分区中添加可执行程序

新建一个文件夹,以及一个test.cpp文件

代码

#include 

int main(int argc, char const *argv[]){

    printf("test c++\n");
    return 0;
}

Android系统源码中添加可编译运行执行程序,C,C++_第1张图片

搞一个bp文件

Android.bp,bp文件就是指定这个模块的编译脚本方式,指定test.cpp编译方式。格式就是json字符串

//指定可执行模块的类型
//cc就是c++的意思,binary就是二进制可执行文件
cc_binary {
    //当前模块名字
    name: "test",
    //源码路径
    srcs : [ "test.cpp" ],
    //放置在product分区目录下
    product_specific: true
}

编译它,单编,mm命令,进入到需要编译的目录下

Android系统源码中添加可编译运行执行程序,C,C++_第2张图片

Android系统源码中添加可编译运行执行程序,C,C++_第3张图片

系统源码全部整编。

在mk文件中添加

PRODUCT_PACKAGES += test 

打包出来的系统镜像文件才会包含我们刚刚自定义的test文件模块才会被添加到我们的编译后的系统镜像文件中,成为product的一部分,

#
# Copyright 2013 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.
#

PRODUCT_USE_DYNAMIC_PARTITIONS := true

# The system image of aosp_x86_64-userdebug is a GSI for the devices with:
# - x86 64 bits user space
# - 64 bits binder interface
# - system-as-root
# - VNDK enforcement
# - compatible property override enabled

# This is a build configuration for a full-featured build of the
# Open-Source part of the tree. It's geared toward a US-centric
# build quite specifically for the emulator, and might not be
# entirely appropriate to inherit from for on-device configurations.

# GSI for system/product
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_common.mk)

# Emulator for vendor
$(call inherit-product-if-exists, device/generic/goldfish/x86_64-vendor.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/emulator_vendor.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_x86_64/device.mk)

# Enable mainline checking for excat this product name
#ifeq (aosp_x86_64,$(TARGET_PRODUCT))
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
#endif

PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
    root/init.zygote32_64.rc \
    root/init.zygote64_32.rc \

# Copy different zygote settings for vendor.img to select by setting property
# ro.zygote=zygote64_32 or ro.zygote=zygote32_64:
#   1. 64-bit primary, 32-bit secondary OR
#   2. 32-bit primary, 64-bit secondary
# init.zygote64_32.rc is in the core_64_bit.mk below
PRODUCT_COPY_FILES += \
    system/core/rootdir/init.zygote32_64.rc:root/init.zygote32_64.rc
PRODUCT_PACKAGES += test 

# PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
#     /system/bin/test
# PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST +=\
#     /system/bin/helloworld
PRODUCT_NAME := test1
PRODUCT_DEVICE := generic_x86_64
PRODUCT_BRAND := Android
PRODUCT_MODEL := AOSP on x86_64

Android系统源码中添加可编译运行执行程序,C,C++_第4张图片

整编命令make -j12

然后启动模拟器看看是否被预置到product分区目录下,

我们执行一下这个程序,输出即可

Android系统源码中添加可编译运行执行程序,C,C++_第5张图片
Android系统源码中添加可编译运行执行程序,C,C++_第6张图片

你可能感兴趣的:(Android,framework,android,c语言,c++)