安卓源码项目进行gradle编译改造常见问题解决

TVBox安卓源码编译指南:从JDK/SDK配置到IDEA项目导入与APK生成 安卓应用开发的核心在于理解其构建系统与工具链。Java开发工具包(JDK)和安卓软件开发工具包(SDK)构成了编译环境的基石,其版本匹配直接决定了项目能否成功构建。通过Gradle这一自动化构建工具,开发者可以管理依赖、编译代码并打包生成APK。掌握环境配置与构建流程,不仅能完成应用的编译与调试,更是进行源码级定制与二次开发的前提。本文以TVBox这一热门开源电视应用为例,详细演示了如何在IntelliJ IDEA中配置JDK与Android SDK,解决Gradle同步与依赖下载问题,并最终实现APK的生 阅读详情

最近把依赖安卓源码编译环境的多个项目切换到gradle编译环境,需要把一些项目改成lib库依赖,基本思路是把通用的代码和第三方jar放在一个utils库项目中, 其他子项目改为lib库,子项目统一依赖utils,主项目依赖9个子项目,解除子项目对主页面的依赖,最后gradle编译成一个apk。

我整理了一些遇到的常见问题,希望对大家有帮助。
首先注意的gradle编译比mm方式编译对项目质量的要求更严格,特别是编译release版本,很多命名不规范的资源需要修改, strings缺少的翻译等需要对齐。

问题一:

Error:(26, 9) Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:26:9
Error:(28, 9) Attribute application@theme value=(@style/ThemeActionBar) from AndroidManifest.xml:28:9
is also present at XXXX-trunk:XXXXLib:unspecified:15:9 value=(@style/AppTheme)
Suggestion: add ‘tools:replace=”android:theme”’ to element at AndroidManifest.xml:24:5 to override
Error:Execution failed for task ‘:XXXX:processDebugManifest’.

Manifest merger failed with multiple errors, see logs

原因:
AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的Android:icon和android:theme),则此时会合并失败,并报上面的错误。

解决方法有以下2种:
方法1:在Manifest.xml的application标签下添加tools:replace=”android:icon, android:theme”(多个属性用,隔开,并且记住在manifest根标签上加入xmlns:tools=”http://schemas.android.com/tools”,否则会找不到namespace哦)
方法2:在build.gradle根标签上加上useOldManifestMerger true (懒人方法)

参考官方介绍:
http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

问题二:

Library Project里面的BuildConfig.DEBUG永远都是false。这是Android Studio的一个已知问题,某Google的攻城狮说,Library projects目前只会生成release的包。
Issue 52962: https://code.google.com/p/android/issues/detail?id=52962

解决方法:(某Google的攻城狮推荐的方法)
Workaround: instaed of BuildConfig.DEBUG create another boolean variable at lib-project’s e.g. BuildConfig.RELEASE and link it with application’s buildType.
https://gist.github.com/almozavr/d59e770d2a6386061fcb

参考stackoverflow上的这篇帖:
http://stackoverflow.com/questions/20176284/buildconfig-debug-always-false-when-building-library-projects-with-gradle

问题三:

Duplicate zip entry error, 这个问题一般是引用了不同版本的com.android.support库,或者不同的jar里面有同名的class文件导致的,需要人工排查了。

解决方法:
Settings->IDE Settings->Editor->Other->Strip trailing spaces on Save->None

问题四:

编译的时候,报:Failure [INSTALL_FAILED_OLDER_SDK]。一般是系统自动帮你设置了compileSdkVersion

解决方法:
修改build.gradle下的compileSdkVersion ‘android-L’为compileSdkVersion 24

问题五:

Error:Executionfailed for task ‘:greencar:processDebugManifest’.> Manifest merger failed withmultipleerrors, see logs。
原因:AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的android:icon和android:theme),则此时会合并失败,并报上面的错误。
解决方案:
在manifest根标签上加入xmlns:tools="http://schemas.android.com/tools",并在Manifest.xml的application标签下添加tools:replace="name,icon, label,theme"
以及在主项目的 manifest文件中,重复写了 call_phone的权限,网上也有人是某个activity下多写了一句intent-filter,里面没有内容,将这些重复的空的删掉就好,并将作为lib的minisdk与主项目同步(修改library飞build.gradle文件中最小sdk,或者降低主项目的sdk)

