Android开发常用的gradle配置总结

AndroidStudio Gradle 之 build.gradle build.gradle的常见用法说明 阅读详情

       如官网所说,Android Studio使用Gradle来自动化执行和管理构建流程,允许各种灵活配置参数。每个构建配置均可自行定义一组代码和资源,同时对所有应用版本共有的部分加以重复利用。

      Gradle独立于Android Studio运作,也就是说完全可以在没有as的环境下单独使用gradle构建运行安卓应用。

一些构建运行的命令可参考官网。

关于安卓开发常用的gradle配置如下:(注:以下内容转载自 这里  ,作者:Jinwong)


1. Project中build.gradle

project下的build.gradle是基于整个project的配置,主要配置gradle 版本及 全局依赖仓库、库或者其他全部参数。
android studio 现在重要仓库采用jcenter(),之前版本放在mavenCentral。
另外有时还没有加入jcenter()仓库的第三方库,也需要在这里配置他们的库地址。
需要在这里配置,才能将第三方库拉下来

buildscript {
     //构建过程依赖的仓库
    repositories {
        jcenter()
    }

    //构建过程需要依赖的库
    dependencies {
        //声明的是gradle插件的版本
        classpath 'com.android.tools.build:gradle:2.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    //这里面配置整个项目依赖的仓库,这样每个module就不用配置仓库了
    repositories {
        jcenter()

        maven {
            // LeanCloud 的包仓库
            url "http://mvn.leancloud.cn/nexus/content/repositories/releases"
        }
    }
}

//配置全局变量
ext {
    // module依赖库公共版本号
    SupportXVersion = '23.2.0'
    GsonVersion = '2.6.2'
    LeanCloudVersion = 'v3.13.4'
    JunitVersion = '4.12'

    compileSdkVersion = 22
    buildToolsVersion = "23.0.1"
    minSdkVersion = 10
    targetSdkVersion = 22
    versionCode = 34
    versionName = "v2.6.1"
}
注: 大家可能很奇怪,为什么仓库repositories需要声明两次,这其实是由于它们作用不同,buildscript中的仓库是gradle脚本自身需要的资源,而allprojects下的仓库是项目所有模块需要的资源

2. module中build.gradle

//申明使用插件,表明要编译的内容和产物,
//com.android.application 表明该module 为android 应用
//com.android.library 表明为library库
//java 表名是java库
apply plugin: 'com.android.application'

//安卓构建过程需要配置的参数
android {
    //编译SDK的版本
    compileSdkVersion COMPILE_SDK_VERSION as int
    //buildtool 的版本
    buildToolsVersion BUILD_TOOLS_VERSION

    /默认配置,会同时应用到debug和release版本上
    defaultConfig {
        //应用包名
        applicationId APPLICATION_ID
        //支持最小android sdk 版本
        minSdkVersion MIN_SDK_VERSION as int
        // 目标版本
        targetSdkVersion TARGET_SDK_VERSION as int
        //应用版本号
        versionCode VERSION_CODE as int
        //应用版本名称
        versionName VERSION_NAME

        /// 配置生成的 BuildConfig 文件中的常量,代码引用直接 
        buildConfigField "String", "LOG_TAG", LOG_TAG // 日志tag
        buildConfigField "String", "LOG_HTTP_TAG", LOG_TAG_HTTP // http日志tag
        buildConfigField "String", "LOG_WEB_TAG", LOG_TAG_WEB // web日志tag

      // 默认是UMENG_CHANNEL_VALUE为umeng
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]

      // dex突破65535的限制
        multiDexEnabled true
    }

    //java版本号
    compileOptions{
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    //签名
    signingConfigs {
        release {
            //签名文件
            storeFile file(STORE_FILE)
            storePassword STORE_PASSWORD
            keyAlias KEY_ALIAS
            keyPassword KEY_PASSWORD
        }
    }
    // 为了解决部分第三方库重复打包了META-INF的问题
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }

    //移除lint检测的error
    lintOptions {
        abortOnError false
    }

    //编译类型
    //其中debug, release是gradle默认自带的两个build type, 当然你可以定义其他类型。
    //可以针对不停编译的版本中配置不同的参数,比如混淆、签名等。preview
    buildTypes {
        debug {
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
        }

         preview {
            debuggable false // 是否保留调试信息
            minifyEnabled true  //是否混淆
            zipAlignEnabled true // 包优化
            shrinkResources true // 移除不必要的资源

            // 签名
            signingConfig signingConfigs.release
            // 代码混淆规则文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        release {
            //加上后缀
            applicationIdSuffix ".release"
            minifyEnabled true //是否混淆
            zipAlignEnabled true // zip对齐优化
            shrinkResources true // 移除不必要的资源

            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"

            // 签名
            signingConfig signingConfigs.release
            //混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    // 多渠道
    productFlavors {
        //可以设置不同渠道渠道号,应用名称
        dev { // 开发
            buildConfigField "String", "CHANNEL_NUMBER", '"11111"'
        }
        '360' {
            buildConfigField "String", "CHANNEL_NUMBER", '"11112"'
        }
        GooglePlay {
            buildConfigField "String", "CHANNEL_NUMBER", "11113"'

    }
    // 多渠道批量替换
    productFlavors.all { flavor ->
         //批量修改Manifest占位符替换
        //在Manifest使用`${UMENG_CHANNEL_VALUE}`,`LEANCLOUD_CHANNEL_VALUE`,打包时将替换成渠道名,例如UMENG_CHANNEL_VALUE="dev";
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name, LEANCLOUD_CHANNEL_VALUE: name]
        // Project Properties->_myAPPBuildVersionName,用于程序集成下命令行修改
        if (project.hasProperty('_myAPPBuildVersionName')) {
            defaultConfig.versionName = _myAPPBuildVersionName
        }
    }

     //定义变量
     //gradle 可以用def定义一些值例如:def KeyPassword = "123123" 
     def releaseTime() {
         return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
     }


    // 批量打包
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName
                if (variant.buildType.name.equals('release')) {
                    // myAPP_v版本号_渠道名.apk
                    fileName = "myAPP_v${variant.versionName}_${variant.productFlavors[0].name}.apk"
                } else {
                    // myAPP_v版本号_渠道名_时间_编译类型名.apk
                    fileName = "myAPP_v${variant.versionName}_${variant.productFlavors[0].name}_${releaseTime()}_${variant.buildType.name}.apk"
                }
                output.outputFile = new File(outputFile.parent + "/${variant.buildType.name}", fileName)
            }
        }
    }


}

