Android Studio问题记录

开始整理使用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 --help
gradle 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基本使用方法可以查看相关文档,不再详细说明

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

http://beartung.github.io/rockwithandroid/gradle.html

http://www.cnblogs.com/qianxudetianxia/p/3987395.html

http://www.cnblogs.com/youxilua/archive/2013/05/20/3087935.html

https://gist.github.com/youxiachai/5608223

https://github.com/ShinChven/ImmigrateToGradle

http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/introduction/README.html

下面是我用的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文件里面的渠道值,以友盟为例                                     <meta-data
            android:name="UMENG_CHANNEL"
            android:value="UMENG_CHANNEL_VALUE" />
        //关于路径我这里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:[email protected]‘
    compile ‘com.github.amlcurran.showcaseview:library:5.0.0‘
    compile project(‘:libraries:social_sdk_library_project‘)
    compile ‘com.android.support:appcompat-v7:18.0+‘
}
时间: 2024-08-04 10:18:11

Android Studio问题记录的相关文章

eclipse迁移到Android Studio 问题记录

最近从eclipse迁移了一个老项目到Android Studio,迁移的原因嘛,当然是65535的问题.迁移的过程中从编译到打包,踩了一堆坑,在此记录一下,希望能帮到,同样被坑的同行 如何导入 推荐使用直接导入ADT的方式来进行导入工作,这样会自动为你添加依赖,构建好代码的架构 选择好eclipse的工程和要导入的目标工程后,直接next -> finish 选项用默认选项 静静的祈祷,并等待导入结束 开始慢慢填坑路 AS构建项目完成后,报错是肯定的,先来看看第一个错误 命名不规范 这个错误很

Android Studio学习记录-第三周

3.7.1 制作Nine-Patch图片 1.什么是.9.png格式 .9.png格式的图片可以在安卓平台指定拉伸区域,防止图片失真,一般用作背景图. 2.前提 去sdk的tools目录下面找draw9patch.bat文件,但是没找到. 3.处理方式 在android studio中生成 把要编辑的图片复制到资源文件中: 选中图片右键: 选择 create 9-path 就会在同目录下面生成相同文件名并且后缀是.9.png图片,这样就可以愉快的制作了. 4.注意 删除已经有替代品的并且不需要的

Android Studio学习记录-第四周

5.2.1动态注册监听网络变化 在onReceive方法中调用getActiveNetworkInfo()时,必须要在app/src/main/AndroidManifest.xml里添加权限: 5.2.2 开机广播目前还没有实现. 5.3.1发送标准广播 点击按钮之后没有显示toast, 原因:由于<第一行代码>第二版是基于android7.0进行开发的,而android O(8.0)对 于发送广播进行了限制,我们要指定包名: 此处代码需要调整: Intent intent = new In

Android Studio学习记录-第五周

6.2.1将数据存储到文件中 Android Device Monitor中的data文件夹打不开,但已实现从文件中读取数据的功能. 6.5.2配置LitePal 在app/build.gradle的dependencies闭包中需要添加内容如下: dependencies { implementation 'org.litepal.android:java:3.0.0' } 6.5.3创建和升级数据库 创建数据库一直没有成功,并且点击创建按钮程序会闪退. 发现在assets目录下创建litep

Android Studio学习记录-第六周

7.4.2 实现跨程序数据共享 在ProviderTest中点击按钮不能实现打印日志的功能,目前还没有解决. 8.2.1通知的基本用法 按书中代码会报错: 原因是Android 8.0 引入了通知渠道,targeSdk升级到26之后,所有的通知的实现都需要提供通知渠道,如果不提供通知渠道的话,所有通知在8.0系统上面都不能正常展示. MainActivity.java的代码如下 public class MainActivity extends AppCompatActivity impleme

49、android studio 快捷键记录

1.删除 cmd+del 2.自动导入需要的类  option+enter 3.Option + F7 ——查找哪里引用了该方 Cmd + Option + F7 —— 列出引用的列表 4.Cmd + O —— 查找并跳到Class 5.cmd+[ 后退             cmd+] 前进 6.shit+f6 重新构造

跟刷 《 Android Studio 单刷第一行代码》 记录坑

跟刷系列   Android Studio 单刷第一行代码 原帖地址http://www.cnblogs.com/DebugLife/p/4355687.html 记录自己的失误,也算是个督促自己了. 1. 坑--去除标题栏 在 Activity 的 onCreate()方法中添加 requestWindowFeature(Window.FEATURE_NO_TITLE);

android studio 导入第三方库的记录

转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50493582 android studio 导入第三方库的记录.jar包 和 库 一.jar包 1.jar包的话非常easy,首先换成project模式.将你要用的jar包拷贝到lib以下.如图 2.然后右键选择Add as libary(多个jar也仅仅要随便选一个就这样加入就好了). 3.或者按住 shirt + ctrl + alt + s,然后按图所看到的选择文件加入. 二.

Android Studio采坑记录

折腾了几个月的Android Studio,终于在今天被我搞定了 ( ̄▽ ̄)~* 开贴记录下,免得下次再次采坑 先说下我之前电脑的环境配置吧,sdk是几年前在网上下载别人整理出来的包,一直没有更新过 (当然这里有各种原因,一是这里面东西太多,搞的自己云里雾里的,二是因为国内网络问题) 这里先把采坑点先写出来 1.sdk的问题(最好把常用的sdk和工具都更新一遍吧) 2.studio的代理问题(如图,开启工具s-s或s-s-r,配好代理,选择socks点击checkconntion,然后再输入ht