Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

目录


一、Android studio 把一段代码快速提取,构建一个函数接口的方法

当我们在一个地方写了很多代码,想把它提取出来,放在自己定义的一个方法里面,只需要选中一些代码,然后操作快捷键 Cmd + Option + M(Mac) 就ok了,Windows是 Ctrl + Alt + M(如果你之前有把快捷键匹配成了eclipse的那么使用Alt+shift+M)。

www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

二、Android Studio 删除一个不要的 module 模块

www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

三、Android Studio Debug调试一张图简单说明主要功能

www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)
www.zeeklog.com  - Android Studio 的一些 常用操作和 编译报错 整理(持续更新中...)

四、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 添加 (最