Android studio项目编译进安卓源码中

news2024/12/24 21:21:44

最近要做一个Android 8.1 的launcher ,在Androidstudio上开发好基本功能后,移到Android源码中编译

1.在源码中创建代码目录

我开发基于展讯9820e平台,在如下目录创建好对应名字的文件夹

\vendor\sprd\platform\packages\apps\xxxLauncher

创建 res 和 src 目录,创建Android.mk文件,并将Androidstudio项目中的对应目录代码文件移入对应文件夹,清单文件直接放入项目根目录
在这里插入图片描述
res文件整个从Androidstudio项目中复制过来,src文件中,放入Androidstudio项目的java/com目录
在这里插入图片描述

2.编写Android.mk文件

#
# Copyright (C) 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.
#

LOCAL_PATH := $(call my-dir)

#
# Build app code.
#
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 android-support-v7-appcompat\
  
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
    $(call all-renderscript-files-under, src) 
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res frameworks/support/v7/appcompat/res

LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_AAPT_FLAGS := --auto-add-overlay \
  --extra-packages android.support.v7.appcompat
LOCAL_USE_AAPT2 := true	
LOCAL_PACKAGE_NAME := xxxLauncher
LOCAL_PRIVILEGED_MODULE := true

LOCAL_CERTIFICATE := platform
LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3Go SprdLauncher 


include $(BUILD_PACKAGE)
# ==================================================
include $(call all-makefiles-under,$(LOCAL_PATH))

mk文件中有大量可定义的属性,编译过程中也可能出现一些错误,通过修改mk文件即可解决,比如一些导包,依赖问题。

3.根据自己的项目需求,可能还需要配置一些平台mk文件,比如:

device\sprd\sharkle\sp9820e_1h10ll\sp9820e_1h10ll_base.mk

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

PLATDIR := device/sprd/sharkle
PLATCOMM := $(PLATDIR)/common
TARGET_BOARD := sp9820e_1h10ll
BOARDDIR := $(PLATDIR)/$(TARGET_BOARD)
ROOTDIR := $(BOARDDIR)/rootdir
TARGET_BOARD_PLATFORM := sp9832e

TARGET_GPU_PLATFORM := midgard
TARGET_NO_BOOTLOADER := false

USE_XML_AUDIO_POLICY_CONF := 1

VOLTE_SERVICE_ENABLE := true

#Config Android Render With CPU; Default Android render with GPU
#GRAPHIC_RENDER_TYPE    := CPU

# graphics
USE_SPRD_HWCOMPOSER  := true

# copy media_profiles.xml before calling device.mk,
# because we want to use our file, not the common one
PRODUCT_COPY_FILES += $(BOARDDIR)/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
                      $(BOARDDIR)/media_profiles_turnkey.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_turnkey.xml

#$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
$(call inherit-product, $(PLATCOMM)/DeviceCommon.mk)
$(call inherit-product, $(PLATCOMM)/proprietories.mk)
$(call inherit-product-if-exists, vendor/sprd/modules/libcamera/libcam_device.mk)

BOARD_HAVE_SPRD_WCN_COMBO := sharkle
$(call inherit-product-if-exists, vendor/sprd/modules/wcn/connconfig/device-sprd-wcn.mk)


#fstab
ifeq (f2fs,$(strip $(BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE)))
  NORMAL_FSTAB_SUFFIX1 := .f2fs
endif
ifeq (true,$(strip $(BOARD_SECURE_BOOT_ENABLE)))
  NORMAL_FSTAB_SUFFIX2 :=
endif
NORMAL_FSTAB_SUFFIX := $(NORMAL_FSTAB_SUFFIX1)$(NORMAL_FSTAB_SUFFIX2)
# $(warning NORMAL_FSTAB=$(LOCAL_PATH)/rootdir/root/fstab$(NORMAL_FSTAB_SUFFIX).$(TARGET_BOARD))
PRODUCT_COPY_FILES += $(BOARDDIR)/rootdir/root/fstab.$(TARGET_BOARD)$(NORMAL_FSTAB_SUFFIX):root/fstab.$(TARGET_BOARD)


