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
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 {} 里面添加代码: compile‘com.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')
}
最后
以上就是纯真机器猫最近收集整理的关于Android Studio 开发使用总结的全部内容,更多相关Android内容请搜索靠谱客的其他文章。
发表评论 取消回复