标签: Android 开发

android应用程序开发环境建立

之前一直在linux下面进行开发,用的都是c语言,自己无java基础,心血来潮只想玩玩,无其他追求,现记录当做笔记。

言归正传,要进行Android应用程序开发,首先的建立开发环境,参考网上资料,建立了一个自己的开发环境(vista系统),步骤如下:

1》安装java开发工具包

java开发工具包包括java开发工具JDK(JDK5 或 JDK6)、java运行环境JRE,在我的vista系统中JRE是随机附带的,而且实时升级,所以只需要安装JDK,window下面JDK的安装相当简单,下载到相应的安装文件并双击等待即可(我下载的JDK安装文件为:jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,可以用google搜索下载)。之后把JDK、JRE相应的bin目录添加到系统环境变量PATH中,这样在dos的命令窗口中,不需要进入到JDK、JRE的bin目录就可以执行相应的操作。

2》下载Eclipse

进入Eclipse的官网:http://www.eclipse.org/downloads/下载集成开发环境Eclipse,下载时请选择“Eclipse IDE for Java Developers”,我下载了安装文件压缩包eclipse-java-helios-win32.zip,把该包放到某个目录下面如E:/java 解压,在E:/java目录下面出现eclipse目录,其中Eclipse的运行文件Eclipse.exe即在目录E:/java/eclipse中,双击Eclipse.exe即可启动集成开发环境eclipse。

3》安装Android开发工具扩展包ADT

启动eclipse,进入“Help->Install New SoftWare”弹出Install对话框,点击“Add…”弹出Add Repository对话框,在Location中输入ADT的网址http://dl-ssl.google.com/android/eclipse/site.xml ,之后点击ok确认,等待在线等待Eclipse搜索合适的ADT版本,之后搜索到该链接下的ADT:“Developer Tools”,选中该组件,确认“Install”按钮。几个下一步之后eclipse会自动安装ADT包,安装完成后eclipse提示重启,按“Yes”键确认重启,即可完成ADT的在线安装。

4》下载设置Android软件开发包SDK

说明下,我在Android官网上未找到合适的SDK版本,google到了一个地址:http://www.163pan.com/files/g0x000p0y.html,进入该URL,点击下载android-sdk-windows-1.5_r3.zip,把该压缩包放入到E:/java解压,在E:/java目录下出现android-sdk-windows目录。

启动eclipse,进入“Windows->Preferences” ,弹出Preferences对话框,在该对话框左边的树形机构中选择Android,点击“Browse…”按钮,选择刚才SDK解压的目录E:/java/android-sdk-windows确认,在Preferences对话框中确认”ok”,这样就可以把软件开发包SDK设置好。

在完成以上步骤后,Android的开发环境就建立好了,可以启动eclipse,进入“File->New->Project…”弹出New Project对话框,观察对话框是否和下图1一致,若能在该对话框中观测到Android 》Android Project则说明Android开发环境建立成功!

%title插图%num

图1 NewProject对话框

之后,可以利用SDK里面的Android应用程式工程实例,启动Android模拟器,如图2所示,具体步骤以后详述。

%title插图%num

图2 Android模拟器

Android模拟器的启动还需要进行一些设定,由于本文的主要内容在于前4步,所以这个过程将不再详述,在以后的文章中,如果涉及到这个问题我将再介绍。

后续:

又参考了网上的其他几篇文章,把SDK升级到了*新版本,模拟器的现实分辨率可以调到854*480,恰好我*近买了moto的milestone,刚好和我的真机匹配!google的东西做的真棒,模拟器做的这么的逼真,真的很方便开发者!我顺便把手机qq也装入到了模拟器中,详细步骤如下:

1》更新SDK

参考了这篇文章:http://www.javaeye.com/topic/520189,首先进入http://androidappdocs.appspot.com/sdk/index.html下载*新的SDK升级引导包,需要注意的是:首先这个包只有24M,不是真正的SDK包,只是一个引导在线升级的包;其次这个包是实时更新的,所以可能你下载的版本和本文中所述的版本不一致,我所下载的版本为:android-sdk_r06-windows.zip。

把包android-sdk_r06-windows.zip解压到E:/java/android-sdk-windows中,启动eclipse,进入“Window->Preferences” ,弹出Preferences对话框,在该对话框左边的树形机构中选择Android,点击“Browse…”按钮,选择刚才SDK解压的目录E:/java/android-sdk-windows确认;进入“Window->Android SDK and AVD Manager”选项卡,在该选项卡的左边选中“Installed Packages” 之后点击选项卡下发的“Update All…”,之后就可以一致等待直到在线升级SDK升级成功。

2》创建模拟器AVD

在SDK包升级成功后,会在E:/java/android-sdk-windows/目录下出现一个tools子目录,该目录下面存放的是android的命令行工具,*好把E:/java/android-sdk-windows/tools加入到环境变量PATH中,方便命令行操作。

通过命令行可创建模拟器AVD:

1:观察模拟器类型