//依赖第三方库
dependencies {
   //编译libs目录下所以jar包
   //compile files('libs/xxx.jar')   导入一个特定jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])//导入所有的jar包
    compile project(':core')
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
}

注意:
  • buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。
  • proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在/tools/proguard/proguard-android.txt , 后一部分是我们项目里的自定义的混淆文件,目录就在app/proguard-rules.pro ,在这个文件里你可以声明一些第三方依赖的一些混淆规则,最终混淆的结果是这两部分文件共同作用的。
  • 一般重要的信息,例如签名信息,可以直接将信息写到gradle.properties,然后在然后在build.gradle中引用即可。
  • 多渠道的关键在于定义不同的product flavor。
    注意:这里的flavor名如果是数字开头,必须用引号引起来。
  • buildTypes是指建构的类型,一般只用两种默认类型 debug 和 release ,顾名思义 debug 用来配置开发过程中的一些内容;release 用来配置正式发布版本的内容。有时我们需要发布介于debug与release之间的preview 版本。

3. Project中setting.gradle

这个文件是全局的项目配置文件,里面主要声明Project中所包括的所有module,

//一个Project中所包括的所有module
include ':app', ':model',':lib', ':core'

4. Project中gradle.properties

gradle.properties为gradle的配置文件,里面可以定义一些常量供build.gradle使用,比如可以配置签名相关信息如keystore位置,密码,keyalias等,build.gradle就可以直接引用
gradle 中的一些配置参数建议写到gradle.properties

//编译版本信息
APPLICATION_ID = com.jin.myAPP
COMPILE_SDK_VERSION = 23
BUILD_TOOLS_VERSION = 23.0.1
MIN_SDK_VERSION = 15
TARGET_SDK_VERSION = 1
VERSION_CODE = 1
VERSION_NAME = 1.0.0.0

//keystore信息
STORE_FILE = ../app/mykey.keystore
STORE_PASSWORD = your password
KEY_ALIAS = your alias
KEY_PASSWORD = your password

5. ext配置全局参数