PRODUCT_COPY_FILES += \
    $(BOARDDIR)/rootdir/root/init.$(TARGET_BOARD).rc:root/init.$(TARGET_BOARD).rc \
    $(ROOTDIR)/prodnv/PCBA.conf:$(TARGET_COPY_OUT_VENDOR)/etc/PCBA.conf \
    $(ROOTDIR)/prodnv/BBAT.conf:$(TARGET_COPY_OUT_VENDOR)/etc/BBAT.conf \
    $(ROOTDIR)/system/etc/audio_params/tiny_hw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/tiny_hw.xml \
    $(ROOTDIR)/system/etc/audio_params/codec_pga.xml:$(TARGET_COPY_OUT_VENDOR)/etc/codec_pga.xml \
    $(ROOTDIR)/system/etc/audio_params/audio_hw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_hw.xml \
    $(ROOTDIR)/system/etc/audio_params/audio_para:$(TARGET_COPY_OUT_VENDOR)/etc/audio_para \
    $(ROOTDIR)/system/etc/audio_params/smart_amp_init.bin:$(TARGET_COPY_OUT_VENDOR)/etc/smart_amp_init.bin \
    $(ROOTDIR)/system/etc/audio_params/record_tone_1.pcm:$(TARGET_COPY_OUT_VENDOR)/etc/record_tone_1.pcm \
    $(ROOTDIR)/system/etc/audio_params/record_tone_2.pcm:$(TARGET_COPY_OUT_VENDOR)/etc/record_tone_2.pcm \
    $(ROOTDIR)/system/etc/audio_params/rx_data.pcm:$(TARGET_COPY_OUT_VENDOR)/etc/rx_data.pcm \
    $(PLATCOMM)/rootdir/root/ueventd.common.rc:root/ueventd.$(TARGET_BOARD).rc \
    $(PLATCOMM)/rootdir/root/init.common.usb.rc:root/init.$(TARGET_BOARD).usb.rc \
    frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml \
    frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \
    frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \
    frameworks/native/data/etc/android.hardware.opengles.aep.xml:system/etc/permissions/android.hardware.opengles.aep.xml \
    $(BOARDDIR)/log_conf/slog_modem_$(TARGET_BUILD_VARIANT).conf:vendor/etc/slog_modem.conf \
    $(BOARDDIR)/log_conf/slog_modem_cali.conf:vendor/etc/slog_modem_cali.conf \
    $(BOARDDIR)/log_conf/slog_modem_factory.conf:vendor/etc/slog_modem_factory.conf \
    $(BOARDDIR)/log_conf/slog_modem_autotest.conf:vendor/etc/slog_modem_autotest.conf

#WLAN config
PRODUCT_PROPERTY_OVERRIDES += \
    ro.hotspot.enabled = 1 \
    reset_default_http_response = true \
    ro.void_charge_tip = true \
    ro.softaplte.coexist = true \
    ro.vowifi.softap.ee_warning = false \
    persist.sys.wifi.pocketmode = true \
    ro.wcn = enabled

ifeq ($(strip $(BOARD_HAVE_SPRD_WCN_COMBO)), marlin)
PRODUCT_PROPERTY_OVERRIDES += \
    ro.softap.whitelist = true \
    ro.btwifisoftap.coexist = true\
    persist.wifi.func.hidessid = false \
    ro.wifi.softap.maxstanum = 8 \
    ro.wifi.signal.optimized = true \
    ro.support.auto.roam = enabled \
    ro.wifip2p.coexist = true

endif

ifeq ($(strip $(BOARD_HAVE_SPRD_WCN_COMBO)), marlin2)
PRODUCT_PROPERTY_OVERRIDES += \
    ro.softap.whitelist = true \
    ro.btwifisoftap.coexist = true\
    persist.wifi.func.hidessid = true\
    ro.wifi.softap.maxstanum = 8 \
    ro.wifi.signal.optimized = true \
    ro.support.auto.roam = disabled \
    ro.wifip2p.coexist = true

endif