问题六:

在作为library的项目中报错:需要常量表达式
解决方案:
在一般的Android项目中,R类的常量都是用final定义的,但ADT 14之后,如果在library 项目中,它会没有final关键字,而我们在作为library的项目中使用了switch ,在switch语句的case中,如果使用 R.id.xxx 则会提示有问题,不允许非常量在case语句中。
Google提供的一个方法就是把它转化为if-else语句。目前我也是用了这个笨办法,还好Android studio 只要按Anter+Enter自动帮改,就是比较烦

不用再找安卓APK了!手把手教你编译ESP32 RainMaker安卓APP,并自定义你的物联网设备界面 本文详细介绍了如何从零开始编译和定制ESP32 RainMaker安卓APP,帮助开发者打造个性化的物联网设备控制界面。通过环境准备、源码获取、Android Studio配置、核心功能模块定制以及高级功能扩展等步骤,实现专属APP的构建与分发,提升物联网项目的用户体验和品牌一致性。 阅读详情

相关推荐

二.TvSettings从Android.bp解析成build.gradle

我们本次主要目的是解读源码中的android.bp文件,改写成android studio可以识别的build.gradle文件。Android.bp是Android的Soong构建系统使用的配置文件,主要在AOSP(Android开放源代码项目)中使用。而build.gradle是Android Studio默认的构建配置文件,基于Gradle构建系统。这两个文件看起来都是用来配置构建的,但它们的使用场景不同。

隋缘 403

Android Framework实战预制packages/apps下应用源码预制使用Android.bp方式

hi粉丝朋友大家好! 上节课也给大家讲解了Android.mk方式我们桌面把Android Studio的gradle过程桌面预制到了系统源码的packages/apps下面,这里我们来使用Android.bp进行预制,因为现在高版本大部分其实都是使用Android.bp,新版本packages/apps下面android 12几乎看不到Android.mk的身影,所以当然我们也需要与时俱进。但是Android.bp相对来说资料较少,不像以前的Android.mk可以继承很多linux的makefile,所

learnframework的博客 3063

IDEA编译安卓源码TVBox(1)

Github社区开源项目,Android视频播放软件项目文件\app\build.gradle,声明编译和目标SDK版本为30,JDK版本为8。

m0_61598337的博客 5656

将Android.mk工程迁移为gradle项目(apk化)

项目背景: Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库。 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。 MK项目的代码调试通常使用命令进行编译,有的时间比较长,并且不能debug。通过将Android.mk工程迁移为gradle项目,就可以在Android Studio上进行调试,在一定程度上提高了调试代码的速率。 明确作业内容: 1.将mk转换成gradle 2.解决编译错误: 资源错误

m0_50408097的博客 3651

仿QQ原生安卓源码:从环境搭建到改造实战的完整进阶指南

安卓原生开发是移动开发者的核心技能,涉及Activity、Fragment、RecyclerView等基础组件,以及网络通信、数据解析、多线程等工程实践。仿QQ原生安卓源码以熟悉的IM界面为载体,将登录模块、会话列表、聊天交互等完整链路封装进一个可运行的Java工程。通过源码结构拆解、环境同步、模块改写,开发者可以快速掌握从UI布局到Socket长连接、从Gradle构建到真机调试的关键技术点。本文以一份教学型项目为范例,详解原生安卓项目的导入、改造与避坑流程,帮助你从零跑通并扩展自己的IM应用。

weixin_42531923的博客 271

背单词App安卓源码实战:构建、界面与词库改造全解析

移动应用开发中,Android工程的结构与构建链是开发者绕不开的基础环节。Gradle作为核心构建工具,负责管理SDK版本、依赖库与模块配置,其稳定运行直接影响项目能否顺利打包。理解Java源码与XML布局的配合逻辑,掌握assets词库读取与SharedPreferences进度存储等数据交互方式,是快速上手一个真实App工程的切入点。无论是期末课程设计复现,还是移动开发工程师验证背单词交互场景,都需要从构建链打通、主流程梳理开始,再逐步扩展词库迁移、学习统计等功能。本文以安卓背单词App源码为例,拆解从

weixin_26850069的博客 237

QT 5.9 以后 android程序编译gradle遇到的问题

