Android Studio之入门基础

 

AndroidStudio: 是Google官方基于IntelliJ IDEA开发的一款Android应用开发工具,,类似之前的eclipse,但是比eclipse 强大很多,推荐使用;

 

Gradle:是一个工具,同时它也是一个编程框架。使用这个工具可以完成app的编译打包等工作;安装位于:Windows C:\Users\计算机名.gradle\wrapper\dists
                LInux/Mac: /home/user_name/.gradle\wrapper\dists


compileSdkVersion、buildToolsVersion、minSdkVersion和targetSdkVersion的含义作用

  • compileSdkVersion 25     
    SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。建议选择最新版本号。

     
  • buildToolsVersion"25.0.3"
    构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX


    可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的
    例如:compileSdkVersion 18  
    buildToolsVersion "22.0.1"这样也是OK的。

    如何查看本地版本?
    可通过SDK Manager->SDK Tools->Android SDK Build Tools,勾选show package details查看,例如:25.0.3。


     
  • targetSdkVersion 23
    假设某API 在SDK <=23 和 SDK > 23 表现不一样,若工程设定了该值,对于SDK > 23 的新手机,会执行旧版本api 逻辑。
    详情请点击这里

    一般情况下,如果没有测试各种机型版本兼容性的情况下,不建议修改此值。

     
  • minSdkVersion 15
    apk最低支持的系统版本号,这个好理解


     
  • compile 'com.android.support:support-v4:25.3.1'
    与compileSdkVersion大版本号相同,如25.x.y,至于x.y具体数字不是随便填的,需要与谷歌发布版本匹配


    小结:
    1、compileSdkVersion和buildToolsVersion作用于项目的编译,compileSdkVersion设置为最新的SDK版本比较好,
    2、minSdkVersion和targetSdkVersion控制项目的运行版本
    3、buildToolsVersion的版本需要 >= CompileSdkVersion >= targetSdkVersion

 

版本号取值/设置

AndroidStudio相对于Eclipse,摒弃了在AndroidManifest设置版本的做法,如果要修改版本号和版本名称,应该在根project的build.gralde设置,请看说明:

 

项目结构图:

 

 

①在AS的世界里,文件夹都以模块(module)为单位组织的,只不过在项目组织中,project是个root module而已。

 

既然project也是模块,module也是模块,那么他们就有共同的东西,在AS中,XXX.iml、build.gradle以及build文件夹就是模块共同的

   

 

 

②以.开头的基本上就不用理会了,比较重要的是:gradle文件夹是gradle wrapper,local.properties是配置SDK,NDK路径的,而settings.gradle是一个很重要的文件,用于描述改project注册了哪些module。

 

使用gradle构建Android应用时,你总是需要这样一个文件:build.gradle。gradle是基于groovy语言的,不过如果只是用它构建普通的工程的话,是可以不去学groovy的,如果想深入的做一下自定义的构建插件,可以考虑学一下groovy,因为它是基于Java的,所以你有java基础的话,学习不会很难。


settings.gradle
settings.gradle实在初始化阶段被读入的,读入以后会生成一个Settings对象,然后会调用这个对象的一些方法。你没有必要了解这个对象,你知道它的存在对你理解项目构建的过程有所帮助。
如果一个新的工程只包含一个android app,那么settings.gradle应该是这样的:
include ':app'  
如果你的工程里只有一个 app,那么settings.gradle文件可以不要。include ':app'中的app指明你要构建的模块名,android studio默认的模块名师app,你可以把app目录的名字改掉,比如改成hello,那么这个时候你就必须把settings.gradle中的app也改成hello。




顶层的build.gradle脚本。这个文件中配置内容将会应用到所有modules中(上一步我们已经创建了两个module了,一个hello,一个gradletest2)。所以,每个module中都有的共同的属性,都会在顶层的build.gradle中配置。

 