project的build.gradle中的ext可以为各位module进行全局配置参数,防止各个module之间的不统一,不可控。而且当我们升级sdk、build tool、target sdk等,几个module都要更改,非常的麻烦。

ext {
    compileSdkVersion = 22
    buildToolsVersion = "23.0.1"
    minSdkVersion = 10
    targetSdkVersion = 22
    versionCode = 34
    versionName = "v2.6.1"
}
然后在各自module的build.gradle中引用:
android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
   defaultConfig {
      applicationId "com.xxx.xxx"
      minSdkVersion rootProject.ext.minSdkVersion
      targetSdkVersion rootProject.ext.targetSdkVersion
      versionCode rootProject.ext.versionCode
      versionName rootProject.ext.versionName
    }
}

6. resValue 定义资源。

例如resValue "string" 就是字符串资源,可以用R.String 来引用对应的字符串资源

android {
     defaultConfig {
         resValue "string", "build_time", buildTime()
         resValue "string", "build_host", hostName()
         resValue "string", "build_revision", revision()
      }
 }
  def buildTime() {
     return new Date().format("yyyy-MM-dd HH:mm:ss")
  }

  def hostName() {
     return System.getProperty("user.name") + "@" +InetAddress.localHost.hostName
   }

  def revision() {
    def code = new ByteArrayOutputStream()
       exec {
          commandLine 'git', 'rev-parse', '--short', 'HEAD'
          standardOutput = code
        }
    return code.toString()
    }
上述代码实现了动态的添加了3个字符串资源: build_time、build_host、build_revision, 然后在其他地方可像如引用字符串一样使用如下:
 // 在Activity里调用
getString(R.string.build_time) // 输出2015-11-07 17:01
getString(R.string.build_host) // 输出jay@deepin,这是我的电脑的用户名和PC名
getString(R.string.build_revision) // 输出3dd5823, 这是最后一次commit的sha值

7. PlaceHolder

manifest的一些值我们可以用PlaceHolder处理。例如

在gradle中改成
 manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]

可以放在defaultConfig中设置默认值,或者放在productFlavors中根据不同渠道修改成不同值。或者批量修改

  productFlavors.all { 
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
    }

8. 导入某个project

如果你的app是多模块的,假设有两个模块app和lib,并且app模块是依赖lib的,这时候我们就需要在app模块的build.gradle中的dependencies结点下配置依赖:

compile project(':lib')
并且你需要在settings.gradle中把lib模块包含进来:

include ':lib',':app'
此外,这种情况下lib模块是作为库存在的,因而它的build.gradle中的插件声明通常应该是这样的:
apply plugin: 'com.android.library'

而且,作为library的模块lib的build.gradle文件的defaultConfig中是不允许声明applicationId的,这点需要注意。

9. 引用本地aar:

  • 首先将你的库通过android studio 运行打包成aar文件。运行后在/build/output/aar文件夹中。
  • 首先将aar文件放到模块的libs目录下,然后在该模块的build.gradle中声明flat仓库:
    repositories{
       flatDir {
          dirs 'libs'
      }
    }

  • 最后在dependencies结点下依赖该aar模块:
    dependencies{
      compile (name:'xxx',ext:'aar')
    }

10. BuildConfig

在build.gradle中配置buildConfigField参数,编译后会在..\app\build\generated\source\buildConfig文件夹下会自动生成对应版本对应module的BuildConfig.java。BuildConfig就会包含对应版本的配置信息。程序中可以直接引用这些数据。例如BuildConfig.DEBUG。

public final class BuildConfig {
    public static final boolean DEBUG = Boolean.parseBoolean("true");
    public static final String BUILD_TYPE = "debug";
    public static final String FLAVOR = "360";
    public static final int VERSION_CODE = 45;
    public static final String VERSION_NAME = "3.2.0.0";
    // Fields from build type: debug
    public static final String HOST_IMG_SERVER = "img";
    public static final String HOST_SERVER = "test";
    // Fields from product flavor: 360
    public static final String CHANNEL_NUMBER = "232100";
}

11. module 调整目录结构sourceSets

默认情况下,java文件和resource文件分别在src/main/java和src/main/res目录下,在build.gradle文件,andorid{}里面添加下面的代码,便可以将java文件和resource文件放到src/java和src/resources目录下。

sourceSets {
   main {
      java {
          srcDir 'src/java'
      }
      resources {
        srcDir 'src/resources'
     }
   }
}