在命令行中输入android list target ,显示:
Available Android targets:
id: 1 or “android-2”
Name: Android 1.1
Type: Platform
API level: 2
Revision: 1
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 2 or “android-3”
Name: Android 1.5
Type: Platform
API level: 3
Revision: 4
Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 3 or “android-4”
Name: Android 1.6
Type: Platform
API level: 4
Revision: 3
Skins: HVGA (default), QVGA, WVGA800, WVGA854
id: 4 or “android-5”
Name: Android 2.0
Type: Platform
API level: 5
Revision: 1
Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854
id: 5 or “android-6”
Name: Android 2.0.1
Type: Platform
API level: 6
Revision: 1
Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854
id: 6 or “android-7”
Name: Android 2.1-update1
Type: Platform
API level: 7
Revision: 2
Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854
id: 7 or “android-8”
Name: Android 2.2
Type: Platform
API level: 8
Revision: 2
Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854

2:创建id为7的模拟器avd

在命令行中输入android create avd -p c:/avd –target 7 –name test -s WVGA854

其中:-p代表模拟器的路径;–target代表模拟器的id;–name代表模拟器的名称;-s代表模拟器的皮肤(分辨率等),至此模拟器创建成功。

3》新建工程

启动eclipse,进入“New->Project…”,弹出“New Project”对话框,在该对好框中选择“Android->Android Project”,点击该选项卡的“Next”按钮,进入Android工程的创建,按照图3所示,使用SDK的exmaple目录下的已经存在的资源来创建工程,其中location中选择E:/java/android-sdk-windows/samples/android-8/ApiDemos,其他项按图3填、选。

%title插图%num

图3 利用SDK开发包中资源创建工程

4》设置工程运行/调试参数

进入“Run->Debug Configurations…”弹出Debug Configurations选项卡,右击该选项卡的左边菜单“Android Application”选择“New”,创建一个新的运行配置文件,各项的填、选如图4所示:

%title插图%num

图4 运行配置设置

5》运行工程

在eclipse的导航窗口中选中工程ApiDemos,进入“Run->Run”,刚开始设置好的avd模拟器就会启动起来,如果5所示。在该过程中,我遇到了一个问题,即模拟器显示的过大,撑满了我的电脑显示器,可以通过一下方法解决:http://android.yaohuiji.com/archives/151。

%title插图%num

图5 android模拟器启动画面

6》安装移动qq到模拟器

1.下载移动qq的安装文件:MobileQQ1_0(Android)_beta2_build0151.apk,可以通过google搜索得到;

2.把上述文件放置到SDK开发包相关位置:E:/java/android-sdk-windows/tools;

3.进入dos工具,cd到E:/java/android-sdk-windows/tools目录;

4.输入命令:adb install MobileQQ1_0(Android)_beta2_build0151.apk,等待片刻即可安装好移动qq。

注:应用程序的安装参考http://www.shouji56.com/ruanjian/article/3121.html。

之后就可以在模拟器的桌面上看到移动qq的快捷方式,点击登录,和我用milestone登录移动qq一样,值得体验!!!如图6所示:

%title插图%num

图6 移动qq快捷方式

后记

通过这一两天的折腾,Android应用程序开发环境算是搭建好了,以后的工作就是学习java,Android应用程序开发了。

android 开发 能在按钮控件内 放布局容器的按钮控件库么?

android 开发里的原生按钮控件,不能像 windows 的 wpf 界面开发一样,直接在按钮( Button,radioButton,radioButton )里面放布局容器,然后再在这个布局容器里面进行配置,进而定制按钮。

wpf 开发的按钮( Button,radioButton,radioButton ),本质上就是一个容器,在按钮容器里面放什么都可以,但又不影响用户对按钮本身的使用,用此方式轻松地对按钮外观进行定制。那有 android 第三方的控件库中,有没有这种容器按钮体系的控件库?

举个例子,比如在 Button,RadioButton,RadioButton 内部显示两行不同内容的文字,并且两行文字的外观是不一样的,一行是红色,另一行是蓝色。

在 wpf 里很轻松,直接在按钮内部放置布局容器,然后放两个显示文字的控件就可以。但是 android 开发要怎么做呢?

自定义控件么?但我更想知道有没有已经实现的第三方控件库的方案

 

11 条回复  •  2021-03-10 21:06:15 +08:00

1 viator42   20 天前 如果是 flutter 的话就能做到,Android 原生只能变通着解决,用 Layout 代替 Button

2 Tenma   20 天前 Android 实现方式肯定不能和 WPF 一样啊,但是它本质上每个空间都是 View,所以你不需要用 Button,用 Layout 之类一样的,*后给他加个点击事件的监听即可。

3 tctc4869   20 天前 @viator42 @Tenma 我知道 android 只能用 layout 变通实现,不过这个有成熟的实现方案,也就是控件库?

4 yolee599   20 天前 新建一个类继承,覆盖原有的绘制方法

5 john6lq   20 天前 via iPhone https://qmuiteam.com/

6 ilotuo   20 天前 仅针对例子, SpannableString 可解?

7 lwlizhe   20 天前 一般来说,都是自定义吧~ 控件库远远满足不了设计骚动的心~~

