您的位置:首页 > 编程语言 > Java开发

1.入门和eclipse

2015-10-26 14:06 260 查看
Android项目目录结构
src:项目的java代码
gen
buildConfig:应用是否可以debug
R:保存项目中使用的资源的id
Android.jar:导入这个包,应用才可以使用Android的api
libs:存放第三方jar包
assets:资源文件夹,存放视频或者音乐等较大的资源文件
bin:存放应用打包编译后的文件
res:资源文件夹,在这个文件夹中的所有资源,都会有资源id,读取时通过资源id就可以读取
资源id不能出现中文
layout:布局文件夹,保存布局文件,Android中所有布局文件都是xml文件
menu:菜单配置文件夹,保存菜单的配置文件,决定菜单的样式
values
strings:字符串资源文件,用来定义字符串资源的
dimens:长度资源文件,用来定义长度资源
style:样式和主题资源文件
清单文件
package:应用在系统中的唯一识别
versionCode:应用的版本号

具有以下子节点的activity就是入口activity

<intent-filter>


<action android:name="android.intent.action.MAIN"/>




<category android:name="android.intent.category.LAUNCHER"/>


</intent-filter>


安装路径

第三方应用保存路径:data/app

系统应用保存路径:system/app
data/data/包名文件夹:系统为每一个应用提供的一个专属空间

直接复制项目

需要改动的地方:

项目名字

应用包名

R文件重新导包

项目创建

- minimum SDK 要求最低的安装版本, 安装apk前,系统会判断当前版本是否高于(包含)此版本, 是的话才允许安装

- maxSdkVersion 要求最高的安装版本(一般不用),可以指定,高了20就不能安装

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16"
android:maxSdkVersion="20" />

- Target SDK 目标SDK, 一般设置为开发时使用的手机版本, 这样的话,系统在运行我的apk时,就认为我已经在该做了充分的测试, 系统就不会做过多的兼容性判断, 从而提高运行效率

- Compile With 编译程序时使用的版本,一般选最高版本就行了

导入工程
别的项目可以导入,如果不行可以new一个工程,不是安卓工程,选择要导入的项目就可以,如果出现很多错误,优先考虑资源文件 ,有可能需要改版本,改project.properties就可以

DDMS
Dalvik debug monitor service
ADB
Android debug bridge
建立eclipse和Android设备之间的连接

存放在 sdk的 platform-tools目录下,如果想要在命令行中使用这个工具,就需要先把它的路径配置到环境变量里。如果你使用的是 Windows系统,可以右击我的电脑→属性→高级→环境变量,然后在系统变量里找到 Path并点击编辑,将 platform-tools目录配置进去

ADB指令

adb start-server:启动adb进程

adb kill-server:杀死adb进程

adb install E:\yyh.apk

adb uninstall 应用包名

adb devices:列出与开发环境建立连接的android设备的列表

adb shell:进入Android命令行

sqlite3加上数据库名:打开数据库

.table命令:看目前数据库中有哪些表

.schema:查看建表语句

Android的指令:

ls:罗列出当前目录下的所有文件和文件夹

ps:罗列出当前系统运行的所有进程

netstat -ano:查看系统的端口占用情况

项目1:电话拨号器:
代码的逻辑的部分:
其中需要为按钮设置一个点击的事件的函数
其中函数中需要传入的参数是实现该OnclickListener的实现类
那么就会需要进行定义内部类实现该接口OnClickListener并且同时
进行复写该onClick的方法;
在此的方法中进行获取输入框的中内容。

方式1:采用直接的内部类

btn.setOnClickListener(newOnClickListener(){


@Override


publicvoid onClick(View v){


// TODO Auto-generated method stub


}


});


方式2:自己定义一个内部类

btn.setOnClickListener(new MyListener());
class MyListener implements OnClickListener
主要是要设置当前activity的意图content,比如打电话
就是一个很为简单的意图:
Intent intent=new Intent(Intent.ACTION_CALL);

同时需要往这个意图的对象中加入打电话的数据:电话号码
intent.setData(Uri.parse("tel:"+text));

最后将该活动设置为系统的监听!
startActivity(intent);

项目2:在不同的按钮中进行设置相同的相应的函数
同时这两个按钮在同一的界面的activity中,那么
在这两个按钮的相应的函数中就会在这个总的
activity中的!

因为在这个界面的配置中有一个属性activity_main.xml:
<LinearLayout ....
tools:context=".MainActivity" >
那么这个界面的配置就是依赖于哪个activity的实体类!

项目3:设置短信的发送

界面的设置:
1)提示输入号码的编辑文本edittext
2)提示输入信息的编辑文本edittext
3)发送按钮的设置(和书中不一样)

首先进行获取两个的文本对象及其内容

事件的监听的机制:

为按钮进行设置相应的函数sendMessage(View view)
以及涉及到SmsManager类进行消息的管理的类:

//1.获取短信管理器


SmsManager sm =SmsManager.getDefault();




//2.切割短信,把长短信分成若干个小短信


ArrayList<String> smss = sm.divideMessage(content);




//3.for循环把集合中所有短信全部发出去