更简便的写法是:

sourceSets {
   min.java.srcDirs = ['src/java']
   min.resources.srcDirs = ['src/resources']
}

12. Gradle常用命令

上面大家接触了一些命令如 ./gradlew -v ./gradlew clean ./gradlew build, 这里注意是./gradlew,./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, myAPP/gradle/wrapper/gralde-wrapper.properties**文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。

理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。

./gradlew 下载更新gradle
./gradlew -v 版本号
./gradlew assemble 构建项目输出
./gradlew check 运行检测和测试任务
./gradlew clean 清除9GAG/app目录下的build文件夹
./gradlew build 运行check和assemble,检查依赖并编译打包
这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令assemble<build type="" name="">, 如</build>
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包所有渠道的
./gradlew assembleWandoujiaRelease 编译并打包豌豆荚的Release版本
./gradlew assembleWandoujia 编译并打包豌豆荚的所有版本
./gradlew installRelease Release模式打包并安装
./gradlew uninstallRelease 卸载Release模式包



Android开发环境搭建与Gradle配置全指南 Android开发环境搭建是移动应用开发的第一步,其中JDK配置和Gradle构建系统是关键基础。JDK作为Java运行环境,需要正确设置JAVA_HOME等环境变量。Gradle作为现代化构建工具,通过声明式脚本管理项目依赖和构建流程,支持多模块项目组织和差异化构建。在Android开发中,合理配置build.gradle文件可以优化构建性能,而SDK Manager则用于管理不同API级别的开发工具包。掌握这些基础配置技巧,能够显著提升Android Studio的开发效率,并为后续的组件开发、UI优化 阅读详情

相关推荐

Android Studio中安装和配置Gradle以及移动端开发

a. 在Android Studio中,打开“File”(文件)->“Settings”(设置)->“Build, Execution, Deployment”(构建、执行、部署)->“Gradle”(Gradle设置)。a. 点击“Start a new Android Studio project”(开始新的Android Studio项目)或选择“File”(文件)->“New”(新建)->“New Project”(新建项目)。a. 项目级别的build.gradle文件:位于项目的根目录下。

QwwyEmacs_Lisp的博客 1126

Android——模块级build.gradle配置——applicationId和namespace

配置应用模块-applicationId和namespace。了解 build.gradle 中的实用设置。

4210

android开发入门之gradle插件基本配置