在使用Qt5.9以后的版本时,编译android程序,不再需要配置ant,而是使用gradle 在JDK,SDK,NDK都已经配置好的情况下,但是我们一编译就遇到问题,如下: FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'andr...

weixin_39571864的博客 6007

Android Studio报错Manifest merger failed with multiple errors

1、Error:Execution failed for task ‘:XXXX:processDebugManifest’. > Manifest merger failed with multiple errors, see logs 原因: AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的android:icon和android:theme),则此时会合并失败,并报上面的错误。 解决方法有以下2种: 方法1:在Manifest.xml的application标签下添加tools:replace=”a

用Gradle脚本管理Manifest文件

编译时区分不同的manifest 很多Android项目都会区分debug和release的manifest文件,以便调试,一些组件化的项目甚至有多个manifest文件来调试不同的组件。举个简单的例子,在app的build.gradle文件中: android { defaultConfig { applicationId "com.xxx.xxx" } sourceSets { main { if(是否为debug打包) {

倚竹幽篁 5922

浅谈专项测试之弱网络测试

浅谈专项测试之弱网络测试 一.弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境,大部分用户主要使用4G,3G,2G等网络,另外因为移动端产品使用的场景多变,如进公交,上地铁,坐电梯,使得弱网测试显得尤为重要。考虑到各种场景的客户端展示及容错,提升产品的印象和用户体验,提高产品的健壮性,弱网测试必不可少。 二.弱网络测试建议 网下需要进行功能点测试,无网络测试,网络切换测试等,测试过程除了关注功能点的实现,还应关注用户体验等各个方面 三.弱网络测试通用功能点总结 四.弱网络测试用例实例

ITstudy001的博客 1011

告别硬件!用Wokwi在线模拟ESP32点灯,5分钟搞定开发环境搭建

本文介绍如何使用Wokwi在线模拟器快速搭建ESP32开发环境,5分钟内完成点灯实验。无需硬件即可体验GPIO控制、PWM调光等核心功能,特别适合物联网开发初学者和快速原型验证。Wokwi的零成本、全功能模拟特性让嵌入式开发变得前所未有的简单高效。

weixin_42567497的博客 495

如何解决安卓项目在Android Studio无法打开

如何解决安卓项目在Android Studio无法打开​ 在github上下载一些安卓源码项目后,导入到Android Studio的时候无法导入,于是开始网上搜索大佬们的经验,为了避免忘记,还会自己写一篇博客吧,方便自己以后导入项目。修改三处即可:①build.gradle文件(在根目录下)dependencies {       classpath 'com.android.tools.b...

qq_40265501的博客 3512

Infiniband互连网络概述

一、Infiniband是什么? InfiniBand(简称IB)是一种工业标准规范,它定义了一种输入/输出架构,用于计算节点、通信基础设施设备、存储和嵌入式系统的互连。操作系统可以是Linux、Windows或ESXI。 IB网络一共是五层,从第一天起,IB就被设计为提供一个端到端的解决方案,改善和加速从物理层到上层的所有协议层。 IB协议于2000年由IBTA(InfiniBand Trade Association)提出,其规定了一...

weixin_41687819的博客 5229

android studio打开下载工程,如何解决安卓项目在Android Studio无法打开

在github上下载一些安卓源码项目后,导入到Android Studio的时候无法导入,于是开始网上搜索大佬们的经验,为了避免忘记,还会自己写一篇博客吧,方便自己以后导入项目。复制代码修改三处即可:①build.gradle文件(在根目录下)dependencies {classpath 'com.android.tools.build:gradle:2.3.3'//将此处版本号改为自己AS的版...

weixin_35696012的博客 901

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 551

芒果YOLO11改进44:主干Backbone篇之MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

包括YOLOv5、YOLOv7、YOLOv8等模型改进 370

安卓设备信息查看器 - 源码编译

本文档旨在指导开发者如何从源码成功编译并运行“安卓设备信息查看器”项目。本项目使用Gradle作为构建工具,推荐使用Android Studio进行开发。

itgather的博客 926

27、超声成像技术与原理全面解析

本博客全面解析了超声成像技术与原理,涵盖声学材料特性、超声成像系统的基本概念与组成、关键技术如多普勒和聚焦技术、超声换能器的设计与原理、图像处理方法、系统校准与质量控制,以及超声成像的应用领域和发展趋势。旨在为医学诊断、工业检测和海洋声学等领域的研究人员和工程师提供深入的技术参考和指导。

z2a3b4c5d的博客 494

E3编译Android要多久,总结解决 Android-Studio 编译耗时(好久、太长)问题

首先通过搜索有关Android-Studio 编译耗时(好久、太长)问题的博客,速度确实有所改善。一、暂时解决 Android-Studio 编译耗时(好久、太长)问题简单描述一下我遇到的问题2017年10月24日下午6点之前我的 android studio 编译器还是瞬间编译,但是之后我遇到的问题就让“怒发冲冠”,从6点到晚上10点从gradle的初始化编译到apk编译,我一共执行了3次,分别...

weixin_36397372的博客 780

用一台笔记本跑起 SAP HANA:从 express edition 的定位,到本地硬件门槛与安装实操

SAP HANA是面向个人开发者、初创团队与教学科研场景的精简发行版,保留了in-memory列存引擎、SQLScriptAFLGraphSpatial等核心能力,可免费用于开发与一定规模的生产用途(上限为 32 GB RAM)。它最大的特征,是能在资源受限的laptop或上快速落地,让你在本地完成从建模、开发到测试的完整闭环。SAP在交付形态上,提供了多种安装包:预配置的VM OVA、面向Linux的二进制安装包,以及历史上出现过的容器化方案;你可以按现有设备与熟悉的运维方式择优选择。官方文档把VM。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 536

ESP32 物联网宠物喂食器:实现远程智能投喂的完整方案

本项目基于 ESP32 实现了智能宠物喂食器的核心功能,硬件结构简单、成本较低,软件支持远程控制和状态监测。添加摄像头:通过 ESP32-CAM 模块实时观察宠物进食情况。APP 集成:开发专属手机 APP,支持定时设置、报警推送、喂食记录查询。语音控制:结合 Alexa 或小爱同学,实现语音指令喂食。太阳能供电:户外使用时,通过太阳能板为设备供电,节能环保。

weixin_42300449的博客 1275

Android Studio 编译通过,无法运行(RUN灰色,类文件图标为红色J)

Error描述: Android Studio版本:3.4 1、代码编译通过,但是Run按钮呈灰色 2、所有类图标都是红色J 3、点击Run左边的 Edit Configutation 后出现如下界面 解决方案: 1、排除误setting.gradle文件无内容的问题,保证项目根目录Setting.gradle文件下的内容如下: include ':xxx', ':xxx', ...

ssy_neo的专栏 1224

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java编写自动化脚本生成apk_安卓自动化打包(基于gradle)

1.前言工作关系,需要做安卓环境的自动打包,领导要求公司产品、测试、开发等小伙伴每天来上班之前,可以在指定位置下载开发,测试,生产环境最新的安卓版本安装包,可以每日验证产品开发进度以及及时反馈开发功能的方向是否正确。博文说明:由于我们公司的产品是通过gradle实现的编译打包,所以本文介绍的是gradle的环境。具体你们公司安卓是通过什么工具编译打包的,需要和你们开发进行沟通。安卓打包需要配置ap...

weixin_39672160的博客 1798

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

AOSP Android安卓源码mk集成LeakCanary进行内存泄漏检测

本文分享了Android源码集成Leakcanary的过程,帮助你解决内存泄露问题

qq_32607609的博客 830

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

eclipse导入android源码后报错,eclipse导入安卓源码与eclipse中的报错消除

在安卓源码环境下开发的时候,需要将安卓源码整个导入到eclipse中,下面给出导入方法和导入后源码报错的排除方法导入源码复制.classpath文件到源码根目录12$ cd AndroidSource$ cp development/ide/eclipse/.classpath ./使用统一的代码格式化风格在eclipse中点击Window - Preferences - Java - Code ...

weixin_32259697的博客 691

Cordova生成安卓源码无法运行

说明: cordova编译生成的android源码在Android Studio中运行, 无法找到 Gradle 'android' project refresh failed Error:No installed build tools found. Install the Android build tools version 19.1.0...

weixin_30752377的博客 461
上一篇: 打造DIY版Echo:树莓派+ Alexa 语音服务
下一篇: Redex安卓Apk优化技术研究
offbye
offbye 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄24年 1309粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

offbye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值