Java Development Kit(Java 开发工具包)的缩写。用于 java 程序的开发,提供给程序员使用。和JDK有个比较接近的名词叫做JRE,JRE的全称是Java Runtime Environment,JRE是java程序运行时需要提供的运行时环境,很显然JDK会包含JRE。对于不需要开发java程序(APP或者前端后台服务器等),而是只需要提供java程序运行环境的只要有JRE就可以了。而对于需要开发java的我们来说,电脑环境中必须有JDK环境才能进行开发。
添加环境变量 CLASSPATH 赋值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
添加环境变量 JAVA_HOME 赋值 E:\android\jdk1.8.0_251
添加环境变量 path 增加 %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin
class path
java home
java path
java -version
,最后显示如下图,则代表JDK环境设置完成
java ver
cmdline
把解压之后的目录添加到环境变量path中,添加E:\android\sdk\tools和E:\android\sdk\tools\bin
tools path
sdkmanager --list
会显示出你已经安装的包,和其他没有安装的包,如下图所示,其中的Installed packages是已经安装的包列表,而Available Packages是未安装的包列表,不是说所有包都必须安装,安装我们需要的包即可
sdk list
使用sdkmanager --list
输出可以安装的包,我们找到cmdline-tools,我们这里安装最新的版本latest 。找到platform-tools并进行安装。这里的cmdline-tools其实就是我们下载的命令行工具,只是为了符合sdk的路径添加的path。而platform-tools则是我们app调试需要用到的工具,比如adb、fastboot等
cmdline
platform tools
通过sdkmanager --install cmdline-tools;latest platform-tools
添加环境变量E:\android\sdk\cmdline-tools\latest\bin和E:\android\sdk\platform-tools到path
sdkmanager --list
输出可以安装的包,我们找到build-tools;28.0.3和platforms;android-28,build-tools;28.0.3是编译时对应的编译工具,platforms;android-28主要是系统的jar包,
build
platform
sdkmanager --install build-tools;28.0.3 platforms;android-28
sdkmanager --list
输出可以安装的包,我们找到emulator和system-images;android-28;google_apis_playstore;x86_64,emulator是模拟器,而system-images;android-28;google_apis_playstore;x86_64则是系统的镜像文件,镜像可以随意,只要是支持android-28的就可以
emulator
image
sdkmanager --install emulator system-images;android-28;google_apis_playstore;x86_64
这里我们为什么要GRADLE_USER_HOME,其实这个就算不设置也是可以的没有什么问题,因为会默认在用户目录下创建一个.gradle文件夹由于存放gradle的各个版本,比如C:\Users\Administrator.gradle,但是这样会有两点不好,1、切换用户时需要重新下载更新。2、时间长了,版本多了会占用c盘存储,所以我设置了环境变量GRADLE_USER_HOME,并赋值为E:\android\gradlepro,这样就好了
gradle
最后sdk的目录也完成了,如下
adir
点击扩展按钮或者通过crtl+shift+x快捷键进入插件搜索界面,输入android回车搜索,一会就会出现如下图所示界面,点击边上的安装按钮进行安装,安装好后,安装按钮会消失
Android for VS Code
git clone https://gitee.com/oschina/git-osc-android.git
通过快捷键F1,弹出下图所示界面,选择配置生成默认任务,选择创建task.json,再选择other其他
f1
taskorg
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "AppSignKey",
"type": "shell",
"command": "keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias",
"windows": {
// "command": "${workspaceRoot}\\shell.bat first"
"command": "cd gitoscandroid; del my-release-key.jks; keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias"
// keytool -genkey -v -keystore release.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
// keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "CleanApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew clean",
"windows": {
// "command": "${workspaceRoot}\\shell.bat first"
"command": "${workspaceRoot}\\gradlew.bat clean "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "BuildDebugApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew assembleDebug ",
"windows": {
// "command": "${workspaceRoot}\\shell.bat first"
"command": "${workspaceRoot}\\gradlew.bat assembleDebug "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "InstallDebugApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew installDebug ",
"windows": {
"command": "${workspaceRoot}\\gradlew.bat installDebug "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
{
"label": "InstallReleaseApp",
"type": "shell",
"command": "${workspaceRoot}/gradlew installRelease ",
"windows": {
"command": "${workspaceRoot}\\gradlew.bat installRelease "
},
"group": "test",
"presentation": {
"reveal": "always",
// "panel": "new"
}
},
]
}
AppSignKey 通过命令行生成签名文件
CleanApp 通过命令行清除生成目录
BuildDebugApp 通过命令行编译调试APP
InstallDebugApp 通过命令行把调试APP安装到手机或虚拟机
InstallReleaseApp 通过命令行安装签名后的发布APP
task list
- 通过jcenter下载文件失败,这里需要把jcenter()修改成
maven { url 'https://maven.aliyun.com/repository/jcenter' }
//maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
- local.properties文件找不到,这是因为码云用local.properties控制某些项目在本地而不提交到服务器,这里我们只要新建一个local.properties文件,并输入如下内容
RELEASE_STORE_FILE="my-release-key.jks"
RELEASE_STORE_PASSWORD=vencol123
RELEASE_KEY_ALIAS=my-alias
RELEASE_KEY_PASSWORD=vencol123
- Keystore file "my-release-key.jks" not found for signing config 'release'.,修改app目录下的build.gradle文件,把signingConfigs里面配置的storeFile file(propertyStoreFileStr)替换成storeFile file("my-release-key.jks")。my-release-key.jks这个和build.gradle在同一层目录下
我们按下F1,接着输入key,接着弹出如下界面,我们在这里选择open keyboard shortcuts(json)的选项,接着弹出keybinding.json文件
key
{
"key": "F6",
"command": "workbench.action.tasks.runTask",
"args": "InstallReleaseApp"
},
{
"key": "F7",
"command": "workbench.action.tasks.runTask",
"args": "BuildDebugApp"
},
{
"key": "F8",
"command": "workbench.action.tasks.runTask",
"args": "CleanApp"
},
{
"key": "F9",
"command": "workbench.action.tasks.runTask",
"args": "AppSignKey"
},
F6--->InstallReleaseApp,安装发布版本的APP到手机,需要先生成秘钥
F7--->BuildDebugApp,编译调试版本的APP
F6--->CleanApp,清除APP的编译信息
F6--->AppSignKey,生成秘钥
在安装了Android for VS Code插件的前提下,通过运行---》添加配置选项---》android,弹出launch.json文件
add config
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "android",
"request": "launch",
"name": "Android launch",
"appSrcRoot": "${workspaceRoot}/gitoscandroid/src/main",
"apkFile": "${workspaceRoot}/gitoscandroid/build/outputs/apk/debug/app-debug.apk",
"adbPort": 5037,
"preLaunchTask": "InstallDebugApp"
},
{
"type": "android",
"request": "attach",
"name": "Android attach",
"appSrcRoot": "${workspaceRoot}/gitoscandroid/src/main",
"adbPort": 5037,
"processId": "${command:PickAndroidProcess}"
}
]
}
adb
分析AndroidManifest.xml可知,码云APP的首页是WelcomePage,这里我们找到WelcomePage的源码,及在其启动的时候打上调试断点,看下是否能断点调试,选择Android launch,按下F5选择进行调试如下图所示
debug
app已经正常启动了,但是为什么没有进入我们的调试断点?这个经查找发现,码云的大佬开发是直接把debug的配置配置成release配置的,也就是debug和release是一样的没有调试信息在app里面,因为无法在线调试,下面是其build.gradle的信息
nodebug
Launch failed: APK read error. ENOENT: no such file or directory, open 'Gbuild\outputs\apk\debug\app-debug.apk'
avdmanager create avd -n base -k "system-images;android-28;google_apis_playstore;x86_64 -p "E:\android\avd" -c 1000M
参数-n,表示的是创建后avd镜像的名称
参数-k,表示的是用于创建的基础镜像,这个选择我们之前下载的镜像
参数-p,表示avd镜像放置的目录
参数-c,表示的是创建avd镜像系统的大小
emulator -avd base
avd
接着我们到vscode代码目录下,按下F5,如果没有连接手机也没有启动的模拟器,需要先启动模拟器
emulator
'gitoscandroid:debug': Could not find build of variant which supports density 160 and an ABI in x86_64, x86
,是因为在build.gradle,没有配置对x86的支持,这里我们直接添加即可abiFilters 'armeabi-v7a','x86'
这里介绍下vscode还可以通过react-native混合开发原生的APP和移动APP,对应的android目录下可以放置安卓原生的工程文件,但是要修改build.gradle文件支持react-native插件。但是有个奇怪的问题,在vscode里面通过react-native调试APP的时候,似乎必须要把mainactive设置为顶层界面才可以调试,具体可以参考网址:https://blog.csdn.net/qq_27082837/article/details/57409212
https://www.zhangshengrong.com/p/On1vqPvxXy/