AS中的gradle学习整理

本文详细介绍了gradle在Android Studio中的作用,包括构建过程、错误查看、Gradle脚本的位置以及基本语法,如本地和远程依赖管理。同时,文章还深入探讨了Project和Module的gradle配置,例如设置.gradle文件、仓库源声明、版本控制和模块配置等。

一、gradle作用

  1. 相当于eclipse ant
  2. 用于构建

1.1 构建

  • 构建:生成app的过程,执行一些的命令(appt,aidl,javac,dex,apkbuilder,jarsinger,zipalign)
  • 依赖管理:管理依赖的jar包

1.2 查看错误

  • 方式:
    1. message控制台进行查看
    2. gradle console控制台进行查看
    3. log文件路径: C:\Users\用户名\.AndroidStudio1.5\system\log\idea.log

二、Gradle Scripts位置

  • 切换到Android目录下查看

三、基本语法

3.1 本地依赖

  • 说明: gradle 作为构建工具,能够很方便的使用本地jar包
  • 示例:

    dependencies { 
        //单文件依赖
        compile files('libs/android-support-v4.jar')   
        //某个文件夹下面全部依赖
        compile fileTree(dir: 'libs', include: '*.jar')
    }
    
    android {
    
    }

3.2 远程依赖

仓库
  • 仓库:简单理解就是存的一些jar包云端
    • maven
    • ivy
    • jcenter仓库地址
  • 常见写法

    1. mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
    2. jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
    3. mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的
  • 仓库地址举例

    repositories {
        ivy {
        url "http://ivy.petrikainulainen.net/repo"
        }
    }
    
    repositories {
        maven {
        url "http://maven.petrikainulainen.net/repo"
        }
    }
    repositories {
             mavenCentral()
    }   
    repositories {//默认仓库
             jcenter()//它是当前世界上最大的Java和Android开源软件构件仓库
    }
  • 说明: gradle 同时支持maven,ivy
  • 示例(maven):

    repositories { 
    
        //从中央库里面获取依赖
        mavenCentral() 
    
        //或者使用指定的本地maven 库
        maven{
            url "file://F:/githubrepo/releases"
        } 
    
        //或者使用指定的远程maven库
        maven{
            url "远程库地址"
        }
    }
    
    dependencies { 
            //应用格式: packageName:artifactId:version
        compile 'com.google.android:support-v4:r13'}
    
    android {
    
    }

四、各个gradle详解

4.1 Project位置

  1. setting.gradle文件

    • 说明: 针对module的全局配置,它的作用域所包含的所有module
    • 示例:

      //文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。
      include ':app', ':extras:ShimmerAndroid'
  2. build.gradle文件

    • 说明: 整个项目的gradle基础配置文件
    • 内容:
      1. repositories(声明仓库的源)
      2. android gradle plugin的版本
    • 示例:

      buildscript {
          repositories {
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:1.5.0'
      
              // NOTE: Do not place your application dependencies here; they belong
              // in the individual module build.gradle files
          }
      }
      
      allprojects {
          repositories {
              jcenter()
          }
      }
      
      task clean(type: Delete) {
          delete rootProject.buildDir
      }

