androidstudio中各种gradle配置解释说明

来源:互联网 发布:js日期时间插件 编辑:程序博客网 时间:2024/06/17 20:44

androidstudio中各种gradle配置解释说明

我们知道每一个app就是as里面的一个modle,最进由于工作接触了各种gradle配置眼花缭乱,现在此记录下来,以防止以后忘记,笔记如下:

  • 关于一个app的gradle的配置
  • 关于一个sdk的gradle的配置
  • 如何设置一个只有服务没有mainactivity的应用让其运行并安装无桌面图标

关于一个app的gradle的配置

下面是一个app,它支持编译不同版本的app,配置如下:

import java.text.SimpleDateFormatapply plugin: 'com.android.application'  //这个代表当前modle是一个app而不是一个libraryandroid {    compileSdkVersion 24   //源码编译使用的api的版本    buildToolsVersion "24.0.1"   //构建工具的版本    defaultConfig {        applicationId "com.zhangsan.lisi.services" //app的唯一标示,上架到市场上就是通过这个区分不同的app,相当于身份证        minSdkVersion 19  //19对应的系统是4.4,也就是说4.4以下版本的系统装不了这个app,此为最小兼容        targetSdkVersion 24 //目标sdk的版本,当遇到7.0系统的手机,这时的app运行效率最好        versionCode 1  //版本code,一般用于升级的时候使用,根据对比code来比大小判断是否该升级        versionName  "1.2." + getBuildTime() //版本名称,起一个显示的作用,常常看到设置里面显示的版本的介绍里面的数字就是这个//      signingConfig signingConfigs.platformKey  配置默认的签名,指向platformKey ,必须把这句话注释掉的时候才可以打一个没有签名的包    }//签名的配置,platformKey ,userKey 这个可以随便取名字,只要对上号就行了singningConfigs.userkey,然后就是那几个签名的密码,在新建签名的时候有几个配置,对照一下就知道填啥了    signingConfigs {        platformKey {            keyPassword 'zhangsan12345678'            storeFile file(getProjectDir().getParent() +  '/key_store/platform.keystore')//签名文件放在你的电脑哪里            storePassword 'zhangsan12345678'            keyAlias 'zhansan'        }        userKey {            keyPassword 'lisi12345678'            storeFile file("C:/Users/zhangxiaoya/Desktop/demo.jks")            storePassword 'lisi12345678'            keyAlias '李四'        }    }//这里是编译不同的版本,有debug ,release ,home ,business ,honour 几个版本,由于在业务上需要区分不同版本的区别,所以这里单独配置    buildTypes {        debug {            buildConfigField "int", "Type", "1"            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'          //  signingConfig signingConfigs.userKey 可以单独为不同的版本配置不同的签名,图标之类的,具体百度        }        release {            buildConfigField "int", "Type", "1" //自定义type字段,编译运行后在app->build->buildconfig->对应的版本下有个BuildConfig文件里面会有type这个字段,在java文件中可以导入应用            minifyEnabled false  //是否打开混淆            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //混淆的配置文件规则        }        home {            buildConfigField "int", "Type", "1"            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        business {            buildConfigField "int", "Type", "2"            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        honour {            buildConfigField "int", "Type", "3"            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        android.applicationVariants.all { variant ->            variant.outputs.each { output ->                def outputFile = output.outputFile                if (outputFile != null && outputFile.name.endsWith('.apk') && !outputFile.name.contains("debug")) {                    //这里修改apk文件名                    def fileName = getProject().name + "-" + variant.baseName + "-${defaultConfig.versionName}.apk"                    output.outputFile = new File(outputFile.parent, fileName)                }            }        }    }}def getBuildTime() {    //设置时间格式    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHH");    //获取当前时间    Date curDate = new Date(System.currentTimeMillis());    return formatter.format(curDate);}dependencies {//引入对应的文件    compile files('libs/microlog4android-1.0.0.jar')    compile files('libs/xUtils-2.6.14.jar')//    compile project(':sdk-framework')    compile 'com.bot.library.urlconfig:urlconfig:0.0.2'}

关于一个sdk的gradle的配置

下面是一个library的gridle,将来会打包成jar供其他人使用,它的配置如下:

//由于这里是提供给别人使用的一个依赖库,所以这个需要应用com.android.library这个插件,同时需要吧代码提交到maven仓库,因为也申明需要应用一下maven插件apply plugin: 'com.android.library'apply plugin: 'maven'android {    compileSdkVersion 24    buildToolsVersion "24.0.1"    defaultConfig {        minSdkVersion 15        targetSdkVersion 24        versionCode 1        versionName "1.0.1"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}//这个你利用gradle上传到maven中央库的基本配置,需要提供javadoc.jar,sources.jar,aar或者jar,pom,这个是生成sources.jar的配置task androidSourcesJar(type: Jar) {    classifier = 'sources'    from android.sourceSets.main.java.sourceFiles}artifacts {    archives androidSourcesJar}//项目中使用到了其他的库,所以这里是添加对这个库的依赖dependencies {    //吧lib下面的jar加载进来,才可以使用    compile fileTree(include: ['*.jar'], dir: 'libs')    //在ecplise里面有jar和项目的引用,这句话就类似项目引用,意思是指把名字叫cos的library引用到项目中//    compile project(':library-cos')}//下面是要提交到maven的配置uploadArchives {    configuration = configurations.archives    repositories.mavenDeployer {      //远程仓库的地址,貌似有具体ip的基本上都是建在局域网的仓库        repository(url: 'http://101.154.73.251:8080/nexus/content/repositories/releases/') {//仓库地址            authentication(userName: "admin",//用户名                    password: "@xx321!@#")//密码        }        pom.project {            name 'juude-library'    //项目的名称            packaging 'aar'         //要提交文件的类型            description 'none'     //描述            url 'http://101.123.25.110:8080/nexus/content/repositories/releases/'//仓库地址            groupId "com.bot.library.sdk"  //注册sonatype账号时有填,这里是域名反转+项目名            artifactId "sdk"            version android.defaultConfig.versionName         }    }}

如何设置一个只有服务没有mainactivity的应用让其运行并安装无桌面图标

只有服务的应用本来就没有图标,服务本来就是工作在后台的,一般系统内置的应用都是没得图标在桌面上的,在ecplise里面你只需要吧这2句话去掉就好了或者根本不配置mainactivity,可是不知为何在as里面去掉了这两句话,app编译就会出错,报找不到mainactivity的错误

 <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

如果你是用as开发,那么只需要在mainactivty配置中加上这么一句话就好了

<data android:host="AuthActivity" android:scheme="com.android.example" />
0 0
原创粉丝点击