标签:
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>
安装路径
系统应用保存路径:system/app
data/data/包名文件夹:系统为每一个应用提供的一个专属空间
直接复制项目
项目创建
- 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的方法;
在此的方法中进行获取输入框的中内容。
btn.setOnClickListener(newOnClickListener(){
@Override
publicvoid onClick(View v){
// TODO Auto-generated method stub
}
});
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测试工程的对话框, 在这里可以输入测试工程的名字, 并选择测试工程的路径。
1.入门和eclipse
标签:
原文地址:http://www.cnblogs.com/liuyu0529/p/4911036.html