赞
踩
AndroidStudio 已经迭代了好几个版本,功能已稳定,各种配置的方法在搜索引擎里基本都能找到,这里做一些简单汇总整理。
它是 Google 推出的功能强大的 android 开发工具,支持 Java 和 Koltin 语言。
官网的介绍:
Android Studio provides the fastest tools for building apps on every type of Android device.
去官网 https://developer.android.google.cn/studio 下载最新版本。
ConstraintLayout
的可视化操作等;安装的时候一直下一步即可,在选择 安装路径 和 SDK 的时候,默认放在C盘 ,建议放在D盘、E盘等,防止占用太多 C 盘空间,导致电脑卡顿。
详细步骤可参考 https://www.jianshu.com/p/492111393275
首次安装点击 Create a new Android studio Project ,非首次则执行 File – New – New Project
写上工程名、包名、选择存储路径等,
然后默认得到一个 Hello World 工程。
app/src/main
目录,也就是源代码目录;adb shell
就可以使用 adb 调试了;File – Settings – Appearance
File – Settings – Editor – Font
ps:代码文件格式一般保存为 UTF-8 无BOM 格式
SDK 默认放在C盘,可修改放到其他盘。
找到AS安装路径,如 D:\Android\Android Studio\bin ,
32位机器打开 studio.exe.vmoptions 文件 ,
64位机器打开 studio64.exe.vmoptions 文件,修改 Xms 、Xmx的值。
其中 -Xms 是JVM启动的起始堆内存,堆内存是分配给对象的内存。
其中 -Xmx 是 Java 虚拟机启动时的参数,用于限制最大堆内存。所以这里也需要更改。
这个修改可根据自己电脑的实际情况进行分配。
直接在AS里修改也可以,
重启后生效。
如下图几个选中项,是我自己添加的。
新增按钮、分隔线、为新按钮添加图标等
直接在AS里下载,File – Settings – Plugins ,搜索后安装即可。
从本地导入,然后根据路径选择对应的插件包
导入后重启生效。
模拟器默认放在 C:\Users\Administrator.android\avd ,占用C盘;把它改到其他盘。
方法;添加环境变量,
变量名:ANDROID_SDK_HOME
变量值:D:\Android\AVD ;这个是我的目录,也可以创建其他目录,把目录名对应上即可;
计算机右键–属性–高级系统设置–环境变量–系统变量,新增ANDROID_SDK_HOME
系统变量,对应的值添加为自己创建的目录。
参考 AndroidStudio修改虚拟机AVD路径_bctool的博客-CSDN博客_android studio更改虚拟机路径
https://blog.csdn.net/bctool/article/details/52714359
在AS里, Help – Keymap Reference 可以得到官方快捷键汇总表 IntelliJIDEA_ReferenceCard.pdf
这里列出部分:
AS 插件很多,可访问 https://plugins.jetbrains.com/ 了解。
插件介绍的相关博客也有很多,自己搜一下就知道了。
可参考
最好用的Android Studio插件
热门Android Studio 插件,这里是Top 20!
这里列出部分:
从其他地方导入的 AS 工程到自己电脑上,gradle 可能同步很久也不行,参照如下修改;
build.gradle
文件从服务器里导出的系统源码,同步之后可能缺失 google()
,参考注释 1、2 处添加即可。
buildscript { repositories { google()//1 jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.0.1' } } allprojects { repositories { google()//2 jcenter() } }
build.gradle
文件,修改 gradle 版本gradle-wrapper.properties
文件
把这两个地方改成自己的版本就可以了。如果不知道自己使用的是哪个版本,新建一个工程或者查看本地已同步的工程来确定上述两处应该设置的版本。
从服务器导入的应用源码,同步之后可能提示 AndroidManifest 里 sdkVersion 相关的警告,注释掉这一段
<!--<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="23" />-->
某些系统 API 会提示,此 API 最低支持是 14 ,当前工程最低支持是 1 ,修改 app 的 build.gradle 文件,设置 minSdkVersion 、targetSdkVersion 。把 compileSdkVersion 和 targetSdkVersion 保持一样的版本,消除 AS 的版本警告。
把要导入的依赖包(jar包、aar包)放到在目录 app/libs
下(有则直接放,没有就创建;一般创建为 lib 或者 libs),修改 app 的 build.gradle
文件
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation(name: 'name', ext: 'aar')
另一种方法是,把 xxx.jar 包放到 libs 目录下,对 xxx.jar 右键,add as library。
如上述 6.2 、6.3 的操作,改动到了编译相关的配置,都需要同步工程。
一般修改了 build.gradle 文件,AS 都提示要同步,Sync Now 即可。
也可以手动在 Toolbar 同步。
新建文件
在文件夹右键 New – File 即可,文件类型可以自己定义。
新建 Class 文件
同新建文件,在对应的文件夹右键 New – File – Java Class 即可。
新建 xml 文件
同新建文件,在 layout 文件夹右键 New – File – Xml 即可。
在文件里右键 – Local History – Show History 可以查看历史修改记录,方便对比、还原代码。
AS 关联 git 仓库或者项目后,可以很方便的进行 git 操作。
在 VCS – Get from Version Control 里操作,设置远程仓库URL 和本地仓库地址,Clone 即可。
这样就关联成功了,关联成功后在操作栏会出现 pull 、push 的图标,也可以进行分支等操作。
参考 AndroidStudio怎样和Git关联_u010680097的专栏-CSDN博客_as关联git
https://blog.csdn.net/u010680097/article/details/52768376
有些库可能因为网络因素无法引用,可使用国内镜像,修改后同步工程即可。
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } //google() //jcenter() } dependencies { classpath "com.android.tools.build:gradle:4.0.1" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } //google() //jcenter() } }
参考 AndroidStudio maven jcenter google 等仓库配置国内镜像_ezconn的博客-CSDN博客_maven google
https://blog.csdn.net/ezconn/article/details/90794869?d=1594366163619
修改了工程的配置之后可能出现奇怪的错误,多次同步也无效的话清空缓存即可。
具体操作为 Build – Clean Project / Rebuild Project 。
如果这个操作也无效,尝试 File – Invalidate Caches / Restart
默认 build 生成的 apk 名为 app-debug.apk ,修改为自己的。修改 app 的 build.gradle 文件,
在 android{ }
里添加如下
android.applicationVariants.all {
variant ->
variant.outputs.all {
//这里修改apk文件名
outputFileName = "ApkName_${variant.name}_v${variant.versionName}.apk"
}
}
variant.name 对应编译的版本, release 或者 debug ;
variant.versionName 对应 defaultConfig{ }
里的 versionName 。
Build Variant 栏可选择编译的版本,debug 或者 release 版本。
打了系统签名的应用,拥有系统级权限,可以使用系统级API,权限很高。
方法总结:
声明应用是系统级app ,android:sharedUserId="android.uid.system"
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.xxx.yyyyy"
android:sharedUserId="android.uid.system">
//省略其他
</manifest>
用 keytool-importkeypair-master 工具、系统签名文件 platform.x509.pem 、platform.pk8 生成 jks 或者 keystore ,
在 Linux 环境下按照实际配置执行如下命令得到 test.jks 文件;
./keytool-importkeypair -k test.jks -p yourpassword -pk8 platform.pk8 -cert platform.x509.pem -alias testalias
其中,test.jks 为生成的 jks,test是 jks 的名称,随便取;
jks 的密码为 yourpassword,自己设置,一般为字母和数字;
testalias 为 jks 的别名,随便取;
导入 jks ,Build – Generate Signed Bundle / APK – apk – Choose existing , 导入外部的jks 。 如果是
要创建新的,选择 Create new 。
将生成的 test.jks 放到 app/ 目录下,build.gradle 配置 signingConfigs { }
,
android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "com.xxx.test" minSdkVersion 23 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } signingConfigs { release { storeFile file('test.jks') storePassword '123456' keyAlias 'testalias' keyPassword '123456' } // 如果 debug 版本也打签名,则添加这一部分 debug { storeFile file('test.jks') storePassword '123456' keyAlias 'testalias' keyPassword '123456' } // 如果 debug 版本也打签名,则添加这一部分 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
这样编译出来的应用就是系统应用了。
具体可参考 使用AndroidStudio生成打有系统签名的apk
用一套代码编译生成不同发布渠道的应用,应用的功能大体一致,可配置不一样的签名、包名、应用图标等。
通过配置 productFlavors 来实现,app 的 build.gradle 示例
apply plugin: 'com.android.application' android { compileSdkVersion 30 buildToolsVersion "30.0.0" defaultConfig { applicationId "com.test.multibale" minSdkVersion 23 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } signingConfigs { // 只是用来做演示,没有特地生成签名文件 MultiBale { storeFile file("src/main/multibale.jks") storePassword "mul123" keyAlias "keymul" keyPassword "mul123" // 开启 V2 签名 v2SigningEnabled true } ktc { storeFile file("src/ktc/multibalektc.jks") storePassword "ktc123" keyAlias "keyktc" keyPassword "ktc123" v2SigningEnabled true } ktc_v2 { storeFile file("src/ktc/multibalektc.jks") storePassword "ktc123" keyAlias "keyktc" keyPassword "ktc123" v2SigningEnabled true } } flavorDimensions "app" sourceSets { MultiBale { java.srcDir('src/main/java') res.srcDir('src/main/res') // assets.srcDir('src/main/assets') // manifest.srcFile('src/main/AndroidManifest.xml') } ktc { java.srcDir('src/ktc/java') res.srcDir('src/ktc/res') // assets.srcDir('src/ktc/assets') // manifest.srcFile('src/ktc/AndroidManifest.xml') } ktc_v2 { java.srcDir('src/ktc_v2/java') res.srcDir('src/ktc_v2/res') // assets.srcDir('src/ktc_v2/assets') // manifest.srcFile('src/ktc_v2/AndroidManifest.xml') } } productFlavors { MultiBale { applicationId "com.test.multibale" dimension "app" versionCode 1 versionName "1.0" signingConfig signingConfigs.MultiBale } ktc { applicationId "com.test.multibale.ktc" dimension "app" versionCode 1 versionName "1.2" signingConfig signingConfigs.ktc } ktc_v2 { applicationId "com.test.multibale.ktc_v2" dimension "app" versionCode 2 versionName "2.0" signingConfig signingConfigs.ktc_v2 } } applicationVariants.all { variant -> variant.outputs.all { outputFileName = "${variant.productFlavors[0].name}_v${variant.productFlavors[0].versionName}_${releaseTime()}.apk" } } } dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.material:material:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。