ifeq ($(strip $(BOARD_HAVE_SPRD_WCN_COMBO)), sharkle)
PRODUCT_PROPERTY_OVERRIDES += \
    ro.softap.whitelist = true \
    ro.btwifisoftap.coexist = true\
    persist.wifi.func.hidessid = true\
    ro.wifi.softap.maxstanum = 10 \
    ro.wifi.signal.optimized = true \
    ro.support.auto.roam = disabled \
    ro.wifip2p.coexist = true

endif

ifeq ($(strip $(BOARD_HAVE_SPRD_WCN_COMBO)), rs2351)
PRODUCT_PROPERTY_OVERRIDES += \
    ro.softap.whitelist = false \
    ro.btwifisoftap.coexist = false \
    persist.wifi.func.hidessid = false \
    ro.wifi.softap.maxstanum = 8 \
    ro.wifi.signal.optimized = true \
    ro.support.auto.roam = enabled \
    ro.wifip2p.coexist = false

endif

#copy audio policy config
ifeq ($(USE_XML_AUDIO_POLICY_CONF), 1)
PRODUCT_COPY_FILES += \
    $(ROOTDIR)/system/etc/audio_policy_config/audio_policy_configuration_generic.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
    $(ROOTDIR)/system/etc/audio_policy_config/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \
    $(ROOTDIR)/system/etc/audio_policy_config/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \
    $(ROOTDIR)/system/etc/audio_policy_config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
    $(ROOTDIR)/system/etc/audio_policy_config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
    $(ROOTDIR)/system/etc/audio_policy_config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
    $(ROOTDIR)/system/etc/audio_policy_config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml
else
PRODUCT_COPY_FILES += \
    $(ROOTDIR)/system/etc/audio_params/audio_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy.conf
endif

# config sepolicy
#duplicate definition
#BOARD_SEPOLICY_DIRS += device/sprd/sharkle/common/sepolicy \
#    build/target/board/generic/sepolicy

SPRD_GNSS_ARCH := arm64
SPRD_GNSS_SHARKLE_PIKL2 := true
$(call inherit-product, vendor/sprd/modules/gps/GreenEye2/device-sprd-gps.mk)

VOLTE_SERVICE_ENABLE := volte_only

#WCN config
PRODUCT_PROPERTY_OVERRIDES += \
    ro.modem.wcn.enable=1 \
    ro.modem.wcn.diag=/dev/slog_wcn \
    ro.modem.wcn.id=1 \
    ro.modem.wcn.count=1 \
    ro.modem.gnss.diag=/dev/slog_gnss \
    persist.sys.support.vt=true \
    persist.sys.csvt=false \
    ro.wcn.gpschip=ge2 
	
# Dual-sim config
PRODUCT_PACKAGES += \
        Stk1 \
        MsmsStk
		
ifeq ($(strip $(VOLTE_SERVICE_ENABLE)), volte_only)
    PRODUCT_PROPERTY_OVERRIDES += persist.sys.volte.enable=true
    PRODUCT_PROPERTY_OVERRIDES += persist.sys.volte.mode=Normal
endif

# sprd hw module
PRODUCT_PACKAGES += \
	lights.$(TARGET_BOARD_PLATFORM) \
	sensors.$(TARGET_BOARD_PLATFORM) \
	tinymix \
	audio.primary.$(TARGET_BOARD_PLATFORM) \
	audio_hardware_test \
	camera.$(TARGET_BOARD_PLATFORM) \
	power.$(TARGET_BOARD_PLATFORM) \
	memtrack.$(TARGET_BOARD_PLATFORM) \
	gnss_download

#SANSA|SPRD|NONE
#PRODUCT_SECURE_BOOT := NONE
PRODUCT_PACKAGES += imgheaderinsert \
                    packimage.sh \
                    FMRadio \
                    ims \
		    audio_vbc_eq \
                    #FileExplorer \
                    libGLES_android \
                    gralloc.$(TARGET_BOARD_PLATFORM)

