博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Studio问题记录
阅读量:6471 次
发布时间:2019-06-23

本文共 5712 字,大约阅读时间需要 19 分钟。

hot3.png

开始整理使用android studio开发android项目
gradle的好处详及细介绍就不说了,网上搜下就好
使用gradle构建项目
安装studio,版本0.8.14
gradle 目前支持插件版本gradle-2.1-all
本地安装gradle-2.1-all,下载包,配置环境变量,路径到bin目录
(记得翻墙)
android studio 快捷键 Alt+Enter引入类import
studio新建项目
studio的Project相当于eclipse的workspace,Module相当于Eclipse的project
studio新建一个Project就会新打开一个studio程序

项目目录如下:

1:根目录的gradle文件

2:主项目的gradle文件

3:library项目的gradle文件

4:编译后生成的文件存放处

主项目目录

新建项目之后,点击Studio左下角Terminal,弹出命令行(终端)运行构建命令,记得命令行路径是在根目录下,我刚开始的时候是进到了主项目运行gradle命令,所以遇到 

gradle常用命令有:

gradle --helpgradle tasks  //列出task列表gradle asD (gradle assembleDebug) //编译debug打包gradle asR (gradle assembleRelease) //编译release打包gradle asD --refresh-dependencies  //强制刷新依赖gradle asD --parallel //并行编译gradle asD --parallel-threads 3
gradle build gradle clean

直接执行gradle build会生成debug 包和release包 如果不想要debug包可以使用gradle asR命令

gradle基本使用方法可以查看相关文档,不再详细说明

以下是我在研究的时候查找到的文档,或许有用,以备

下面是我用的gradle 的配置信息,是在主项目下的,即是上面的2处

另外,1处的配置项目里默认即可,因为有些library项目默认的maven( 默认是这个  jcenter())仓库没找到所以我加了一个 

        mavenCentral()

apply plugin: 'com.android.application'android {    compileSdkVersion 21    buildToolsVersion "21.0.1"    defaultConfig {        applicationId "com.jiangjinyue.pangdan"        minSdkVersion 8        targetSdkVersion 21        versionCode 1        versionName "1.0"    }    signingConfigs {        myConfig{            storeFile file("pangdan.keystore")            storePassword "123456"            keyAlias "pangdan"            keyPassword "123456"        }    }    buildTypes {        release {            signingConfig  signingConfigs.myConfig            runProguard false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug{。。。。}//测试包    }    //渠道Flavors,我这里写了一些常用的,你们自己改    productFlavors {        GooglePlay{}        Store360{}//        QQ{}//        Taobao{}//        WanDouJia{}//        AnZhuo{}//        AnZhi{}//        BaiDu{}//        Store163{}//        GFeng{}//        AppChina{}//        EoeMarket{}//        Store91{}//        NDuo{}    }    packagingOptions { // 打包配置        exclude 'META-INF/LICENSE' // 排除一些文件        exclude 'META-INF/NOTICE'        exclude 'META-INF/LICENSE.txt'        exclude 'META-INF/NOTICE.txt'    }    //这个是解决lint报错的代码    lintOptions {        abortOnError false    }    sourceSets {        main {//引用libs目录下的so文件,JNI  jniLibs.srcDirs = ['libs']        }    }}android.applicationVariants.all{ variant ->    //https://gist.github.com/goldierox/9533466                                                      //这里是修改AndroidManifest.xml文件中minSdkVersion                                                variant.processManifest.doFirst {        File manifestFile = file("${buildDir}/intermediates/exploded-aar/com.github.amlcurran.showcaseview/library/5.0.0/AndroidManifest.xml")        if (manifestFile.exists()) {            //println("Replacing minSdkVersion in Android Maps Utils")            String content = manifestFile.getText('UTF-8')            content = content.replaceAll(/minSdkVersion="11"/, 'minSdkVersion=\"8\"')            manifestFile.write(content, 'UTF-8')//            println(content)        }        File manifestFileN = file("${buildDir}/intermediates/exploded-aar/com.github.sd6352051.niftydialogeffects/niftydialogeffects/1.0.0/AndroidManifest.xml")        if (manifestFileN.exists()) {//            println("Replacing minSdkVersion in Android Maps Utils")            String content = manifestFileN.getText('UTF-8')            content = content.replaceAll(/minSdkVersion="10"/, 'minSdkVersion=\"8\"')            manifestFileN.write(content, 'UTF-8')//            println(content)        }    }    variant.processManifest.doLast{        //这里是多渠道打包修改AndroidManifest.xml文件里面的渠道值,以友盟为例                                     
        //关于路径我这里build目录下的intermediates 
        //之前这里用的copy{},我换成了文件操作,这样可以在v1.11版本正常运行,并保持文件夹整洁        //${buildDir}是指./build文件夹        //${variant.dirName}是flavor/buildtype,例如GooglePlay/release,运行时会自动生成        //下面的路径是类似这样:./build/manifests/GooglePlay/release/AndroidManifest.xml       def manifestFile = "${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml"        //将字符串default替换成flavor的名字        def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("UMENG_CHANNEL_VALUE", "${variant.productFlavors[0].name}")        new File(manifestFile).write(updatedContent, 'UTF-8')        //将此次flavor的AndroidManifest.xml文件指定为我们修改过的这个文件        variant.processResources.manifestFile = file("${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml")    }}dependencies {                                                                                   //这里是引用的library以及libs下的jar包,另外使用appcompat-v7的时候默认添加的是21版本的,但是我这里有些style文件找不到,修改成18就好了,查了下,似乎是新本不兼容了,还需要研究 
    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:support-v4:+'    compile 'com.nineoldandroids:library:2.4.0'    compile 'com.github.machinarius:preferencefragment:0.1.1'    compile 'com.github.sd6352051.niftydialogeffects:niftydialogeffects:1.0.0@aar'    compile 'com.github.amlcurran.showcaseview:library:5.0.0'    compile project(':libraries:social_sdk_library_project')    compile 'com.android.support:appcompat-v7:18.0+'}

20141114更新

新版本中对于多渠道打包做了更改,参考资料如下

AndroidManifest.xml

builde.gradle

android {    productFlavors {      "xiaomi"{          manifestPlaceholders = [channelName: "xiaomi"]      }      "360market"{          manifestPlaceholders = [channelName: "360market"]      }      "baidu"{          manifestPlaceholders = [channelName: "baidu"]      }      "wandoujia"{          manifestPlaceholders = [channelName: "wandoujia"]      }  }  }

然后gradle build 就可以了

转载于:https://my.oschina.net/sunlimiter/blog/344158

你可能感兴趣的文章
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
当我们谈性能的时候,我们实际上在谈什么?
查看>>
Spring Boot 2.0将会增强Actuator端点的特性
查看>>
i4o开源项目增强LINQ索引功能
查看>>
蔡超:入门 Go 语言必须跨越的五个思维误区
查看>>
使用Akka Actor和Java 8构建反应式应用
查看>>
curl常用命令详解
查看>>
saltstack 添加计划任务
查看>>
Puppet module命令参数介绍(六)
查看>>
《UNIX网络编程》中第一个timer_server的例子
查看>>
CISCO 路由器(4)
查看>>
网络服务搭建、配置与管理大全(Linux版)
查看>>
Silverlight 5 Beta新特性[4]文本缩进控制
查看>>
springMVC多数据源使用 跨库跨连接
查看>>
简单java在线测评程序
查看>>