for(String string : smss){




sm.sendTextMessage(phone,null, string,null,null);


}


}


/*
* destinationAddress:
* 发送的目的地址
* scAddress
* 发送的信息中心的地址
* text
* 发送的文本
* sentIntent
* 发送的成功或失败的标识
* deliveryIntent
* 发送另一方的标识
*/
关键点:
a)注意短信的内容过长,要进行分发 ;
b)发送短息和打电话不一样,其中的发送短信有着开放的api那么自己就能够
编写,而打电话则是不一样的,其内部是封装好的!所以使用intent

定义事件的四种方法:

第一种

* 定义一个MyListener实现onClickListener接口

Button bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new MyListener());

第二种

* 定义一个匿名内部类实现onClickListener接口

Button bt2 = (Button) findViewById(R.id.bt2);
bt2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
System.out.println("第二种");

}
});

第三种

* 让当前activity实现onClickListener接口
View:系统会把触发这个方法的那个组件的对象作为view对象传进来

通过对view对象的判断,就可以知道用户点击的到底是哪一个按钮拿到按钮的id

Button bt1 =(Button) findViewById(R.id.bt1);


bt1.setOnClickListener(this);


bt2.setOnClickListener(this);


publicvoid onClick(View v)


switch(v.getId()){


case R.id.bt1:


break;


case R.id.bt2:


}


第四种

* 给Button节点设置onClick属性,

android:onClick="click"

* 然后在activity中定义跟该属性值同名的方法

public void click(View v){
System.out.println("第四种");
}

logcat

* 日志信息总共分为5个等级

1. Log.v()
这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是
Android日志里面级别最低的一种。
2. Log.d()
这个方法用于打印一些调试信息, 这些信息对你调试程序和分析问题应该是有帮助
的。对应级别 debug,比 verbose高一级。
3. Log.i()
这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮
你分析用户行为的那种。对应级别 info,比 debug高一级。
4. Log.w()
这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好
去修复一下这些出现警告的地方。对应级别 warn,比 info高一级。
5. Log.e()
这个方法用于打印程序中的错误信息,比如程序进入到了 catch语句当中。当有错
误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级
别 error,比 warn高一级。

* System.out.print输出的日志级别是info,tag是System.out
* Android提供的日志输出api

Log.v(TAG, "加油吧,童鞋们");
Log.d(TAG, "加油吧,童鞋们");
Log.i(TAG, "加油吧,童鞋们");
Log.w(TAG, "加油吧,童鞋们");
Log.e(TAG, "加油吧,童鞋们");

Log方法中传入了两个参数,第一个参数是 tag,一般传入当前的类名就好,主要用于
打印信息进行过滤。第二个参数是 msg,即想要打印的具体的内容。

Logcat技巧

模拟器上可以输出的日志可以直接翻到最后去看,真机就不行了,因为它会一直刷

直接在搜索框搜索打印的内容

过滤器查看,一般用TAG过滤信息,他是唯一的

debug

点断点

点小虫子运行程序,Eclipse跳转到debug界面



测试:

测试的概念:

黑盒测试:测试业务的逻辑
白盒测试: 测试逻辑的方法

测试的力度:

方法测试: function test
单元测试: unit test
集成测试: integeration test
系统测试: system test

测试的暴力的程度:

冒烟测试: smoke test (针对内存溢出问题)
压力测试: pressure text (多个访问)

其实对于我们最为重要的是unit test单元的测试:

测试的案例:

注意点:
1):首先测试类进行继承AndroidTestCase这个类。
2):其次需要进行配置maniftest.xml文件进行配置二级标签
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima.junittest"
></instrumentation>

其中android:name指的是android的测试的仪器的驱动。
android:targetPackage:指的是所要测试目标应用包,就是这里出现了问题

3):需要进行配置maniftest.xml文件进行配置三级标签(application父标签)
用户的类库:
<uses-library android:name="android.test.runner"/>

4):要善于用断言Assertl类进行测试
* 断言的作用,检测运行结果和预期是否一致
* 如果应用出现异常,会抛给测试框架

测试报错后,添加测试框架相关参数;

测试框架(放在manifest根节点)

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.itheima.mobilesafe" />

依赖库(放在application里面)

<uses-library android:name="android.test.runner" />

publicclassUtils{




publicstaticint add(int i,int j){


return i + j;


}


publicstaticvoid chuyi(int i,int j){


int result = i / j;


}


}


publicclassTestCaseextendsAndroidTestCase{


publicvoid test(){


//通过类名.方法来测试这个方法,然后点击test运行就可以看到测试结果,也可以将test改成testAdd来测试这个方法,点哪个方法就是测试哪个方法,别的方法不运行


int result =Utils.add(3,5);


//断言:用来检测实际值与期望值是否一致


assertEquals(8, result);


}


publicvoid test2(){


Utils.chuyi(2,1);


}


}


在 Eclipse的导航栏中点击 File→New→Other,会打开一个对话框,展开 Android目录,在里面选中 Android Test
Project,点击 Next后会弹出创建 Android测试工程的对话框, 在这里可以输入测试工程的名字, 并选择测试工程的路径。

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: