Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
目录
一、Android studio 把一段代码快速提取,构建一个函数接口的方法
当我们在一个地方写了很多代码,想把它提取出来,放在自己定义的一个方法里面,只需要选中一些代码,然后操作快捷键 Cmd + Option + M(Mac) 就ok了,Windows是 Ctrl + Alt + M(如果你之前有把快捷键匹配成了eclipse的那么使用Alt+shift+M)。
二、Android Studio 删除一个不要的 module 模块
三、Android Studio Debug调试一张图简单说明主要功能
四、Android Studio 3. 2 版本的多渠道打包的错误处理
原编写:
productFlavors{
wandoujia{
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
//manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
1)报错:
Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=release, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
错误:
Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=release, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
修改为:
productFlavors{
wandoujia{
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
//manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
applicationVariants.all { variant ->
variant.outputs.all {
def fileName
def date = new Date()
def formattedDate = date.format('yyyyMMdd')
if (variant.buildType.name.equals('release')) {
fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}-${formattedDate}.apk")
}
else if (variant.buildType.name.equals('debug')) {
fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}-${formattedDate}.apk")
}
outputFileName = fileName;
}
}
2)报错:
提示:Error:All flavors must now belong to a named flavor dimension.Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
这个一个错误,意思是:所有的flavors都必须属于同一个风格。
提示:Error:All flavors must now belong to a named flavor dimension.Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
这个一个错误,意思是:所有的flavors都必须属于同一个风格。
添加代码:
在 defaultConfig 添加 flavorDimensions "versionCode",版本名后面添加一句话,意思就是flavordimension 它的维度就是该版本号,这样维度就是都是统一的了
defaultConfig {
applicationId "com.example.xan.testjsk"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}
五、Android Studio 添加 aar 依赖的两种方式
1)方式一
android{
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation (name: 'XX_library_vx.x.x', ext: 'aar')
}
2)方式二
android{
//不用写
/* repositories {
flatDir {
dirs 'libs'
}
}*/
}
dependencies {
将
implementation fileTree(dir: 'libs', include: ['*.jar'])
改为
implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
}
五、Android Studio 杀死自己进程或者杀死指定进程
1)杀死自己
android.os.Process.killProcess(android.os.Process.myPid());
2)杀死指定进程
a) activityManager.killBackgroundProcesses(不能杀死自己)
(注意:需要权限:)
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses("com.android.mms");
b) activityManager.restartPackage("com.diandian")
(注意:需要权限: )
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
activityManager.restartPackage("com.diandian");
六、Android Studio 3.2 引入 aar 包进工程
1)方法一:使用 implementation 添加 (最