Android Studio 开发使用总结

Android Studio 开发使用总结
最近公司电脑配置更新,终于可以用上AS了,进过几天折腾,对AS初期开发使用总结如下:
写在前面:我自己的配置文件:我的配置
附上我的build.gradle:
apply plugin: 'com.android.application'

    //获取local.properties的内容
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())


    android {
    compileSdkVersion 19
    buildToolsVersion "25.0.2"


    // 使用签名文件进行签名的两种方式
    //第一种:使用gradle直接签名打包,配置keystore签名
    signingConfigs {
    release {
    keyAlias '1.0'
    keyPassword 'huyu'
    storeFile file('E:/Studio_备份/xx/xx上传/xx.keystore')
    storePassword 'huyu'
    //            v2SigningEnabled false //禁用V2签名模式,V2签名模式仅在7.0以上可以安装,减少APP安装过程时间和更多的保护机制
    // 或者使用面板签名的时候,勾选V1,V2可以兼容各个版本
    }
    debug {
    keyAlias 'androiddebugkey'
    keyPassword 'android'
    storeFile file('E:/Studio_备份/debug-keystore/huyu-debug.keystore')
    storePassword 'android'
    }
    }

    //第二种:为了保护签名文件,把它放在local.properties中并在版本库中排除,不把这些信息写入到版本库中(注意,此种方式签名文件中不能有中文)
    //    signingConfigs {
    //        config {
    //            keyAlias properties.getProperty("keystroe_keyAlias")
    //            keyPassword properties.getProperty("keystroe_keyPassword")
    //            storeFile file(properties.getProperty("keystroe_storeFile"))
    //            storePassword properties.getProperty("keystroe_storePassword")
    //        }
    //    }

    defaultConfig {
    applicationId "com.huyu.test"
    minSdkVersion 15
    targetSdkVersion 19
    versionCode 20170505
    versionName "2.04.170505"

    // dex突破65535的限制
    // 第一步:
    //         multiDexEnabled true
    // 第二步: 在dependencies 添加依赖
    // compile 'com.android.support:multidex:1.0.0'
    // 第三步:
    // Application继承一下MultiDexApplication即可。
    }

    //屏蔽lint的严格检查
    lintOptions {
    abortOnError false
    disable 'MissingTranslation'    // 防止在发布的时候出现因MissingTranslation导致Build Failed!

    //        checkReleaseBuilds false      // 为了解决多个manifest中相同activity重复注册的问题(主要是用在多渠道配置不同的manifest文件)
    }

    //配置编译的jdk版本
    //    compileOptions {
    //        sourceCompatibility JavaVersion.VERSION_1_7
    //        targetCompatibility JavaVersion.VERSION_1_7
    //    }

    /** 报 Duplicate files copied in APK META-INF/DEPENDENCIES File 1: xxx.jar File 2: xxx.jar
    貌似说两个包里面的文件重复了*/
    //    packagingOptions {
    //        exclude 'META-INF/DEPENDENCIES'
    //        exclude 'META-INF/NOTICE'
    //        exclude 'META-INF/LICENSE'
    //        exclude 'META-INF/LICENSE.txt'
    //        exclude 'META-INF/NOTICE.txt'
    //    }

    //打包配置debug模式下,使用正式版签名,此操作主要为了方便调试微信,新浪等第三方登录授权
    buildTypes {
    release {
    minifyEnabled true
    shrinkResources true //2.2版本该功能无法使用(必须和 minifyEnabled true 一起使用)
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    signingConfig signingConfigs.release
    }
    debug {
    zipAlignEnabled false   //默认是true, 只有显示配置为true时,才会生成unaligned.apk
    minifyEnabled false     //不启用混淆
    shrinkResources false   //默认是false, true为删除无用资源
    signingConfig signingConfigs.debug   //不配置签名项,会生成无签名的apk

    // 动态在 BuildConfig.java 添加字段,在Java代码中调用 BuildConfig.FLAG_LOG
    // buildConfigField "boolean", "FLAG_LOG", "true"
    // buildConfigField "String", "API_HOST", "\"http://api.huyu.com\""  // 字符串变量
    }
    }

    // 引用了 aar 资源1:需要加上下面这句;2.需要在 dependences 中加上 compile (name:'aar文件名', ext:'aar')
    repositories {
    flatDir {
    dirs 'libs'
    }
    }

    //    sourceSets {
    //        baidu {
    //            // 设置不同的 AndroidManifest 文件
    //            // 一定要写相对路径,将原始manifest中的内容copy到为每个包单独配置的manifest中去,
    //            // 1.删除 AndroidManifest_baidu.xml 中配置包名的代码,因为已经在gradle.build中配置过了,不能重复配置
    //            // 2.在AndroidManifest_baidu.xml 中 application 标签下添加 tools:replace="android:label,android:icon"(具体可以参考报错信息)
    //            manifest.srcFile 'src/baidu/AndroidManifest_baidu.xml'
    //            java.srcDirs = ['src/baidu/java']
    //            res.srcDirs = ['src/baidu/res']
    //            assets.srcDirs = ['src/baidu/assets']
    //        }
    //    }


    //配置多版本的apk, 需要在终端执行  gradlew assembleRelease  将生成不同渠道的release版apk
    //不同的Flavor若需要对应不同的资源文件或者代码或者AndroidManifest.xml文件,均可以在src下简历对应flavor的文件夹,再覆盖资源即可。
    //注意:覆盖资源的路径要与main下面路径一致
    productFlavors{


    baidu {
    applicationId "com.huyu.baidu"  //替换包名

    // 动态在 BuildConfig.java 添加字段,  引用:  BuildConfig.isGooglePlay
    buildConfigField "boolean", "isGooglePlay", "false"
    buildConfigField "String", "XIAOMI_APPID", '"你自己的key"'
    buildConfigField "String", "XIAOMI_APPKEY", '"你自己的key"'


    // 替换配置文件中的 ${app_name} 等占位符(${applicationId} 除外)
    manifestPlaceholders = [
    //                    app_icon: "@mipmap/ic_launcher",
    app_name : "@string/app_name",
    JPUSH_APPKEY : "你自己的key",
    XIAOMI_APPID : "你自己的key",
    XIAOMI_APPKEY : "你自己的key"
    ]

    // resValue  动态在res/value/目录下根据第一个参数如 strings.xml 添加字段,所以添加前不能存在同名字段
    // bools.xml 添加字段,所以添加前不能存在同名字段
    // 在java代码中获取这里的配置属性: context.getResources().getString(R.string.isGooglePlayVersion);
    //            resValue("string" , "app_name","xx")
    // resValue("bool" , "isGooglePlay", 'false')

    }

    google {
    applicationId "com.huyu.gplay"

    buildConfigField "boolean", "isGooglePlay", "true"
    buildConfigField "String", "XIAOMI_APPID", '"你自己的key"'
    buildConfigField "String", "XIAOMI_APPKEY", '"你自己的key"'

    manifestPlaceholders = [
    app_name : "@string/app_name_gplay",
    JPUSH_APPKEY : "你自己的key",
    XIAOMI_APPID : "你自己的key",
    XIAOMI_APPKEY : "你自己的key"
    ]

    }

    }


    //这里修改apk文件名
    android.applicationVariants.all { variant ->
    variant.outputs.each { output ->
    def outputFile = output.outputFile
    if (outputFile != null && outputFile.name.endsWith('.apk')) {
    def fileName = "huyu_${variant.productFlavors[0].name}" +
    "_V${defaultConfig.versionName}" +
    "_${releaseTime() }.apk"
    output.outputFile = new File(outputFile.parent, fileName)
    }
    }
    }


    /**一般大多数是出现在图片上,.jpg修改成了.png就会出现这个问题*/
    aaptOptions {
    cruncherEnabled = false
    useNewCruncher = false
    }

    }


    // 定义一个打包时间
    def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
    }

    dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile(name: 'BDUpdateSDK', ext: 'aar')
    }
