`
wc0903
  • 浏览: 81927 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

第六章 使用命令行工具与Android模拟器——上

阅读更多

关键技能和概念

l        使用Android SDK命令行工具

l        创建命令环境

l        通过shell导航Android服务端

l        Linux中使用Android SDK

目前,本书已经涵盖了一些宽泛的主题来让你了解并运行Android平台。现在,你应该使用Eclipse创建和运行小Android应用非常顺手。你创建一个新项目,编辑main.xml文件和<activity>.java文件,并重编译R.java文件。这就是你创建Android应用的基本技能。

本章中,你会通过试验命令行应用开发来扩展和丰富你的技能。Android开发不应该仅限于Eclipse IDEAndroid SDK提供了大量的命令行工具,帮你脱离图形化IDE Eclipse开发丰富的应用。你将用这些命令行工具,现在Windows中后在Linux中,创建,编译和运行一个Hello World!应用

Windows命令行创建Shell Activity

Android SDK发布了很多工具帮助你创建和编译Android 应用。这些工具适当的帮助那些不愿或没条件使用GUI IDE的用户。然而,如果在用Eclectic完成所有Abdominal开发工作,你也应该重视Android SDK命令行工具和它们的功能。

当你运行Android相关功能时,如创建一个Android项目或在Android模拟器中运行一个应用,你实际上是在调用Android命令行工具。无论是从命令行接口还是从一个GUI IDE运行,这些Android命令行工具才是Android SDK的真正核心。

下面一节,我阐明Android工具的功能。ActivityCreator.bat是个创建项目所需的Activity shell的有用工具。

 

运行ActivityCreator.bat

ActivityCreator.bat应该在Android SDK../tools/目录下。大部分前向命令行工具都处在这个tools目录的根部。“前向”工具是依次调用../tools/中的其它深层目录工具的工具。ActivityCreator.bat是运行时从根目录调用其它工具的例子。使用viNotepad、或者任何文本编辑器,打开ActivityCreator.bat;它应该包含下面的代码:

@echo off

rem Copyright (C) 2007 Google Inc.

rem

rem Licensed under the Apache License, Version 2.0 (the "License");

rem you may not use this file except in compliance with the License.

rem You may obtain a copy of the License at

rem

rem http://www.apache.org/licenses/LICENSE-2.0

rem

rem Unless required by applicable law or agreed to in writing, software

rem distributed under the License is distributed on an "AS IS" BASIS,

rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

rem See the License for the specific language governing permissions and

rem limitations under the License.

rem don't modify the caller's environment

setlocal

"%~dp0\lib\activityCreator\activityCreator.exe" %*

浏览所有rem声明(批处理文件注释声明),你会看到在文件尾部有一行执行代码。ActivityCreator.bat用户调用../tools/lib/activityCreator/目录中的ActivityCreator.exeActivityCreator.bat实际上仅仅是SDK中其它工具的前端。

那么,ActivityCreator.bat(或者ActivityCreator.exe)到底做什么?ActivityCreator用来创建你的开发环境,即创建开发应用所需的初始文件。目录结构和第五章探讨的相同。ActivityCreator.bat创建R.javaAndroidManifest.xml和应用所需的全部支持文件。

现在进入命令行环境,探索ActivityCreator

从开始菜单,点击Run,在Run对话框中输入CMD或者COMMAND并点击OK

执行该命令启动如下所示的命令窗口。该窗口就是早期的DOS操作环境。

 

当打开命令窗口,在> 提示后输入ActivityCreator

.运行ActivityCreator命令,实际是运行ActivityCreator.bat文件,产生如下输出:

Activity Creator Script

Usage:

activityCreator [--out outdir] [--ide intellij] yourpackagename.ActivityName

Creates the structure of a minimal Android application.

The following will be created:

- AndroidManifest.xml: The application manifest file.

- build.xml: An Ant script to build/package the application.

- res : The resource directory.

- src : The source directory.

- src/your/package/name/ActivityName.java the Activity java class. packageName

is a fully qualified java Package in the format <package1>.<package2>... (with at

least two components).

- bin : The output folder for the build script.

Options:

--out <folder>: specifies where to create the files/folders.

--ide intellij: creates project files for IntelliJ

该输出仅仅提示你需要输出更多的信息来运行ActivityCreator。更具体点说,你需要传入你创建shell应用的目录位置的命令。

回到命令窗口,运行带如下选项的ActivityCreator(如果你在Unix/Linux环境中编程,ActivityCreator也接受Unix风格的路径参数):

--out c:\AndroidHelloWorld\android_programmers_guide.HelloWorldCommandLine

--out项告诉ActivityCreator你想输出内容。

这个命令项带两个参数,<文件><package.activity>。上一行的第一部分告诉ActivityCreator在不存在的文件c:\AndroidHelloWorld中创建shell应用。

--out项的第二个参数是包名和活动名。按前一节中的创建规则,本例使用android_programmers_guide 作为项目的包名和 HelloWorldCommandLine作为项目的活动名。

用新的命令行选项和参数运行ActivityCreator。你会看到如下输出:

 

下一节会讲解ActivityCreator创建的文件,因为他们和Eclipse中创建的有所不同。

 

项目结构

ActivityCreator创建了大量供你使用和开发的目录和文件。浏览c:\AndroidHelloWorld目录,研究它的结构。ActivityCreator创建的结构如下所示:

 

因为你是在Eclipse环境外工作,所以你的环境会稍微不同。当你使用IDE工作时,如Eclipse,部分功能是在后台执行。由于你是脱离IDE工作的,所以ActivityCreator创建了一个文件,列出了创建项目时编译器需要做的内容。手动运行时,ActivityCreator为项目创建了build.xml文件。当你用Eclipse创建Android项目时不会创建该文件。它包含了一组指令,即阐明如何将你的.java文件转换成一个功能性Android项目。

build.xml文件告诉编译器如何创建你的应用。本例中的编译器是Apache ANT,一款基于java的利用build脚本文件的工程编译工具。你需要下载ANT编译你的命令行项目。从http://ant.apache.org/bindownload.cgi 下载ANT

一旦你下载并安装了ANT,你必须将其添加到PATH生命中。Windows环境中,只要右击“电脑”,选择属性选项,更改PATH声明。

build.xml是专门供ANT用来编译Android应用的。它应该处于你的项目根目录,如前面的插图所示。用文本编辑器打开build.xml,看看它的内容。

build.xml的第一部分包含了用户可以编辑的代码。这一部分和文件的其它部分分离开,因为文件的其余部分是不能被修改的。

<?xml version="1.0" ?>

<project name="HelloWorldCommandLine" default="package">

<property name="sdk-folder" value="c:\Android\android-sdk_m5

rc14_windows\android-sdk_m5-rc14_windows" />

<property name="android-tools" value="c:\Android\android-sdk_m5

rc14_windows\android-sdk_m5-rc14_windows\tools" />

<property name="android-framework" value="${android-tools}/lib/framework.aidl"

/>

<!-- The intermediates directory -->

<!-- Eclipse uses "bin" for its own output, so we do the same. -->

<property name="outdir" value="bin" />

build.xml第一部分包含了以下属性的值:

   l        项目名称

   l        Android SDK位置

   l        Android tools位置

   l        Android框架位置

   l        输出位置

如果你需要更改任何参数,你可以在这个文件中完成。然而,紧跟这些参数之后,你会在build.xml中看到一条警告信息,即你不可以更改其余的任何值:

<!-- No user servicable parts below. -->

build.xml的这条警告之后,是一个参数与值的列表,严格保证了项目的正确创建。这个列表包括了编译项,输入目录,工具位置。看一下下面的build.xml核心流程信息的输出结果:

<name="dex-file" value="classes.dex" />

<property name="intermediate-dex" value="${outdir}/${dex-file}" />

<!-- The final package file to generate -->

<property name="out-package" value="${outdir}/${ant.project.name}.apk"/>

<!-- Tools -->

<property name="aapt" value="${android-tools}/aapt" />

<property name="aidl" value="${android-tools}/aidl" />

<property name="dx" value="${android-tools}/dx" />

<property name="adb" value="${android-tools}/adb" />

<property name="android-jar" value="${sdk-folder}/android.jar" />

<property name="zip" value="zip" />

<!-- Rules -->

<!-- Create the output directories if they don't exist yet. -->

<target name="dirs">

<mkdir dir="${outdir}" />

<mkdir dir="${outdir-classes}" />

</target>

<!-- Generate the R.java file for this project's resources. -->

<target name="resource-src" depends="dirs">

<echo>Generating R.java...</echo>

<exec executable="${aapt}" failonerror="true">

<arg value="compile" />

<arg value="-m" />

<arg value="-J" />

<arg value="${outdir-r}" />

<arg value="-M" />

<arg value="AndroidManifest.xml" />

<arg value="-S" />

<arg value="${resource-dir}" />

<arg value="-I" />

<arg value="${android-jar}" />

</exec>

</target>

<!-- Generate java classes from .aidl files. -->

<target name="aidl" depends="dirs">

<apply executable="${aidl}" failonerror="true">

<arg value="-p${android-framework}" />

<arg value="-I${srcdir}" />

<fileset dir="${srcdir}">

<include name="**/*.aidl"/>

</fileset>

</apply>

</target>

<!-- Compile this project's .java files into .class files. -->

<target name="compile" depends="dirs, resource-src, aidl">

<javac encoding="ascii" target="1.5" debug="true" extdirs=""

srcdir="."

destdir="${outdir-classes}"

bootclasspath="${android-jar}" />

</target>

<!-- Convert this project's .class files into .dex files. -->

<target name="dex" depends="compile">

<exec executable="${dx}" failonerror="true">

<arg value="-JXmx384M" />

<arg value="--dex" />

<arg value="--output=${basedir}/${intermediate-dex}" />

<arg value="--locals=full" />

<arg value="--positions=lines" />

<arg path="${basedir}/${outdir-classes}" />

</exec>

</target>

<!-- Put the project's resources into the output package file. -->

<target name="package-res-and-assets">

<echo>Packaging resources and assets...</echo>

<exec executable="${aapt}" failonerror="true">

<arg value="package" />

<arg value="-f" />

<arg value="-c" />

<arg value="-M" />

<arg value="AndroidManifest.xml" />

<arg value="-S" />

<arg value="${resource-dir}" />

<arg value="-A" />

<arg value="${asset-dir}" />

<arg value="-I" />

<arg value="${android-jar}" />

<arg value="${out-package}" />

</exec>

</target>

<!-- Same as package-res-and-assets, but without "-A ${asset-dir}" -->

<target name="package-res-no-assets">

<echo>Packaging resources...</echo>

<exec executable="${aapt}" failonerror="true">

<arg value="package" />

<arg value="-f" />

<arg value="-c" />

<arg value="-M" />

<arg value="AndroidManifest.xml" />

<arg value="-S" />

<arg value="${resource-dir}" />

<!-- No assets directory -->

<arg value="-I" />

<arg value="${android-jar}" />

<arg value="${out-package}" />

</exec>

</target>

<!-- Invoke the proper target depending on whether or not

an assets directory is present. -->

<!-- TODO: find a nicer way to include the "-A ${asset-dir}" argument

only when the assets dir exists. -->

<target name="package-res">

<available file="${asset-dir}" type="dir"

property="res-target" value="and-assets" />

<property name="res-target" value="no-assets" />

<antcall target="package-res-${res-target}" />

</target>

<!-- Put the project's .class files into the output package file. -->

<target name="package-java" depends="compile, package-res">

<echo>Packaging java...</echo>

<jar destfile="${out-package}"

basedir="${outdir-classes}"

update="true" />

</target>

<!-- Put the project's .dex files into the output package file.

Use the zip command, available on most unix/Linux/MacOS systems,

to create the new package (Ant 1.7 has an internal zip command,

however Ant 1.6.5 lacks it and is still widely installed.)

-->

<target name="package-dex" depends="dex, package-res">

<echo>Packaging dex...</echo>

<exec executable="${zip}" failonerror="true">

<arg value="-qj" />

<arg value="${out-package}" />

<arg value="${intermediate-dex}" />

</exec>

</target>

<!-- Create the package file for this project from the sources. -->

<target name="package" depends="package-dex" />

<!-- Create the package and install package on the default emulator -->

<target name="install" depends="package">

<echo>Sending package to default emulator...</echo>

<exec executable="${adb}" failonerror="true"

 

<arg value="install" />

<arg value="${out-package}" />

</exec>

  • 大小: 8.6 KB
  • 大小: 31 KB
  • 大小: 29.5 KB
0
0
分享到:
评论

相关推荐

    linux基础进阶笔记

    linux基础进阶笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4493093&spm_id_from=333.999.0.0&desc=1

    IMG20241115211541.jpg

    IMG20241115211541.jpg

    Sen2_ARI_median.txt

    GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载

    毕业设计&课设_基于 flask-whoosh-jieba 的代码,涉及文件管理及问题修复.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于springboot家政预约平台源码数据库文档.zip

    基于springboot家政预约平台源码数据库文档.zip

    Ucharts添加stack和折线图line的混合图

    Ucharts添加stack和折线图line的混合图

    基于springboot员工在线餐饮管理系统源码数据库文档.zip

    基于springboot员工在线餐饮管理系统源码数据库文档.zip

    2015-2021年新能源汽车分地区、分类型、分级别销量逐月数据和进出口数据-最新出炉.zip

    新能源汽车进出口数据 1、时间跨度:2018-2020年 2、指标说明:包含如下指标的进出口数据:混合动力客车(10座及以上)、纯电动客车(10座及以上)、非插电式混合动力乘用车、插电式混合动力乘用车、纯电动乘用车 二、新能源汽车进出口月销售数据(分地区、分类型、分 级别) 1、数据来源:见资料内说明 2、时间跨度:2014年1月-2021年5月 4、指标说明: 包含如下指标 2015年1月-2021年5月新能源乘用车终端月度销量(分类型)部分内容如下: 新能源乘用车(单月值、累计值 )、插电式混合动力 月度销量合计(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 月度销量同比增速(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 累计销量合计(狭义乘用车轿车、SUV、IPV、交叉型乘用车); 累计销量同比增速(狭义乘用车轿车、SUV、MPV、交叉型乘用车); 累计结构变化(狭义乘用车轿车、SUV、IPV、交叉型乘用车); 2015年1月-2021年5月新能源乘用车终端月度销量(分地区)内容如下: 更多见资源内

    中心主题-241121215200.pdf

    中心主题-241121215200.pdf

    蓝奏云下载链接与密码整理

    内容概要:本文档提供了多个蓝奏云下载链接及其对应解压密码,帮助用户快速获取所需文件。 适合人群:需要从蓝奏云下载文件的互联网用户。 使用场景及目标:方便地记录并分享蓝奏云上文件的下载地址和密码,提高下载效率。 阅读建议:直接查看并使用提供的链接和密码即可。若遇到失效情况,请尝试联系上传者确认更新后的链接。

    Javaweb仓库管理系统项目源码.zip

    基于Java web 实现的仓库管理系统源码,适用于初学者了解Java web的开发过程以及仓库管理系统的实现。

    Python-文件重命名-自定义添加文字-重命名

    资源名称:Python-文件重命名-自定义添加文字-重命名 类型:windows—exe可执行工具 环境:Windows10或以上系统 功能: 1、点击按钮 "源原文"【浏览】表示:选择重命名的文件夹 2、点击按钮 "保存文件夹"【浏览】表示:保存的路径(为了方便可选择保存在 源文件中 ) 3、功能①:在【头部】添加自定义文字 4、功能②:在【尾部】添加自定义文字 5、功能③:输入源字符 ;输入替换字符 可以将源文件中的字符替换自定义的 6、功能④:自动加上编号_1 _2 _3 优点: 1、非常快的速度! 2、已打包—双击即用!无需安装! 3、自带GUI界面方便使用!

    JDK8安装包,为各位学习的朋友免费提供

    JDK8安装包

    Centos-7yum的rpm包

    配合作者 一同使用 作者地址没有次下载路径 https://blog.csdn.net/weixin_52372189/article/details/127471149?fromshare=blogdetail&sharetype=blogdetail&sharerId=127471149&sharerefer=PC&sharesource=weixin_45375332&sharefrom=from_link

    setup_python_geospatial_analysis.ipynb

    GEE训练教程

    毕业设计&课设_文成公主微信公众号全栈工程,含技术栈、架构及部署流程等内容.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于springboot交通感知与车路协同系统源码数据库文档.zip

    基于springboot交通感知与车路协同系统源码数据库文档.zip

    基于springboot+vue 雅妮电影票购买系统源码数据库文档.zip

    基于springboot+vue 雅妮电影票购买系统源码数据库文档.zip

    使用 HTML5 实现拖放交互:音效与提示功能的完整实现

    为了更好地理解 HTML5 的拖放功能,我们设计了一个简单有趣的示例:将水果从水果区拖放到购物笼中,实时更新数量和价格,并在所有水果被成功放置后,播放音效并显示提示。

    毕业设计&课设_基于 SSM 的大学生综合成绩测评系统(含信息及数据库脚本,体现系统架构及功能设计).zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics