技术标签: android开发
AS版本 |
对应下载包 |
备注 |
3.0 |
最稳定的版本,正式版 |
|
3.1 |
比较稳定,正式版 |
|
3.2 |
比较稳定,正式版 |
|
3.4 |
正式版 |
使用AS开发android十分简单,除了创建Android项目,开发者只需要使用
activity_main.xml文件定义用户界面
MainActivity.java源代码编写业务实现。
首先是Project,这个显示的就是工程目录下的所有文件。
app目录是典型的Gradle项目,需要开发的内容都在这里面实现。
build.gradle是该项目的构建文件,注意,有项目的build.gradle和应用的build.gradle。添加依赖的时候避免出错。
build目录是该项目的构建结果,注意,有项目的build和应用的build。注意创建。
libs目录存放该项目所依赖的第三方库
src是项目的开发重点,源代码和资源都在该目录下。(截图省略了res资源的内容)
所有android项目构架都需要改插件。除非你自己去完成构建工作。
apply plugin: 'com.android.application'
接下来的是android的定义全局属性:
android {
//解决release编译时app:lintVitalRelease错误添加
lintOptions {
checkReleaseBuilds false
abortOnError false
}
//编译sdk版本,compileSdkVersion不低于targetSdkVersion
compileSdkVersion 28
//编译工具版本,一般高版本的编译工具编译较低版本的编译sdk
buildToolsVersion "29.0.2"
//默认配合
defaultConfig {
//应用id
applicationId "com.example.myapplication202001152138"
//SDK最低版本
minSdkVersion 27
//目标SDK版本
targetSdkVersion 28
versionCode 1
versionName "1.0"
//测试监控器
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
构建所需的依赖
dependencies {
//定义项目主源码的依赖
//下面配置依赖libs库目录下的所有jar包
implementation fileTree(dir: 'libs', include: ['*.jar'])
//android编译sdk的版本与android的全局配置一致。
//'com.android.support:appcompat-v7:*.1.0',不高于compileSdkVersion
implementation 'com.android.support:appcompat-v7:28.0.0'
//下面配置从中央仓库下载依赖jar包,该包对应com.android.support.constraint库
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
//定义androidTest下的代码依赖
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
main目录下有java目录和res目录,AndroidManifest.xml
layout子目录:存放界面布局文件
values目录:存放xml资源文件,比如字符串:string,颜色:color,尺寸:dimens等
drawable目录:定义了Drawable资源,对应drawable-ldpi,drawable-mdpi等
mipmap目录:as3.0出现的内容,现在该目录定义分辨率,drawable定义背景灯
android项目的系统清单文件。用来控制应用名称,图标,访问权限等整体属性。
而且android应用的四大组件:Activity,SErvice,ContentProvider,BroadcastReceiver都在其中配置。
/Users/lounious/Documents/android_iot_data/MyApplication202001152138/app/build/generated/not_namespaced_r_class_sources/debug/processDebugResources/r/android/support/下一系列文件夹下都有。
暂不接触。
android约定,将不同的资源放在不同的文件夹内,这样可以方便的使用aapt工具来扫描这些资源,并为他们声称对应的R.java文件。
常量文件string.xml
如下定义了两个字符串常量,这样在整个app中就可以使用语法@string/app_name,@string/click使用。
<resources>
<string name="app_name">My Application202001152138</string>
<string name="click">单击我</string>
</resources>
另外一种是分配组件标识符
通过在文件中这种定义方式,后面就可以在Java文件中调用activity的findviewbyid()方式来获取
在xml文件中则可以使用@id/<标识符代号>,即去掉+
android:id="@+id/show"
文件清单信息:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
//包分发方式
xmlns:dist="http://schemas.android.com/apk/distribution"
//工具包
xmlns:tools="http://schemas.android.com/tools"
//包名称
package="com.example.myapplication202001152138">
<dist:module dist:instant="true" />
//支持各种类型的屏幕
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
//应用程序的图标,标签主题等
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
//定义组件activity
<activity android:name=".MainActivity">
<intent-filter>
//定义activity的入口
<action android:name="android.intent.action.MAIN" />
//加载该应用时的activity
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
https://www.cnblogs.com/maydear/p/6849745.html
创建Basic activity后,报错,gradle无法打开自己的zip包。
默认新project不自动安装工程对应的android SDK,或者不自动匹配,安装。
AS默认安装最新的android SDK,但是一般在开发时要安装自己对应版本android SDK
打开偏好选项,安装对于你的SDK版本。
新版默认buildToolsVersion是使用本地最新版本。但最新版本可能低于选择的SDK API版本,需手动设置较低的compileSdkVersion版本。否则可能导致xml文件全部报错,preview打不开。
File-project structur-Modules,重新配置后会自动同步。
直接现象是activiyt_main.xml打开全是红色告警,右侧的preview打不开页面。
CompileSdkVersion与buildeToolVersion区别
1、CompileSdkVersion是你SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。
2、buildeToolVersion是你构建工具的版本,其中包括了打包工具aapt、dx等等。
这个版本号一般是API-LEVEL.0.0。 例如I/O2014大会上发布了API20对应的build-tool的版本就是20.0.0
3、可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的,反之则不行。
报错信息:com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
原因是gradle scripts--build.gradle(Module:app)中的报错:
compileSdkVersion 26 不低于 targetSdkVersion 26
implementation 'com.android.support:appcompat-v7:26.1.0',不高于compileSdkVersion
………………
………………
compileSdkVersion 26
defaultConfig {
applicationId "com.example.myapplication201912111032"
minSdkVersion 26
targetSdkVersion 26
………………
………………
implementation 'com.android.support:appcompat-v7:26.1.0'
在完成empty activity和basic activity之后,初始的界面是android界面,需要改成我们常用的project结构。
初始显示的android界面:
修改后的工程(project)结构
需要做下文件的同步,如下图。
另外是关闭offline work选项(保证依赖可以自动联网)
比如:import android.support.annotation.Nullable;
在build.gradle的项目依赖文件中加入依赖:
implementation 'androidx.annotation:annotation:1.1.0'
同上做Sync with File System。
其实第六坑和第七坑的问题是一样的。区别在于一个有添加了依赖没有同步,一个没添加依赖。
编译完成后在对应路径下能看到release或者debug包
release版本:/app-name/build/outputs/apk/release
debug版本:/app-name/build/outputs/apk/debug
常常使用很久的代码,编译不过。代码更新后重新编译的时使用。清除chche并重启build
设置编译变量,确保编译的包是debug/release
重新编译工程前先清除。
文章浏览阅读2.3k次,点赞5次,收藏25次。在jupyter notebook运行指定conda虚拟环境(附带sklearn安装教程)_新建的annaconda虚拟环境怎么用jupyter打开
文章浏览阅读3.8k次。软件实施工程师软件实施工程师的工作是软件产品服务主线的一个决定性环节,软件的成功离不开实施。主要负责工程实施: 包括常用操作系统、应用软件及公司所开发的软件安装、调试、维护,还有少部分硬件、网络的工作;负责现场培训: 现场软件应用培训;协助项目验收;负责需求的初步确认;把控项目进度;与客户沟通个性化需求;负责项目维护。软件产品。_软件实施指导
文章浏览阅读59次。转载请注明出处为KlayGE游戏引擎上一篇解决了透明物体的渲染问题;本文将挑战另一个实时渲染的神话,实时全局光照(GI)。实时全动态GI目前direct lighting在游戏中日趋成熟,比较前卫的游戏引擎已经不满足于diect lighting的效果了,逐渐开始尝试indirect lighting。早期的方法有通过离线渲染light map来实现静态场景、静态光源的GI。接着出现...
文章浏览阅读433次。Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。简言概括:Git就是分布式版本控制。_git必须用网络吗
文章浏览阅读2.1w次,点赞59次,收藏265次。目录0x01简单概述0x02安装环境1. kali设置2. 更新软件源中的所有软件列表3. 安装https协议及CA证书0x03安装步骤一、安装Docker1. 下载安装2. 查看Docker是否安装成功3. 查看docker基本信息二、安装vluhub1. 安装pip32. 安装Docker-Compose3. 查看docker-compose版本三、安装vulhub靶场1. 克隆下载2. 随便进入一个靶场环境目录3. 对靶场进行编译4. 运行此靶场5. 查看启动环境6. 通过浏览器访问7. 关闭此靶场环_vulhub靶场搭建
文章浏览阅读564次。原标题:「硬核测试:游戏鼠标精准度」赛睿SENSEI 310作为赛睿最热销游戏鼠标之一,310有SENSEI(对称)和RIVAL(右手)两个版本,均采用今天要测的TrueMove3引擎,是基于PMW3360打造的1:1真实追踪的引擎,虽然现在“1:1引擎”很多了,但TrueMove出来时这个概念还是很新颖的,尤其是提到了消除抖动,最大限度的保持理论和实际DPI的稳定性,那么到底是不是真的1:1呢,..._鼠标精确度检测软件
文章浏览阅读1.5w次。问题描述:在安装HDF5时候,同样遇到了上次没有遇到的坑。提示出粗:cmake: 13 (message) Could NOT find HDF5 (missing: HDF5_LIBRARIES HDF5_INCLUDE_DIRS)可是按照上次的笔记没有问题啊ubuntu安装HDF5链接库。怎么又抽风找不到了。问题解决:声明变量地址,即可解决。export PA_could not find hdf5
文章浏览阅读248次。vs2017 连接mysql 8.0我的环境:vs2017 64bit + mysql 8.0 64 bit(完整版)1.把 libmysql.dll 复制到 xxx.vcxproj 的同级目录,libmysql.dll 在安装mysql安装目录下找,我的在C:\Program Files\MySQL\MySQL Server 8.0\lib文件夹里。放到这个位置:libmysql.lib 拷贝到 与xxx.sln 同级目录的 自己新建的lib文件夹下(工程文件夹的其他位置均可,加载的时候对应好_libmysql.dll在哪
文章浏览阅读2.3w次,点赞5次,收藏31次。资料下载地址: http://www.dgyzt.com/share.php?id=7到目录:YT88-11-6\外壳加密11(推荐)\外壳加密工具11.6.exe 运行 “外壳加密工具11.6.exe” 其 对应的说明文件为:YT88-11-6\外壳加密11(推荐)\使用说明\使用说明.txtStep1:点击保护Step2:点击 添加密钥Step3:输入..._yt88
文章浏览阅读2.2k次,点赞5次,收藏2次。这个DAX公式采取类似Excel行上下文的功能,首先建立一个参数等于类别,在Rankx函数第一个参数添加一个Filter,实现同一类别内进行排名,即分层排名。上述DAX公式使用的是ALLEXCEPT函数,是ALL家族函数,功能是除了第二个参数【类别】都是行上下文计算排名,这样就实现了分组分层排名。如上例,Rankx只有前两个参数是必要的,实际可以输入五个参数,设置排序方式。通过在第一个参数添加函数可以实现进阶功能,例如分组分层排名,依旧使用上述数据。再使用Rankx计算排名。首先建立销售和度量值。_powerbi分组排名
文章浏览阅读894次。随便在以一个目录里新建一个快捷方式,填上ftp地址,如下:下一步,然后删除此快捷方式,那废的ftp就没了转载于:https://www.cnblogs.com/shuangfeike/p/11413734.html..._群辉的ftp文件点右键没有编辑功能
文章浏览阅读1.8k次。接口/** * 从页面接收的数据是多值数据,就是一个数组,它不想转成其它类型,直接把数组丢给dao */ public List<Emp> queryByArray(Integer[] empnos);EmpMapper.xml配置文件<select id="queryByArray" resultType="emp"> select <incl..._前端传入的是long型的数组后端在mybatis中怎么批量查询