在项目根目录的 local.properties 中 添加如下信息(可以隐藏keystrore信息)
    #对应自己实际的证书路径和名字,在这里由于签名文件是放在app目录下,因为没有写绝对路径。
    keystroe_storeFile=E\:/Studio/keystore/huyu.keystore
    keystroe_storePassword=huyu
    keystroe_keyAlias=1.0
    keystroe_keyPassword=huyu


1.配置快捷键:(本人之前使用Eclipse)
将快捷键复制为Eclipse
1. Keymap -- Main menu - code - comption - basic -    alt+/  代码提示

2.Keymap -- Main menu - code - generate...     Alt+shitf+s  生成get set

3.Keymap -- Main menu - code - folding - cidr.. - Reformat Code   Ctrl + i 格式化代码

4.Keymap -- Main menu - code - folding - cidr.. - Optimize..   Ctrl +shift+o 优化导入包

5.other - show intention actions      Ctrl +alt+o 

其它的和Eclipse大同小异

2.自动导入包

1. Editor - gerneral -auto import-全部勾选,ASK

3. 代码提示 不区分大小写,设为none

Editor-->code completions-->Case sensitive compltetion设置成None

4. 鼠标移入时显示doc

Editor-->General -- 勾选 show quick doc on mouse move Delay  500 ms