#WLAN stuff
PRODUCT_PACKAGES += wpa_supplicant \
		    wpa_supplicant.conf \
		    wpa_supplicant_overlay.conf \
		    wificond \
		    wificond.rc \
		    libwifi-hal \
		    libwifi-system \
		    android.hardware.wifi@1.0-service \
		    android.hardware.wifi.supplicant@1.0 \
		    hostapd

# For HS20
PRODUCT_PACKAGES += hs20-osu-client

#wifi UI configs
    PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
    frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml
#    frameworks/native/data/etc/android.hardware.wifi.aware.xml:system/etc/permissions/android.hardware.wifi.aware.xml

PRODUCT_PACKAGES += iwnpi \
		    libiwnpi \
		    sprdwl_ng.ko

#disable refocus
PRODUCT_PROPERTY_OVERRIDES += persist.sys.cam.refocus.enable=false

#defalut disable lock screen
PRODUCT_PROPERTY_OVERRIDES += \
    ro.lockscreen.disable.default=true
#Red stone sprd_stats
REDSTONE_SPRD_STATS := false

#在这里配置新加入的launcher
PRODUCT_PACKAGES += xxxLauncher

PRODUCT_PACKAGES += FreemeAgingTest
PRODUCT_PACKAGES += aging_video.mp4

解决完编译报错,就成功将应用编译进Android源码了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回收站清空了怎么恢复?3个妙招恢复数据

回收站被人为清空,被放入回收站的文件因时间过久而被电脑自动删除时,回收站里的数据清空了还能找到吗?是可以的这3个小妙招可以帮你还原回收站的数据! 妙招一:借助注册表还原回收站清空的数据 可以尝试借助注册表还原…

Bootstrap 环境安装

文章目录 Bootstrap 环境安装下载 Bootstrap 文件结构预编译的 BootstrapBootstrap 源代码 HTML 模板实例Bootstrap CDN 推荐 Bootstrap 环境安装 Bootstrap 安装是非常容易的。本章将讲解如何下载并安装 Bootstrap,讨论 Bootstrap 文件结构,并通过一个实…

常见的Jmeter参数化方式总结

目录 前言: 参数化概念 参数化方式 二、用户变量 三、CSV数据文件 四、函数助手 前言: 在进行接口性能测试时,我们通常需要针对不同的场景进行参数化操作。JMeter是一款强大的性能测试工具,它提供了多种参数化方式,方便…

Idea在JavaSE项目中配置JavaEE

新建模块(File --> new --> Module...)javase项目 选择了这个webapp的支持之后,IDEA会自动给你生成一个符合Servlet规范的webpp目录结构。 如果说我们现在需要使用servlet的和JSP 那么需要servlet和JSP的jar包 也可以选择添加库,但是…

qt udp通信

udp不分客户端和服务器,只需要使用一个类 QUdpSocket 这里写目录标题 界面设计qudpsocketthis按钮 打开按钮 发送 关闭 界面设计 接收框设置为 只读 为ui界面各个模块改名字 本低端口和目标ip框对齐,可以对目标ip 宽度设置 为一样 水平策略 qudpsocke…

OpenHarmony端云一体化应用开发快速入门练习(下)登出销户等

一、登出 前提条件:需要在AGC控制台开通认证服务。需要先在您的应用中集成认证服务SDK。 开发步骤 当用户不再使用应用,或者需要使用其他帐号登录时,需要调用AGConnectAuth.signOut登出当前用户。用户一旦被登出,端侧的用户信息和…

Vivado 下按键控制 LED 实验

目录 Vivado 下按键控制 LED 实验 1、简介 2、实验环境 3、实验任务 4、硬件设计 5、程序设计 5.1、按键控制 led 模块代码 5.2、Vivado 仿真验证 5.2.1、Testbench 模块代码如下: 5.2.2、Vivado 仿真验证 6、下载验证 6.1、添加约束文件.xdc 6.2、板上…

SPSSPRO数据分析之——CSI数据预处理、降维

目录 一、前言 二、数据准备 三、进行预处理 四、进行降维任务 五、正态性检测 六、代码功能 一、前言 SPSSPRO是一款全新的在线数据分析平台,可以用于科研数据的分析、数学建模等,对于那些不会编程或者刚进入科研的新人来说,这款工…

