Android Studio

名词解释

1. IDE:

Intelligent Development Environm的简称。即智能开发环境。是一种开发工具。常用的IDE有adt-bundles和Android studio。两个都需要配置jdk。

2. ADT:

Android Development tools的简称。即Android开发工具。ADT为Eclipse的插件。在Eclipse和SDK之间起了一个桥梁的作用。

3. SDK:

Soft Development Kit的简称。软件开发工具包。在Android中,它为开发者提供了库文件以及其它开发所用到的工具。

4. JDK:

Java的开发工具包。包括了Java运行环境、Java工具和Java基础类库。

5. NDK:

概念: 
(1).NDK是一系列工具的集合。帮助开发者快速开发C/C++的动态库。 
并能自动将so和Java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 
(2).NDK将是Android平台开发支持C开发的开端。 
作用: 
(1).代码的保护。由于Java层代码很容易被反编译,而C/C++库反编译难度很大。 
(2).可以方便的使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。 
(3).提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。 
(4).便于移植。用C/C++写的库可以方便的在其他的嵌入式平台上再次使用。

 

问题总结:https://www.cnblogs.com/royi123/p/5378056.html

Android 10适配踩坑指南 :  https://zhuanlan.zhihu.com/p/128558892

Android Gradle Plugin Version和Gradle Version 对应关系

1、gradle插件版本配置位置:
project对应的build.gradle文件中

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'  //gradle插件版本

        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

2、gradle版本配置位置:
gradle/wrapper/gradle-wrapper.properties文件中

 

 3、版本对应关系点击查看: https://developer.android.google.cn/studio/releases/gradle-plugin#updating-plugin

 

Android版本号与API级别对应关系表

Android版本 Api Level SDK

Android 14   (Developer Preview)
Android 13.0(T)    33
Android 12.0(S)    31,32
Android 11.0(R)    30
Android 10.0(Q)    29
Android 9.0(Pie)    28
Android 8.1(Oreo)    27
Android 8.0(Oreo)    26
Android 7.1(Nougat)    25
Android 7.0(Nougat)    24
Android 6.0(Marshmallow) 23
Android 5.1(Lollipop)    22
Android 5.0(Lollipop)    21 

 

Android开发中Gradle插件,Gradle版本与JDK版本之间的对应关系

 

Gradle插件 Gradle版本 SDK Build Tools JDK版本 说明
8.2 8.1   17  
8.1 8.0   17  
8.0 8.0 30.0.3 17  
7.4 7.5 30.0.3 11  
7.3 7.4 30.0.3 11  
7.2 7.3.3 30.0.3 11  
7.1 7.2 30.3.30 11  
4.2.0+ 6.7.1 30.0.2 8+  
4.1.0+ 6.5+ 29.0.2 8+  
4.0.0+ 6.1.1+ 29.0.2 8+  
3.6.0~3.6.4 5.6.4+ 28.0.3 8+  
3.5.0 - 3.5.4 5.4.1+ 28.0.3 8+  
3.4.0 - 3.4.3 5.1.1+ 28.0.3 8+  
3.3.0 - 3.3.3 4.10.1+ 28.0.3 8+  
3.2.0 - 3.2.1 4.6+ 28.0.3 8+  
3.1.0+ 4.4+ 27.0.3 8+  

问题及解决方法:

一:移动.AndroidStudio3.5到其他目录

 

编辑idea.properties文件

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to IDE config folder. Make sure you're using forward slashes.
#---------------------------------------------------------------------
idea.config.path=E:/android/.AndroidStudio3.5/config

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to IDE system folder. Make sure you're using forward slashes.
#---------------------------------------------------------------------
idea.system.path=E:/android/.AndroidStudio3.5/system

二: 设置Android Studio的AVD默认目录

配置ANDROID_SDK_HOME系统变量,

路径即是保存你的AVD的路径,保存后,重新启动,系统会自动的在android_avd中新建一个.android文件夹,

1: 删除之前C盘中的.android目录,重新创建avd

