如何使用Android Studio开发/调试Android源码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Android Studio开发/调试Android源码相关的知识,希望对你有一定的参考价值。

一、修改android Studio(以下简称AS)的内存配置
因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件
三、生成导入AS所需配置文件(*.ipr)
①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)
②检查out/host/linux-x86/framework/目录下是否有idegen.jar
如果idegen.jar不存在,执行:
mmm development/tools/idegen/

在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。
我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。
③执行
development/tools/idegen/idegen.sh

等待出现类似下面的结果:
Read excludes: 5ms
Traversed tree: 44078ms

这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件
④在AS中打开源码根目录下新生成的android.ipr
参考技术A Android studio开发的Android程序调度及运行方式:
1. 手机打开 USB调式模式(具体:“设置”->“应用程序”->“开发”->“USB调试”)(不同的手机操作可能打开方式不一样)。
2. 将手机连接到电脑。
3. 电脑上安装手机USB驱动程序。
4. 运行android 应用。
点击工程 run as android application后,系统就会查找已经连接到电脑的设备,选择已经连接的设备即可运行在手机上了。
参考技术B Android源码的编辑和调试和Android Studio没什么关系,一个是系统源代码,一个是用于应用开发的集成工具。
Android Studio是利用SDK框架开发运行于Android系统的应用程序的一个代码编辑工具,编写的程序是运行在装有Android系统的设备或者Android虚拟机上运行的,这个家伙搞出来的都是应用,跟系统源码没什么关系。
Android源码是一个复杂的代码包,没有调试的概念,需要验证就是linux下make,这个需要搭建基于linux系统的编译环境,然后生成系统包,用烧录工具写到硬件设备上,开启设备用串口调试,这个完全是系统层上的东西,跟androidstudio那个编写应用的工具没一毛钱关系。源码编辑一般都是直接用vim看,也有用记事本类的东西。这里边搞的代码,也不只是java的,c++的,xml的,还有什么都不是的脚本什么的。

如何使用Android Studio开发Gradle插件

Gradle插件开发

Gradle插件是使用Groovy进行开发的,而Groovy其实是可以兼容Java的。Android Studio其实除了开发Android App外,完全可以胜任开发Gradle插件这一工作,下面来讲讲具体如何开发。

首先,新建一个Android项目。

之后,新建一个Android Module项目,类型选择Android Library。

将新建的Module中除了build.gradle文件外的其余文件全都删除,然后删除build.gradle文件中的所有内容。

在新建的module中新建文件夹src,接着在src文件目录下新建main文件夹,在main目录下新建groovy目录,这时候groovy文件夹会被Android识别为groovy源码目录。除了在main目录下新建groovy目录外,你还要在main目录下新建resources目录,同理resources目录会被自动识别为资源文件夹。在groovy目录下新建项目包名,就像Java包名那样。resources目录下新建文件夹META-INF,META-INF文件夹下新建gradle-plugins文件夹。这样,就完成了gradle 插件的项目的整体搭建,之后就是小细节了。目前,项目的结构是这样的。

打开Module下的build.gradle文件,输入

apply plugin: 'groovy'
apply plugin: 'maven'

dependencies
compile gradleApi()
compile localGroovy()


repositories
mavenCentral()
12345678910111234567891011

下面我们在包名下新建一个文件,命名为PluginImpl.groovy,注意有groovy后缀,然后在里面输入,注意包名替换为你自己的包名。

package cn.edu.zafu.gradle

import org.gradle.api.Plugin
import org.gradle.api.Project

public class PluginImpl implements Plugin<Project>
void apply(Project project)
project.task('testTask') <<
println "Hello gradle plugin"


123456789101112123456789101112

然后在resources/META-INF/gradle-plugins目录下新建一个properties文件,注意该文件的命名就是你只有使用插件的名字,这里命名为plugin.test.properties,在里面输入

implementation-class=cn.edu.zafu.gradle.PluginImpl11

注意包名需要替换为你自己的包名。

这样就完成了最简单的一个gradle插件,里面有一个叫testTask的Task,执行该task后会输出一段文字,就像当初我们输出HelloWorld一样。

参考技术A 基于Gradle的构建支持; Android特定重构和快速修复; 提示工具更好地对程序性能、可用性、版本兼容和其他问题进行控制捕捉; 支持ProGuard和应用签名功能; 自带布局编辑器,可以让自己拖放UI组件,并在多个屏幕配置上预览布局,等等。

以上是关于如何使用Android Studio开发/调试Android源码的主要内容,如果未能解决你的问题,请参考以下文章

使用 Android Studio 开发 AOSP

android studio 布局界面出不来

如何在visual studio开发android程序

如何使用Android Studio开发Gradle插件

如何在 android studio 中正确使用 postDelayed()?

如何使用Android Studio开发/调试Android源码