CDGA/CDGP——第八章 数据集成和互操作

加gzh“大数据食铁兽”, 回复“知识点” 获取《DMBOK知识梳理for CDGA/CDGP》常考知识点(第八章 数据集成与互操作) 第八章 数据集成和互操作 第八章在CDGA分值占比较少,CDGP不考核,主要考点包括:定义、…

电商数据分析方案:丰富经验护航,分析一步到位

如果做电商数据分析的每一步都从零开始,摸着石头过河,反复测试修改。一通忙活下来,成果没见多少,人力物力成本倒是节节攀升,试问又有多少企业承受得住?如果有一套一步到位的数据分析方案,是不是…

Excel根据颜色求和与计数

文章目录 一、需求二、实现方法1.代码2.创建自定义函数3.使用函数 三、参考资料 一、需求 一个Excel中有不同颜色标记的单元格,统计的时候,需要按照颜色进行统计。 人工来做肯定是不可能了,借助Excel的功能好像也没有思路,其实这…

【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeRF(LLFF格式)数据集

【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeRF(LLFF格式)数据集 提示:最近开始在【三维重建】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeRF(LLFF格式)数据集前言下…

python复习第一章

什么是 Python? Python 是一门流行的编程语言。它由 Guido van Rossum 创建,于 1991 年发布。 它用于: Web 开发(服务器端)软件开发数学系统脚本 Python 可以做什么? 可以在服务器上使用 Python 来创建…

图解路由器处理报文全过程,值得一看!

你们好啊,我的网工朋友 只要有网络的地方,你很难不看到路由器的身影,各种低、中、高端的,种类繁多,所具备的功能和内部实现不完全一样。 要知道,路由器不断的在吞吐通信数据,就像鱼吐泡泡一样…

【有奖征文 】AI编程:华为云CodeArts Snap入门体验

了不起的开发者们,当你听到“编程”一词时,可能想到的是一行行复杂的代码和漫长的坐姿。但是,随着人工智能的飞速发展,AI编程正在成为一种全新的编程方式,使得编程变得更加简单和直观。现在,是时候跟大家分…

如何在ALPS系统上模拟MODBUS协议

Modbus协议介绍 请想象一下你有一个工厂,里面有许多机器和设备,比如传感器、电机、控制器等,这些设备需要相互通信以便共享数据和执行任务。Modbus协议就像是这些设备之间的一种语言或规则,确保机器和设备能够互相理解和交流。 在…

python数据可视化Mito安装配置

目录 遇见 Mito如何启动 Mito数据透视表Mito 令人印象深刻的功能可视化数据自动代码生成Mito 安装 JupyterLab 是 Jupyter 主打的最新数据科学生产工具,某种意义上,它的出现是为了取代Jupyter Notebook。 它作为一种基于 web 的集成开发环境&#xff…

SpringMvc学习——在idea中新建springWeb项目 浏览器请求 和 服务器响应 SpringMvc文件相关

目录 引出基础知识:三层架构和MVC1. 三层架构2.MVC模型 springWeb项目IDEA搭建1.新建一个普通的maven项目2.导入包,pom.xml文件3.写主启动类Main.java文件SpringBootApplication4.写application.yml文件spring的配置文件5.启动,运行main.java…

【分享】PowerPoint可以设置哪些密码保护?

想要给PPT设置密码保护?那我们来看看PowerPoint自带哪些密码功能。 PowerPoint可以设置两种密码保护,分别是“打开密码”和“限制密码”。 【打开密码】 PowerPoint设置“打开密码”后,就无法随意打开文件,需要输入正确密码才可…

4.地址转换,实现101012分页

实现内存检测,理解Linux内存管理,实现101012分页 参考: 检测内存容量 趣谈 Linux 操作系统 内存管理 《操作系统真相还原》 1.内存检测 BIOS 中断 0x15 的子功能够获取0xE820 能够获取系统的内存布局,由于系统内存各部分的类型属…