2: 将之前的avd文件夹移到.android文件夹下,再修改你的avd配置文件的路径,打开avd文件夹,找到.ini文件,用记事本打开,将路径修改为你的文件路径

avd.ini.encoding=UTF-8
path=I:\android-avd\.android\avd\Nexus_4_API_22.avd
path.rel=avd\Nexus_4_API_22.avd
target=android-22

重启android studio。

三:报错:Emulator: I/O warning : failed to load external entity "file:/C:/Users/Administrator/.AndroidStudio3.5/config/options/updates.xml"

当移动了.AndroidStudio3.5后会报错。

将E:\android\.AndroidStudio3.5\config\options中的updates.xml文件复制 到 C:\Users\Administrator\.AndroidStudio3.5\config\options下

 

 

四:The emulator process   was killed.

Emulator: emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernel-ranchu" is in the same location as your system image.
Emulator: emulator: ERROR: ANDROID_SDK_ROOT is undefined

 

四:解决AndroidStudio中添加Library dependency很慢

修改build.gradle 文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.aliyun.com/repository/public/' }
        maven { url 'https://maven.aliyun.com/repository/google/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter/' }
        maven { url 'https://maven.aliyun.com/repository/central/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven {
            url "https://jitpack.io"
        }
        maven { url 'https://maven.aliyun.com/repository/public/' }
        maven { url 'https://maven.aliyun.com/repository/google/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter/' }
        maven { url 'https://maven.aliyun.com/repository/central/' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

红色为添加的新的项目 

 

Android开发之Fragment生命周期

其实Fragment的生命周期与Activity的生命周期有很多相似之处,但是本身也有自己特有的生命周期。

正文

1.Fragment生命周期介绍

(1) onAttach():与Activity进行一个绑定

(2) onCreate():创建Fragment时的回调

(3) onCreateView:创建、绘制Fragment的View时回调该方法

(4) onActivityCreated:当Fragment所在的Activity被完全创建时回调该方法

(5) onStart():调用该方法时Fragment可见,但不可与用户进行交互

(6) onResume():调用该方法时Fragment可见也可与用户交互

(7) onPause():Fragment失去焦点,不可与用户交互

(8) onStop():Fragment停止,失去焦点、不可与用户交互、不可见

(9) onDestroyView():销毁Fragment视图,但未与Activity解除绑定

(10) onDestroy():销毁Fragment时的调用

(11) onDetach():与Activity解除绑定

2.执行流程

(1) Fragment创建:onAttach() --- onCreate() --- onStart() --- onResume()

(2) Fragment销毁:onPause() --- onStop() --- onDestroyView() --- onDestroy() --- onDetach()

(3) 按下Home键/锁屏:onPause() --- onStop()

(4) 从桌面回到Fragment/解锁:onStart() --- onResume() 

(5) 切换到其他Fragment A-B:A执行的生命周期onPause() --- onStop() --- onDestroy() ,B执行的生命周期:onCreateView() --- onActivityCreated() --- onStart() ---onResume()

3.Fragment的setRetainInstance(true/false)方法

setRetainInstance(true/false)这个方法我们在平时可能没有注意到,其实我也是刚发现,这个方法可以帮我们有效的提高运行效率,当Fragment调用该方法后重建Activity时我们的Fragment可以不完全销毁,可以有效的提高我们App的运行效率,这个方法在Fragment的onCreate()方法中调用最合适,但是有一点需要注意,就是当Fragment调用setRetainInstance(true/false)方法后,在回复Fragment时不会再走我们的onCreate()和onDestroy()方法,所以不要再我们的onCreate()方法中进行一些逻辑处理或者初始化一些变量。

4.Fragment回退栈

我们的Activity是以压栈和出栈的方式来进行一个Activity的切换,但是我们的Fragment一般都是以销毁重建的方法来进行一个切换,所以我们可以将我们的Fragment添加到会退栈中,这样我们的Fragment也就有了跟Activity一样的栈管理。关于Fragment回退栈我只简单介绍一下,具体使用就不再做详细的演示。

4.1 Fragment回退栈中的一些方法

(1) addToBackStack(tag):将Fragment添加到回退栈中

(2) popBackStack():销毁回退栈中栈顶的Fragment

(3) getBackStackImmediate():立刻销毁回退栈中栈顶的Fragment

(4) getBackStackEntryAt(int index):获取回退栈中该索引值下的Fragment

(5) getBackStackEntryCount():获取Fragment回退栈中的Fragment个数

 

 

Android Studio 快捷键

Alt+回车 导入包,自动修正

Ctrl+N   查找类

Ctrl+Shift+N 查找文件

Ctrl+Alt+L  格式化代码

Ctrl+Alt+O 优化导入的类和包

Alt+Insert 生成代码(如get,set方法,构造函数等)

Ctrl+Alt+B 查看类和接口被哪些子类实现

Alt+Insert可以生成构造器/Getter/Setter/Implement Methods 等

Ctrl+E或者Alt+Shift+C  最近更改的代码

Ctrl+R 替换文本

Ctrl+F 查找文本

Ctrl+Shift+Space 自动补全代码

Ctrl+空格 代码提示

Ctrl+Alt+Space 类名或接口名提示(自动显示xml中属性的值)

Ctrl+P 方法参数提示

Ctrl+Shift+Alt+N 查找类中的方法或变量

Alt+Shift+C 对比最近修改的代码

Shift+F6  重构-重命名

Ctrl+Shift+先上键

Ctrl+X 删除行

Ctrl+D 复制行

Ctrl+/ 或 Ctrl+Shift+/  注释(// 或者 )

Ctrl+J  自动代码

Ctrl+E 最近打开的文件

Ctrl+H 显示类结构图

Ctrl+Q 显示注释文档

Alt+F1 查找代码所在位置

Alt+1 快速打开或隐藏工程面板

Ctrl+Alt+ left/right 返回至上次浏览的位置

Alt+ left/right 切换代码视图

Alt+ Up/Down 在方法间快速移动定位

Ctrl+Shift+Up/Down 代码向上/下移动。

F2 或Shift+F2 高亮错误或警告快速定位

代码标签输入完成后,按Tab,生成代码。

选中文本,按Ctrl+Shift+F7 ,高亮显示所有该文本,按Esc高亮消失。

Ctrl+W 选中代码,连续按会有其他效果

选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示。

Ctrl+Up/Down 光标跳转到第一行或最后一行下

Ctrl+B 快速打开光标处的类或方法 

调试快捷键:

 

Ctrl+Shift+B:在当前行设置断点或取消设置的断点。
F11:调试最后一次执行的程序。
Ctrl+F11:运行最后一次执行的程序。
F5:跟踪到方法中,当程序执行到某方法时,可以按【F5】键跟踪到方法中。
F6:单步执行程序。
F7:执行完方法,返回到调用此方法的后一条语句。
F8:继续执行,到下一个断点或程序结束。

 

 

AndroidStudio的问题

1: Android报错Can't process attribute android:fillColor="@android:color/white"

报错:
Can't process attribute android:fillColor="@android:color/white": references to other resources are not supported by build-time PNG generation. File was preprocessed as vector drawable support was added in Android 5.0 (API level 21) See http://developer.android.com/tools/help/vector-asset-studio.html for details.

<path android:fillColor="@android:color/white"
        android:pathData="M20,11L7.8,11l5.6,-5.6L12,4l-8,8l8,8l1.4,-1.4L7.8,13L20,13L20,11z" />

问题原因:替换android:fillColor="@android:color/white"为android:fillColor="#ffffff"。在向量drawable中,fillColor必须明确设置属性,而不是引用其他资源

 

 

Android 横竖屏切换

https://www.jianshu.com/p/dbc7e81aead2

https://www.jianshu.com/p/58fbab11145a   Android 摄像头采集与数据处理

https://blog.csdn.net/zouxin_88/article/details/95985015   Android Studio调用USB摄像头

笔记camearX基本使用  https://blog.csdn.net/leo_1993/article/details/106968504

 

posted @ 2020-04-17 18:58  南极山  阅读(356)  评论(0)    收藏  举报