一、在项目里配置签名

搜索百度里有很多可视化操作在项目里配置签名,但是对于已经有签名的旧项目来说,用语句是最方便的。

方法:

第一步:把签名文件放到项目中,和build.gradle的同一级目录下。当然也可以不放到项目里。
第二步:在gradle.properties文件下写上签名的内容。
# 签名文件(以下方法是第一步采用把签名文件放到项目中的情况,如果放在本地,则需要加上路径)
KEYSTORE_FILE=demo.jks
# 签名文件的密码
KEYSTORE_PWD=aaa
# 签名文件中需要的APP名【一个签名文件可能有多个app的信息】
KEY_ALIAS=demo
# 签名文件中对应APP的密码
KEY_PWD=xxx
第三步:在app的build.gradle文件夹的android{ }下,加上以下语句
    signingConfigs {
release {
storeFile file(KEYSTORE_FILE)
storePassword KEYSTORE_PWD
keyAlias KEY_ALIAS
keyPassword KEY_PWD
}
debug {
storeFile file(KEYSTORE_FILE)
storePassword KEYSTORE_PWD
keyAlias KEY_ALIAS
keyPassword KEY_PWD
}
}
可选:自定义apk输出路径,若指定的路径不是在项目里,则配置以下属性就不能直接运行项目,只能采用打包的方式安装。
    applicationVariants.all {
variant ->
variant.outputs.all {
// 自定义输出路径 不适用于直接运行
variant.getPackageApplication().outputDirectory = new File(/* project.rootDir.absolutePath */ "F:" + File.separator + "APK" + File.separator + new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
+ File.separator + "release"
// + File.separator + "debug"
)
// 自定义文件名{示例:AppName-Flavor-debug-v1.0.0_201807301409}
// outputFileName = "AppName-${variant.flavorName}-${variant.buildType.name}-v${variant.versionName}_${time()}.apk"
}
}

二、cmd命令安装apk在测试机

win + R ==> cmd ==> cd sdk的目录 ==> cd platform-tools ==> adb install -r xxx.apk



完成!!

Android studio 在项目里配置签名 + cmd命令安装apk在测试机的更多相关文章

  1. Android Studio环境下代码混淆+签名打包

    Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...

  2. Android Studio 设置项目Module编码,解决Android Studio项目执行时乱码问题

    Android Studio的项目设置逻辑与Eclipse有非常大的差别.运行的操作为File->Setting->File Encodings然后来进行设置,如图所看到的: waterm ...

  3. Android studio打开项目时出现 gradle download 无反应

    在使用android studio 新建 项目的时候,会发现一直无法下载 gradle程序一直卡住不动,原因是被墙了. 解决方法: 到gradle官网下载离线包,解压后将bin路径加入Path环境变量 ...

  4. Android Studio导入项目

    原文:http://ask.android-studio.org/?/article/21 本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4.请尝试 ...

  5. Android Studio 导入项目错误

    Gradle DSL method not found: 'Android()' 错误原因: android studio 引进项目时,自动查找本机是否有项目设置的SDK版本,若发现没有,我们会在pr ...

  6. android studio 新建项目 界面一直停在 【“building ‘ 项目名’ gradle project info”】

    zhezhelin android studio 新建项目 界面一直停在 [“building ‘ 项目名’ gradle project info”] 安装了android studio 之后,按照 ...

  7. Google Android Studio Kotlin 开发环境配置

    Google 近日开发者大会宣布Kotlin成为Android开发的第一级语言,即Android官方开发语言,可见Google对Kotlin的重视,本文就介绍一下Android Studio下的Kot ...

  8. 【Android Studio安装部署系列】二十一、Android studio将项目上传到github中

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 两个相关概念:git和github Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git ...

  9. android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)

    android ndk-build 编译静态库libxx.a 需求场景: 目前有安卓编码好的现在的openssl的两个.a,我们需要调用openssl的函数,并把功能再封装成.a; 这样使用时,在an ...

随机推荐

  1. Java 中的链式编程

    前言 ​ 在写项目的时候,有一个实体类有好多个属性,new 出来之后需要不停的使用setXXX( )方法,效率低而且代码可读性差,查询了下发现可以实现实体类的链式编程. public class Us ...

  2. Python网络数据采集PDF高清完整版免费下载|百度云盘

    百度云盘:Python网络数据采集PDF高清完整版免费下载 提取码:1vc5   内容简介 本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导.第 ...

  3. Android复习准备

    1. 四大组件是什么? Activity(活动):用于表现功能 Service(服务):后台运行服务,不提供界面呈现 BroadcastReceiver(广播接收器):用来接收广播 ContentPr ...

  4. 两数相加(B站看视频总结)

    ''' 两数相加: 给出两个 非空 的链表用来表示两个非负的整数 各自的位数是按照逆序的方式存储的 每一个节点只能保存 一位数 示例: 输入:(2->4->3) + (5->6-&g ...

  5. PHP imagecolorclosest - 取得与指定的颜色最接近的颜色的索引值

    imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值.高佣联盟 www.cgewang.com 语法 int imagecolorclosest ( resource $ima ...

  6. UOJ 422 [集训队作业2018] 小Z的礼物 min-max容斥 期望 轮廓线dp

    LINK:小Z的礼物 太精髓了 我重学了一遍min-max容斥 重写了一遍按位或才写这道题的. 还是期望多少时间可以全部集齐. 相当于求出 \(E(max(S))\)表示最后一个出现的期望时间. 根据 ...

  7. CF453A Little Pony and Expected Maximum 期望dp

    LINK:Little Pony and Expected Maximum 容易设出状态f[i][j]表示前i次最大值为j的概率. 转移很显然 不过复杂度很高. 考虑优化.考虑直接求出最大值为j的概率 ...

  8. springboot2.1.x版本报错总结

    我使用的是springboot  2.1.7.RELEASE  springcloud  Greenwich.SR2 boot和cloud对应的版本号不能搞混,对应版本请参考https://sprin ...

  9. 通过源代码分析Mybatis的功能

    SQL解析 Mybatis在初始化的时候,会读取xml中的SQL,解析后会生成SqlSource对象,SqlSource对象分为两种. DynamicSqlSource,动态SQL,获取SQL(get ...

  10. C++关于智能指针

    有四种: auto_ptr<class T> unique_ptr<class T> shared_ptr<class T> weak_ptr<class T ...