8 dreamist   20 天前 题主具的这个例子,正确的做法是 Button + SpannableString 实现。其他复杂的情况,Button 本身是不支持的。在 Android 里面其实是严格区分 ViewGroup 和 View 的,能够装下其他布局的,得是一个 ViewGroup 。

9 tctc4869   20 天前 @dreamist 那有继承于 ViewGroup 抽象类下的容器按钮的控件库么

10 HangoX   20 天前 android 原生只能用 Layout 自定义实现,用新的 JetpackCompose 可以实现

11 dreamist   18 天前 @tctc4869 这个不清楚了,一般都是自定义一个 ViewGroup 实现就行了,实现起来也不难。

Android 开发 还有什么能够增强编速度的插件或者做法呢?

问题经过

3 年前用过 freeline ( https://github.com/alibaba/freeline) [可以 1-3 秒编译生效,大部分场景不用重启 APP ] 

真的很惊艳,和 iOS 中的 Injection 有的一比

可是随着 alibaba 的放弃维护,freeline 也无法使用

项目现在能用 aar 的也都用 aar 了

在此请教下各位大佬,2021 年了 Android 现在有什么办法能够加快编译呢

目前所用的配置

AndroidStudio 版本

Android Studio 4.1.2
Build #AI-201.8743.12.41.7042882, built on December 20, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1237M
Cores: 8
Registry: ide.new.welcome.screen.force=true, external.system.auto.import.disabled=true
Non-Bundled Plugins: GsonFormatPlus, org.jetbrains.kotlin, wu.seal.tool.jsontokotlin

语言用的是纯 kotlin
gradle 使用得版本是 6.5
build.gradle 中能配置的也都配置了


gradle.properties 配置

android.useAndroidX=true
android.enableJetifier=true
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4096m -XX:+UseParallelGC -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

#开启 gradle 缓存
org.gradle.caching=true
android.enableBuildCache=true

#开启 kotlin 的增量和并行编译
kotlin.incremental=true
kotlin.incremental.java=true
kotlin.incremental.js=true
kotlin.caching.enabled=true
kotlin.parallel.tasks.in.project=true


#优化 kapt
kapt.use.worker.api=true
kapt.incremental.apt=true 
kapt.include.compile.classpath=false
kapt.verbose=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official

        
#优化 databinding
android.lifecycleProcessor.incremental=true
android.databinding.incremental=true
android.injected.testOnly=false

#显示过时的调用
android.debug.obsoleteApi=true

==虽然已经做了上述的配置但是编译一次还是大约需要 15-30s 左右==

第 1 条附言  ·  5 天前

找到一张优化的图,可以按照上述一步一步的优化

image.png

19 条回复  •  2021-03-24 09:47:34 +08:00    
1 AoEiuV020   10 天前 同求,我现在基本上编译时就拿起手机看看或者刷刷 v2ex,    
2 systemcall   10 天前 转鸿蒙开发,用 Harmony Studio 试试    
3 gainsurier   10 天前 via iPhone 才十几秒,够幸福了    
4 stardust21   10 天前 十几秒很快了,可以尝试按功能分几个 module,做某个功能的时候单独编译其中的一个    
5 winterbells   10 天前 https://developer.android.com/studio/preview/features#use-java-11 你试试,公司项目编译大概 10%提速 还有一个 https://docs.gradle.com/enterprise/gradle-plugin/ 没验证过有什么差别 我们年前就用 AS Canary 版本了( bug 不少……),gradle 用 nightly,JDK 11 编译还是要六七分钟起步,有编译缓存就无所谓了    
6 tanranran   10 天前 @stardust21 #4 项目还没有大到要拆 module 的时候,其实现在相当于是当单一的 module 编译一次需要几十秒    
7 john6lq   10 天前 via iPhone Offline mode 打开    
8 xloger   10 天前 十几秒是真的很快了,我记得前几年 Gradle 没优化好的时候,编译一次得两分钟吧    
9 hotsymbol   10 天前 转 Flutter 吧    
10 charliecaptain   10 天前 via Android 我们项目怎么优化都是 7 分钟,摸鱼儿不好吗    
11 kingzeus   10 天前 把项目拆成 module,分布式编译,*后是加个本地 maven 镜像    
12 tanranran   10 天前 @john6lq #7 打开了    
13 tanranran   10 天前 @hotsymbol #9 有考虑中    
14 tanranran   10 天前 @systemcall #2 难道你不知道 Harmony Studio 基于开源版的 Android Studio 开发的吗    
15 tanranran   10 天前 @xloger #8 有一说一,几年前的比现在的快多了    
16 HongJay   10 天前 十几秒你还想怎么样    
17 tanranran   10 天前 @HongJay #16 想达前端热更新,Flutter 热重载的效果,其实这个是能做到的比如 [freeline] [ instant run] ,但是如今都不可用    
18 systemcall   10 天前 @tanranran #14 胡说,明明是 Google 偷了牢厂的代码    
19 Porster   5 天前 用 M1 芯片开发的感受:*次编译慢点,后面改代码运行都是 10s 编译完成。不需要加入这些提升编译速度的手段了。

 

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速