AndroidStudio中Project下的build.gradle没有buildscript和allprojects了

Posted YSoup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidStudio中Project下的build.gradle没有buildscript和allprojects了相关的知识,希望对你有一定的参考价值。

前言

最近想使用一个开源框架AndServer,根据文档说明,首先需要在Project下的build.gradle做如下配置:

buildscript 
    repositories 
        google()
        mavenCentral()
    

    dependencies 
        classpath 'com.yanzhenjie.andserver:plugin:2.1.10'
        ...
    


allprojects 
    repositories 
        google()
        mavenCentral()
    

...

但是我的项目下的build.gradle长得是这样子的:

plugins 
    id 'com.android.application' version '7.1.2' apply false
    id 'com.android.library' version '7.1.2' apply false


task clean(type: Delete) 
    delete rootProject.buildDir

纳尼?怎么buildscript和allprojects闭包都不见了?那我还怎么配置?
查阅了一下官方文档,原来是2022年1月的Gradle7.1.0版本做的更新导致的,如下图:

如果你用的是小蜜蜂版本的Android Studio,创建的的项目,默认就是没有buildscript和allprojects的,之前的仓库配置被挪到Project下的setting.gradle里面了。

解决办法

说了那么多,好像也没提到我所要关心的内容:要怎么配置“classpath ‘com.yanzhenjie.andserver:plugin:2.1.10’”?
其实依旧可以放在Project下的build.gradle里面,完整的配置如下:

buildscript 
    dependencies 
        classpath 'com.yanzhenjie.andserver:plugin:2.1.10'
    


plugins 
    id 'com.android.application' version '7.1.2' apply false
    id 'com.android.library' version '7.1.2' apply false


task clean(type: Delete) 
    delete rootProject.buildDir

注意buildscript闭包需要放在plugins闭包前面,不然会报错。好了,这下已经达成了我的目的。

补充

我的module下的build.gradle如下:

plugins 
    id 'com.android.application'

apply plugin: 'com.yanzhenjie.andserver'
android 
    compileSdk 31

    defaultConfig 
        applicationId "com.example.lyyserverdemo"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        
    
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    


dependencies 

    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.yanzhenjie.andserver:api:2.1.10'
    annotationProcessor 'com.yanzhenjie.andserver:processor:2.1.10'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

就是在顶部加了apply plugin: ‘com.yanzhenjie.andserver’,以及在底部的依赖里加了
implementation ‘com.yanzhenjie.andserver:api:2.1.10’
annotationProcessor ‘com.yanzhenjie.andserver:processor:2.1.10’
这是根据AndServer文档配置的,接下来就可以使用这个框架了。

IntelliJ idea下的项目结构

IntelliJ IDEA 的 project 和 module 是啥关系?(转载自:点击打开链接

使用基于IntelliJ的IDE,如phpstorm、android studio都会对 project 和 module 的关系比较糊涂,简单的概括如下:

IntelliJ系中的 Project  相当于Eclipse系中的  Workspace ;

IntelliJ系中的 Module  相当于Eclipse系中的  Project ;

IntelliJ中一个 Project  可以包括多个  Module ;

Eclipse中一个 Workspace  可以包括多个  Project

PhpStorm中似乎在弱化 Module 的存在,把 File 菜单下的 New Module  菜单项目直接删除了。

在Android studio中仍存在:

Android studio中,一个Project代表一个完整的APP,Module表示APP中的一些依赖库或独立开发的模块。比如可以新建一个library做为module,然后在主APP上点右键 open module setting的Dependencies中添加一个模块依赖。然后主APP中就可以使用module中的类了。

之前是用eclipse的.idea的文档是这样写到的:



intelliJ idea创建分层的项目结构(转载自:点击打开链接


原文地址:http://yanwushu.sinaapp.com/create_layered_project_in_idea/


本文使用intelliJidea 14

在idea中创建一个分层(视图层、业务逻辑层、数据访问层)的项目步骤如下:

1.      创建一个project,idea在创建project的时候会默认创建一个module,此时,给这个project和module命名(比如hello_client,表示这是项目的客户端也就是视图层),并且指定项目存放路径。

2.      新建一个module,新建的时候路径指定为和上面的hello_client同级。命名为hello_service,表明这是项目的业务逻辑层。

3.      新建一个module,命名为hello_dal,表示这是项目的数据访问层,同上,此module的目录指定为和hello_client、hello_service同级。

4.      此时在project窗口中会看到并列的三个module。开发的时候就可以在不同的层次上放置不同的代码。如下图:


图:三个同级的module代表项目中的三个不同层

5.      在项目中hello_client会引用hello_service的代码,而hello_service会引用hello_dal的代码。在idea中添加引用的方式为:

a)        选中任意一个module,按F4进入project structure;

b)        选择左侧的modules菜单;

c)        选择中间的hello_client,选中右侧的dependencies选项卡,点击右侧的绿色+按钮,选择modeule dependecy,在弹出的选择框中选择hello_service。

d)        这样就为hello_client添加了hello_service的引用。直接在hello_client中引用hello_service的代码即可。

e)        同理,添加hello_service对hello_dal的引用。


图:hello_client添加对hello_service的引用


以上是关于AndroidStudio中Project下的build.gradle没有buildscript和allprojects了的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ idea下的项目结构

IntelliJ idea下的项目结构

Android Studio如何修改项目名称?

将对象数组转换为二维数组

AndroidStudio-添加RecyclerView包 AndroidStudio添加v7包中的RecyclerView

android studio第三方框架导入为空怎么办