1.项目配置 /* 顶级配置文件,可以添加所有模块的通用配置到allprojests和subprojects中 */ /* 构建脚本,用于构建文件本身,而不是项目本身 */ buildscript { /* 构建脚本使用的仓库 */ repositories { google() jcenter() } /* 构建脚本使用的...

蛐蛐的博客 470

Android Gradle构建脚本基础(三)

1. settings.gradle文件 位于项目根目录下,用于项目的配置,常见的是配置子工程。可以类比认识,根工程对应AndroidStudio项目中的Project,子工程对应Module。 一个子工程只有在setting.gradle中配置了,才能够被识别,构建的时候才会被包含进去。 rootProject.name = "GradleGuide" include ':app' include ':demo' project(":demo").projectDir=new File(rootDir

KyungLip的博客 2693

Android开发中的Gradle配置优化

在Android项目中,Gradle文件(通常是)包含了项目构建所需的所有配置信息。随着项目规模的扩大和依赖的增加,Gradle配置的优化变得越来越重要。

m0_74337424的博客 123

Cadence Allegro PCB文件对比实战:3分钟搞定两份设计差异(附颜色标注技巧)

本文详细介绍了如何高效使用Cadence Allegro的Design Compare功能进行PCB文件差异对比。通过实战工作流,可在3分钟内精准定位并理解两份设计在布局、布线、元件等方面的关键差异,并分享了自定义颜色标注技巧,帮助工程师快速聚焦重要修改,提升设计评审与团队协作效率。

weixin_29248653的博客 380

最新版android stuido加上namespace

您为 build.gradle 文件的 namespace 属性设置的名称应始终与项目的基础软件包名称匹配,基础软件包中保存着您的 activity 及其他应用代码。您的项目可以包含其他子软件包,但这些文件必须使用 namespace 属性中的命名空间导入 R 类。在将应用构建为最终应用软件包 (APK) 时,Android 构建工具会将命名空间用作应用生成的 R 类(用于访问您的应用资源)的命名空间。命名空间由模块的 build.gradle 文件中的 namespace 属性定义,如以下代码段所示。

浪漫之圣 2488

【5G演进】4G到5G演进之网络架构与协议栈

4G到5G演进之网络架构与协议栈

Learning makes me happy (0^◇^0) 5531

cocos构建 Android 项目Android studio gradle 8.0 报错

记录一下踩坑 今天用cocos构建 了一个Android 项目 然后用Android studio 打开 TestProject_Helloworld\build\android\proj 项目, 由于我的Android studio 用的是jdk17, 所以提示要升级gradle 插件版本,所以我升级成了gradle 8.0 . 但是编译的时候报错。后续是我又重新构建了一个项目,打开之后提示升级grdle。发现这里用的是4.1 ,版本不符合,。找到对应的版本 7.1 就编译通过了。

ok6671552的博客 4170

GPS定位不准?可能是GDOP在作怪!手把手教你优化卫星几何分布

本文深入解析了GPS定位精度不佳的常见原因——几何精度因子GDOP。通过剖析卫星几何分布对定位误差的放大效应,文章提供了从理解GDOP、PDOP、HDOP等关键指标,到使用专业APP实时诊断卫星天空图,再到利用在线工具提前规划最佳定位时机的完整实战指南。旨在帮助户外爱好者、无人机飞手及专业用户主动优化卫星几何条件,从而显著提升定位可靠性。

weixin_29062823的博客 306

linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

tun/tap设备是操作系统内核中的虚拟网络设备,是用软件模拟的网络设备,提供与硬件网络设备完全相同的功能。主要用于用户空间和内核空间传递报文。tun/tap对于硬件网络设备而言,一端连接的是物理网络,一端连接的是网络协议栈。对于tun/tap设备而言,一端连接的是应用程序(通过 字符设备文件),一端连接的是网络协议栈。

糖果墙的博客 6411

安卓开发-AndroidStudio-Gradle国内镜像配置

【代码】安卓开发-AndroidStudio-Gradle国内镜像配置。

无痕坚守本心的博客 3054

物联网技术(AIR780E cat1-4G模块+小程序+腾讯云MQTT)驱动的智能井盖系统设计(连载01)

终端设备采用AIR780E模块作为主控器,电子模块有三轴加速度传感器、可燃气体传感器,AIR780E模块(4G模块)通过MQTT通信协议进行数据打包上传至EMQX服务器,在EMQX服务器中,用户可以自行订阅主题和发布主题,小程序通过MQTT通信协议订阅EMQX服务器的主题,服务器通过接收到硬件发布的数据,转发到微信小程序。

leida_3669的博客 2218

Android Gradle 常用配置,安卓开发内存优化

// sourceSets sourceSets { main { jniLibs.srcDirs ‘libs’ println “\nsourceSets 配置情况:” sourceSets.all { set -> println “[${set.name}]的文件是 ${set.java.srcDirs}” } } } } 自动签名 生成签名文件 Build -> Generate Signed Bundle / APK Next -> Create new… 填写路径,密码,别名

m0_66145060的博客 604

SNAP计算哨兵二号的叶面积指数(LAI)

对于哨兵二号数据以及LANDSAT8数据,SNAP提供已经集成好的模块计算LAI。在Optical->Thematic Land Processing->Biopyhsical Processor目录下面。 对于经过Sen2Cor处理好的数据,需经过重采样才可进行计算。重采样工具在Raster->Geometric->Resampling。 如果选择Biopyhsical Processor S2_10m进行计算,需要将所有的波段都重采样为10米(哨兵二号的第二波段为10米,可据此波

gxwwww的博客 9417

Linux下用SquareLine Studio开发LVGL界面:从安装到实战的完整避坑指南

本文提供了一份在Linux系统下使用SquareLine Studio开发LVGL图形界面的完整实战指南。内容涵盖从SDL库安装、SquareLine Studio环境配置、界面可视化设计,到工程导出、源码编译及常见错误排查的全流程。重点解析了如何将设计界面无缝集成到Linux开发流程中,并针对嵌入式设备移植提供了关键步骤,旨在帮助开发者高效避坑,快速上手LVGL界面开发。

egg99的博客 905

Android开发环境搭建与Gradle配置实战指南

本文详细介绍了Android开发环境搭建与Gradle配置的完整流程,涵盖Android Studio安装、SDK管理、Gradle环境变量设置及国内镜像优化。针对网络报错和依赖冲突提供了实用解决方案,并分享了构建优化和高效开发技巧,帮助开发者快速构建稳定的Android开发环境。

y9z0a1b的博客 1012

Apache Flink连载(一):Apache Flink是什么?

Apache Flink 是一个框架和分布式处理引擎,用于在。

qq_32020645的博客 1216

安卓开发settings.gradle换源配置

gradle换源

YYull的博客 638

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux环境中配置安卓开发环境使用gradle打包apk(不用Android Studio)

          公司项目要求需要安卓开发人员将项目代码上传到svn然后直接在linux服务器中配置gradle进行打包apk供用户下载使用,接手项目时一是需要对前面代码进行优化和更新(经历了好几个人员的开发,每个人的代码风格不同),二是需要添加新的功能,而且使用已经过时的安卓api和老的框架已经很难满足新的需求,因此公司服务器上的现有的gradle版本就必须进行升级才能对应编译高版本的安卓代码...

zzqybyb19860112的博客 7812

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android开发gradle配置

如果你之前没有接触过 Android 的开发环境,那么请做好心理准备,这一过程相当繁琐。请万分仔细地阅读下面的说明,严格对照文档进行配置操作。 注:请注意!!!国内用户必须必须必须有稳定的扶墙工具,否则在下载、安装、配置过程中会不断遭遇链接超时或断开,无法进行开发工作。某些翻墙工具可能只提供浏览器的代理功能,或只针对特定网站代理等等,请自行研究配置或更换其他软件。总之如果报错中出现有网址,那么 99% 就是无法正常翻墙。 如果是 socks5 代理 ,如下这样设置其实并没有什么卵用 #..

Goals1989的博客 312

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

安卓入门六十五 开发框架-Gradle核心配置类

需要注意的是,要注意我们当前项目的实际最低版本,比如它为 18,现在我们开启了 speedDebug,项目编写时就会以 21 为标准,此时,就 需要注意 18 ~ 21 之间的 API,例如我在布局中使用了 21 版本新出的 Material Design 的控件,此时就是没问题的,但实际我们需要对 21 版本以下的对应布局做相应的适配。AspectJ扩展了Java语言,引入了一套新的注解和语法,用于描述切面和切点,并提供了一套工具和API,用于编译、织入和运行AspectJ代码。

weixin_52735932的博客 1277

安卓开发经验——Android Studio的project中两个build.gradle配置的区别

一般创建一个android项目后回出现两个gradle: build.gradle(Project):用来配置整个工程的 build.gradle(app):一个是用来配置app的 对compile和classpath区别的解释: I’m going to guess that you’re referencing compile and classpath within the dep

世杰 5699

安卓开发安装

进入目录,对所有文件打一个压缩包。去官网,下载最新版本, 目前显示最新版本是 Android Studio Meerkat,我的网络不行,直接拷贝别人下载好的,【android-studio-2024.3.1.14-windows.exe】双击安装即可,Android Studio默认会安装最新版本的Android SDK,我的网络不行,这一步会报错,直接忽略这个步骤。1、去官网找到window系统的版本,找最新的下载,131Mb大小, 得到 【gradle-8.14-bin.zip】

songtaiwu的博客 1631

【Android Studio】安卓开发 在build.gradle中配置依赖项时发生的错误

在开发安卓程序,使用卡片式布局 CardView时需要配置依赖项,向build.gradle中写入一个依赖,但是会报错。 错误情况: Build file 'G:\TEMP\MyApplication\build.gradle' line: 12 A problem occurred evaluating root project 'My Application'. > Could not find method implementation() for arguments [androidx.ca

m0_46552807的博客 4116

Android 开发中 Gradle 使用详解:构建、配置与优化技巧

本文深入探讨了 Android 开发中 Gradle 的详细用法,包括基本概念、构建脚本配置、自定义构建变体、多模块项目管理、插件使用以及常用命令。通过掌握这些技巧,你将能更好地使用 Gradle 管理和构建你的 Android 项目,提高开发效率和代码质量。

陆业聪 4820
上一篇: 解决Can not perform this action after onSaveInstanceState异常总结
下一篇: Widows下TortoiseGit登录密码错误
Rflyee
博客等级 码龄14年 56粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值