buildscript {  
    repositories {  
        jcenter()  
    }  
    dependencies {  
        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 {  
    repositories {  
        jcenter()  
    }  
}  
  
task clean(type: Delete) {  
    delete rootProject.buildDir  
}  

 


子工程下的build.gradle

 

 

apply plugin: 'com.android.application'  
  
android {  
    compileSdkVersion 23  
    buildToolsVersion "23.0.3"  
  
    defaultConfig {  
        applicationId "com.konka.gradletest"  
        minSdkVersion 16  
        targetSdkVersion 23  
        versionCode 1  
        versionName "1.0"  
    }  
    buildTypes {  
        release {  
            minifyEnabled false  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
        }  
    }  
}  
  
dependencies {  
    compile fileTree(dir: 'libs', include: ['*.jar'])  
    testCompile 'junit:junit:4.12'  
    compile 'com.android.support:appcompat-v7:23.3.0'  
}  


第一行是一个statement,调用了apply方法,这个方法的定义如下:
void apply(Map<String, ?> options);  
它的作用是检查gradle有没有所声明的这个插件,有就什么都不做,没有的话就会使插件可用。


具体的每一个script block,它们大部分都是都是方法,都可以在android studio 中按住ctrl+鼠标左键,点进去看它的声明,每个方法都有注释来解释它的作用。
android block
android 是这个脚本中最大的块,它包含了andoird特有的插件,这些插件可以使用是因为之前调用了
apply plugin: 'com.android.application',
此外,这里设置了编译android用的参数,构建类型等。

 


dependencies block
dependecies也是一个接受闭包作为参数的方法,这里设置了编译当前的app的依赖。如果当前app依赖外部的包,可以把这个包放到libs目录下面,然后右键,选择add as library,然后就会在这里生成一条compile ' ... '的记录。

 

一、build.gradle文件

//声明构建的项目类型,application表示主程序,子库表示如: apply plugin: 'com.android.library'
apply plugin: 'com.android.application'  

 //设置编译android项目的参数
android {
  compileSdkVersion 22
  buildToolsVersion "22.0.1"
  defaultConfig {
    // applicationId "默认包名"
    minSdkVersion 9
    targetSdkVersion 22
    //versionCode 229
    //versionName "2.2.9"
  }
  /**
   *Android默认配置,建议不写,直接用系统默认的配置
   */
  sourceSets {
   main {
     manifest.srcFile 'AndroidManifest.xml'
     java.srcDirs = ['src']
     resources.srcDirs = ['src']
     aidl.srcDirs = ['src']
     renderscript.srcDirs = ['src']
     res.srcDirs = ['res']
     assets.srcDirs = ['assets']
     /**
      *如果.so文件跟Eclipse一样放在了libs文件夹下就需要加上这一行代码
      */
     jniLibs.srcDirs = ['libs']
   }
   //测试所在的路径,这里假设是tests文件夹,没有可以不写这一行
   instrumentTest.setRoot('tests')
  }      
  /*** 签名设置*/
  signingConfigs {
    myConfig {
      storeFile file("F:\\123.keystore");
      keyAlias "123"
      keyPassword "123456"
      storePassword "123456"
    }
  }
  /**
   *调用本地aar文件
   */
  repositories {
    //mavenLocal()
    //mavenCentral()
    flatDir {
        dirs 'libs'
    }
  }
  /*** 渠道打包*/
  productFlavors {
    xxx {//渠道名
      applicationId "修改的包名"
      versionName "2.2.9"
      versionCode 229
    }
    xxx1 {//渠道名
      applicationId "修改的包名"
      versionName "2.2.9"
      versionCode 229
    }
  }
   /**
     * 替换AndroidManifest.xml的BaiduMobAd_CHANNEL_VALUE字符串为渠道名称格式
     * <meta-data
     *    android:name="BaiduMobAd_CHANNEL"
     *    android:value="${BaiduMobAd_CHANNEL_VALUE}" />  
     */
  productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [BaiduMobAd_CHANNEL_VALUE: name]
  }
  /**
   * 混淆设置
   */
  buildTypes {
    release {
      signingConfig signingConfigs.myConfig
      minifyEnabled true//是否混淆
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
      signingConfig signingConfigs.myConfig
      minifyEnabled true//是否混淆
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}
dependencies {
  compile fileTree(include: ['*.jar'], dir: 'libs')
  compile 'com.android.support:appcompat-v7:22.2.1'
  compile(name: 'pulltorefresh', ext: 'aar')
}

        在此需要说明的是,需要注意build文件里面方法的顺序。如果在在方法体中用到我们书写的方法的话,该方法必须放在用到的方法的后面。

二、.so文件的处理

 //Android默认配置
 sourceSets {
   main {
     manifest.srcFile 'AndroidManifest.xml'
     java.srcDirs = ['src']
     resources.srcDirs = ['src']
     aidl.srcDirs = ['src']
     renderscript.srcDirs = ['src']
     res.srcDirs = ['res']
     assets.srcDirs = ['assets']
     /**
      *如果.so文件跟Eclipse一样放在了libs文件夹下就需要加上这一行代码
      */
     jniLibs.srcDirs = ['libs']
   }
   //测试所在的路径,这里假设是tests文件夹,没有可以不写这一行
   instrumentTest.setRoot('tests')
}

         (2)android studio的默认配置为:
        1.在“src/main”目录中新建名为“jniLibs”的目录;

        2.将so文件复制、粘贴到“jniLibs”目录内。

 

三、aar文件与jar文件
        对于项目依赖 android library的话,就不是依赖一个jar,那么简单了,在这里需要使用gradle mulit project 机制。在过去,android library并没有一个很好的包管理方式,简单来说,在gradle出现以前,官方并没有一种用于管理android library 依赖包的方式,一般我们都是直接下载别人的android library project 源码进行集成,而对于第三方的android-maven-plugin 用的是apklib 格式。

        而现在,官方终于推出一种android library的打包格式,扩展名为*.aar。前面提到,目前android gradle插件并不支持本地直接使用*.aar文件,不过,支持包管理库的引用方式,下面,我为大家说一下,怎么对android library 发布使用。

        打包android library

        对android library 进行打包直接在library项目下面使用gradle build 即可,然后,你就会在 build/outputs/aar 目录下看到两个*.aar文件,一个debug包用的,一个是release 下用的,看个人需求使用,这里我们用的是release 版本的 .aar 文件。

        引用脚本跟前面讲的依赖库相似

dependencies {
    compile(name: 'pulltorefresh', ext: 'aar')
}


    pulltorefresh为我们library生成aar文件的名字。关于library的创建和添加,在此不做赘述。


(1)aar与jar的区别

        *.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。

        *.aar:包含所有资源,class以及res资源文件全部包含

        *.aar:有两种方式,分别为本地加载以及网络加载,由于网络加载涉及到发布到mavenCentral托管的问题这里不做讨论;在这里给大家说一种本地加载的方式,简单快捷。

        这里演示的aar文件为:”pulltorefresh.aar“

       aar需要拷贝到“libs”文件夹下,gradle配置为

 

/**
   *调用本地aar文件
   */
  repositories {
    //mavenLocal()
    //mavenCentral()
    flatDir {
        dirs 'libs'
    }
  }
dependencies {
    compile(name:'pulltorefresh', ext:'aar')
}



四、打包
        现在,终于到了最后一步,自动多渠道修改包名打包(听着就高大上【偷笑】)。现在自动打包也有两种方法。

(1)手动触发
        跟普通打包一样,最后选择渠道时,按住“shift”点击全部选中,确定,你就可以关闭屏幕,下班了。第二天早晨来收获结果。
(2)代码自动运行
        点击studio面板上的“Terminal”或者“cmd”进入到当前工程的根目录下执行gradlew assembleRelease命令自动进行多渠道打包。还有一个类似的命令:gradlew assembleDebug想必通过名字,就能到猜测出。
        注意:第一次执行打包命令的时候,会自动下载一些与打包相关的文件。
        最后,打包完成的apk在哪呢?这也是我们最关注的问题。在当前Module的build->outputs->apk文件夹下。

大家也可以看一下,以前我关于对gradle的配置,在此附上地址:Android studio gradle配置和android studio gradle 配置修改

        另外:在开发Android应用时,通常情况下是通过USB数据线连接设备和计算机,但对于一些需要使用USB设备的应用,这种方法就碰到了麻烦,手机的USB接口已经和外接的USB设备连接,无法再连数据线,此时可以通过网络TCPIP的方法来进行。也就是然ADB 通过网络来连接设备,而无需USB数据线。

具体方法如下:
1. 使用USB数据线连接设备。
2. 在命令行输入adb tcpip 5555 ( 5555为端口号,可以自由指定)。
3. 断开 USB数据,此时可以连接你需要连接的|USB设备。
4. 再计算机命令行输入 adb connect <设备的IP地址>:5555

 

后面就可以使用ADB ,DDMS 来调试Android应用或显示Logcat 消息。

 

 

 

常见的App--------build.gradle配置

 

 

 

 

资料源自互联网

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值