4.2 Module位置(app中的build.gradle文件)

  • 说明: 为app文件夹下这个Module的gradle配置文件
  • 内容:

    • apply plugin声明
    • android 相关属性:

      1. 版本
      2. 混淆设置
      3. 多渠道打包

        • 清单文件中

          <meta-data
              android:name="key"
              android:value="${CHANEL_VALUE}"/>
        • 模块中添加productFlavors
        • 调用manifestPlaceholders给清单文件进行赋值
      4. lint检查设置
    • dependencies: libs目录下的jar包依赖

  • 示例:

    // 声明是Android程序
    apply plugin: 'com.android.application'
    
    android {
        // 编译SDK的版本
        compileSdkVersion 21
        // build tools的版本
        buildToolsVersion "21.1.1"
    
        defaultConfig {
            // 应用的包名
            applicationId "me.storm.ninegag"
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0.0"
        }
    
        // java版本
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    
        buildTypes {
            release {
                // 是否进行混淆
                minifyEnabled false
                // 混淆文件的位置
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    
        //多渠道打包
        productFlavors{
            anzhi{
                manifestPlaceholders = [CHANEL_VALUE :"anzhi"]
            }
            googleplay{
                manifestPlaceholders = [CHANEL_VALUE :"googleplay"]
            }
            androidmarket{
                manifestPlaceholders = [CHANEL_VALUE :"androidmarket"]
            }
        }
    
        // 移除lint检查的error
        lintOptions {
          abortOnError false
        }
    }
    
    dependencies {
        // 编译libs目录下的所有jar包
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:support-v4:21.0.2'
        compile 'com.etsy.android.grid:library:1.0.5'
        compile 'com.alexvasilkov:foldable-layout:1.0.1'
        // 编译extras目录下的ShimmerAndroid模块
        compile project(':extras:ShimmerAndroid')
    }
<think>好的,用户问的是如何开发Android Studio的插件。首先,我需要确定用户的基础,是否了解Java或Kotlin,以及是否有Android开发经验。开发AS插件通常需要这些知识,所以可能需要先简要提及这些前提条件。 接下来,我应该介绍开发AS插件的基本流程。首先,安装IntelliJ IDEA,因为AS插件是基于IntelliJ平台开发的,社区版就足够。然后,创建新项目时选择IntelliJ Platform Plugin,这里可能需要说明SDK的配置,确保正确设置。 然后,项目结构方面,需要解释plugin.xml文件的重要性,里面包含插件的元数据,比如ID、名称、版本等,还有依赖和扩展点的配置。这部分用户可能不太熟悉,需要详细说明每个部分的作用。 接下来是核心开发步骤。动作系统是插件开发的关键,要介绍AnAction类及其方法,比如actionPerformed()。可能需要举一个简单的例子,比如创建通知或显示对话框,让用户更容易理解。 UI设计方面,Swing和JetBrains的自定义组件可能需要提及,但考虑到用户可能更熟悉Android的UI开发,可以建议参考IntelliJ的UI指南,确保插件外观一致。 调试和测试部分,需要说明如何运行插件实例,以及如何打包成JAR或ZIP,方便分发。这里可能还要提到在安装插件时的注意事项,比如需要重启AS才能生效。 文档和资源方面,官方文档、GitHub示例和社区论坛都是重要的学习途径,特别是官方文档中的教程和API参考,对新手很有帮助。推荐一些具体的链接,方便用户查找。 最后,注意事项需要强调兼容性问题,不同版本的AS可能有不同的API,所以要设置正确的版本范围。另外,性能影响和用户体验的重要性也要提到,避免插件导致IDE变慢或崩溃。 总结一下,整个思考过程需要从环境搭建、项目创建、代码编写、调试测试到发布维护逐步展开,确保用户能够系统地了解开发流程。同时,要提醒用户可能遇到的常见问题,比如依赖配置错误或API版本不兼容,帮助他们避免陷阱。</think>以下是为您整理的Android Studio插件开发指南: # Android Studio插件开发全流程 ## 一、开发基础要求 1. 掌握Java/Kotlin编程语言(推荐使用Kotlin) 2. 熟悉Android Studio基本操作 3. 了解IntelliJ平台架构(Android Studio基于此开发) ## 二、环境搭建 ```groovy 1. 安装IntelliJ IDEA(社区版即可) 2. 创建新项目时选择:IntelliJ Platform Plugin 3. 配置Plugin SDK: - 定位到Android Studio安装目录 - 例如:/Applications/Android Studio.app/Contents ``` ## 三、项目结构解析 ```xml <!-- plugin.xml 核心配置文件 --> <id>com.example.myplugin</id> <name>My Awesome Plugin</name> <version>1.0</version> <depends>com.intellij.modules.lang</depends> <extensions defaultExtensionNs="com.intellij"> <!-- 注册扩展点 --> </extensions> <actions> <!-- 声明插件动作 --> </actions> ``` ## 四、核心开发步骤 ### 1. 创建动作(Action) ```kotlin class MyAction : AnAction() { override fun actionPerformed(e: AnActionEvent) { val project = e.project ?: return // 示例:显示通知 NotificationGroup("myGroup", NotificationDisplayType.BALLOON, true) .createNotification("Hello Plugin!", NotificationType.INFORMATION) .notify(project) } } ``` ### 2. 注册动作 ```xml <actions> <action id="MyAction" class="com.example.MyAction" text="Show Greeting" description="My first plugin action"> <add-to-group group-id="ToolsMenu" anchor="first"/> </action> </actions> ``` ## 五、调试与部署 1. 调试模式: - 使用Gradle任务:runIde - 自动启动沙盒实例 2. 打包发布: ```bash ./gradlew buildPlugin # 生成 build/distributions/*.zip ``` ## 六、进阶功能开发 1. 自定义代码检查: ```java public class MyInspection extends LocalInspectionTool { // 实现检测逻辑 } ``` 2. 模板代码生成: ```kotlin override fun instantiate(file: PsiFile): LiveTemplate { return object : LiveTemplate() { override fun applyTemplate() { // 插入预设代码 } } } ``` 3. 自定义工具窗口: ```java public class MyToolWindow implements ToolWindowFactory { public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) { // 创建UI组件 } } ``` ## 七、推荐学习资源 1. 官方文档: $$https://plugins.jetbrains.com/docs/intellij/welcome.html$$ 2. 示例代码库: $$https://github.com/JetBrains/intellij-sdk-docs$$ 3. 调试技巧: - 使用内置的PsiViewer工具分析PSI结构 - 开启IDE内部日志:Help > Diagnostic Tools > Debug Log Settings ## 八、常见问题解决方案 | 问题现象 | 解决方法 | |-----------------------|---------------------------------| | 插件不兼容新版AS | 更新plugin.xml中的until-build版本 | | 动作未出现在目标菜单 | 检查add-to-group的锚点设置 | | 性能卡顿 | 使用BackgroundTaskUtil执行耗时操作 | 开发建议: 1. 保持插件轻量化,避免影响IDE性能 2. 定期同步最新SDK版本 3. 使用Plugin Verifier进行兼容性验证 $$https://plugins.jetbrains.com/docs/intellij/plugin-verifier.html$$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值