5.更改logcat颜色

Editor-->General-->Color & Fontd-->Android Logcat

取消勾选Inherit Attributes From…

Log级别 色值

VERBOSE BBBBBB

DEBUG 0070BB

INFO 48BB31

WARN BBBB23

ERROR FF0006

ASSERT 默认



6. 添加so

1.在src - main 下新建文件夹 jinLibs

2.在 jinLibs 下 新建 对应的 子文件夹(armeabi...)

3.将so文件复制进对应文件夹

7.添加jar

方法1:(普通添加)

 1.在 app -- libs  (即在src 同级目录下新建 libs 文件夹), 将 xxx.jar 文件复制进来

2.右击jar文件,选择  add aslibrary

3.右击项目,选择 open module settings--选择 app -- 选择 dependencies 查看 jar文件是否是 compile

方法2(已知jar包的全部包名)

1.直接 打开 app 目录下的 build.gradle

2.在  dependencies {} 里面添加代码: compilecom.xxx.xxx.jar此时AS会自动联网去jcenter仓库下载jar包

方法3(已知jar包的部分包名)

1.右击项目,选择 open module settings--选择 app -- 选择 dependencies

2.点击右侧或下面的 + (加号)-- 选择 1 library dependence -- 输入 jar包部分包名, OK

8.添加 依赖项目Library

1.file -- (new-- new modle--import gradle modle 或者import eclipse modle)(import modle) 选择路径

   2.等待加载完成,右击刚导入的 modle  --  open module settings  --  选择 app --  选择 dependencies  --  点击右侧或下面的 + (加号)-- 选择 3 modle dependence --  选择刚才导入的 modle --  ok

   3.检查 打开 app 下的 build.gradle 查看  dependencies {} 里面是否有: compile project(‘:xxxxx_LibProject’ )

   4.检查  项目根目录下  settings.gradle  查看是否有  include ‘:xxxxx_LibProject’

9.安装插件

Plugins --  browse reposeties...   在线安装插件

    Install plugins from disks   离线安装

   插件:  1.  selectorChapek for android  生成selector

用法: 将图片按照 _pressed   _normal  命名, 右键drawable-xdip(...) 选择 generate android selector 自动生成  

2.  Gson Format    将 json 转换成实体类

     用法:  新建类, shift+alt+s

      3.  Android parcelable code generaltor    生成实现序列化代码

  用法:  新建类, shift+alt+s

4.findBugs

  用法:  选中 目标文件或代码,右击,findbugs

10.打jar包(该方式适用于moudle不包含第三方libs,和不包含assert文件,至于包含这两种的打包方法,等有时间再研究,如果各位有什么好的方法欢迎留言讨论)

    1. 在需要打包的module 下的 build.gradle 文件中添加如下代码:

task makeJar(type: Copy) {
     delete 'build/libs/mysdk.jar'
     from('build/intermediates/bundles/release/')
   into('build/libs/')
     include('classes.jar')
     rename ('classes.jar', 'mysdk.jar')
}

makeJar.dependsOn(build)

   其中:mysdk.jar 可以更名为你需要的 name.jar

    2. 在 Terminal 执行  gradlew makeJar

    3. 显示 BUILD SUCCESSFUL  表示成功

    4. jar包的位置在你需要打包的moudle的build/libs/mysdk.jar

11.查看签名文件信息

    cmd   

 1.切换路径输入keytool -list -v -keystore +你的.jks文件完整路径

 2.输入密码

12.生成 aar 包(带资源文件,libs下的jar,xml文件的包)

 1.新建任意工程,在工程里再新建Model -- Android Library

 2.写好代码,包括资源文件

 3.选中要导出的Model: Build -- Make Model

 4.在model的build--outputs--aar 目录下可以看到 xx-release.aar和xx-debug.aar;

13.引用aar

 1.将 aar 复制进 libs

 2.在 app 的 build.gradle 的 android 中添加:

   repositories {

   flatDir { dirs 'libs'}

   } //指定aar目录

 在 dependencies {

// 添加依赖

compile (name:'libs目录下的aar的文件名', ext:'aar')

 }



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值