1.入门和eclipse

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

  1. <intent-filter>
  2. <action android:name="android.intent.action.MAIN"/>
  3. <category android:name="android.intent.category.LAUNCHER"/>
  4. </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:采用直接的内部类
  1. btn.setOnClickListener(newOnClickListener(){
  2. @Override
  3. publicvoid onClick(View v){
  4. // TODO Auto-generated method stub
  5. }
  6. });
  • 方式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. //1.获取短信管理器
  2. SmsManager sm =SmsManager.getDefault();
  3. //2.切割短信,把长短信分成若干个小短信
  4. ArrayList<String> smss = sm.divideMessage(content);
  5. //3.for循环把集合中所有短信全部发出去
  6. for(String string : smss){
  7. sm.sendTextMessage(phone,null, string,null,null);
  8. }
  9. }

/*

    * 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

  1. Button bt1 =(Button) findViewById(R.id.bt1);
  2. bt1.setOnClickListener(this);
  3. bt2.setOnClickListener(this);
  4. publicvoid onClick(View v)
  5. switch(v.getId()){
  6. case R.id.bt1:
  7. break;
  8. case R.id.bt2:
  9. }
  • 第四种

* 给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技巧

  1. 模拟器上可以输出的日志可以直接翻到最后去看,真机就不行了,因为它会一直刷
  2. 直接在搜索框搜索打印的内容
  3. 过滤器查看,一般用TAG过滤信息,他是唯一的

debug

  1. 点断点
  2. 点小虫子运行程序,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测试工程的对话框, 在这里可以输入测试工程的名字, 并选择测试工程的路径。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • e学大HD版使用评测:突破用户体验瓶颈的平板应用

    K12教育大鳄学大教育进军在线教育之后可谓马不停蹄,不仅战略布局O2O初见成效,更是在近期对e学大智能平台进行了全面升级。以笔者而见,升级最大的亮点莫过于,e学...

    罗超频道
  • 从Andy Rubin离职看Android的冰与火

    安卓创始人安迪·鲁宾(Andy Rubin)已从谷歌离职,再次创业,创办一家孵化器公司,专门帮助有志于硬件领域创业的公司。在2013年Andy Rubin已经被...

    罗超频道
  • 360收购Opera,谁说浏览器没价值了?

    今天一则网络爆料显示,360欲收购来自挪威的著名浏览器厂商Opera,这是当年与IE、Firefox其名的三大浏览器之一。Opera虽然相对小众,但特色鲜明:小...

    罗超频道
  • 400+团队乱战儿童智能手表市场:互联网玩家将占上风

    智能硬件浪潮袭来,最受关注的莫过于可穿戴设备和智能家居,而最大的黑马便诞生于可穿戴设备领域:儿童智能手表。现在这一市场玩家越来越多,大体可分为三大阵营:传统硬件...

    罗超频道
  • Facebook收购AI初创公司Ozlo,是为智能音箱铺路吗?

    作者 | 周翔,焦燕 7月31日(周一),Facebook对外宣称完成了对初创公司Ozlo的收购,而Ozlo也对这一信息发布了简短的公告。 根据CNBC的报道,...

    AI科技大本营
  • 华为用“荣耀3C“猎杀红米,智能手机呈鼎立之势

    “荣耀”独立发展是华为从企业服务到个人消费,从传统渠道到电商渠道,从通信设备服务商到互联网科技集团转型的重要里程碑。在其宣布此项决定之后,其动作自然十分...

    罗超频道
  • 安卓生态“乱糟糟”成围城

    导读:黄章魅族说安卓乱糟糟的,可能会放弃安卓,即将推出搭载Ubuntu的MX3,而诺基亚则正要进入安卓阵营,安卓生态宛如围城,外面的人想进来,里面的人想...

    罗超频道
  • 安卓手机免root实现对其他软件最高管理(sandbox思想)

      root之后的安卓系统并不稳定,root后有时候会出现一些系统的错误,如果实在忍受不了的话,这时候只能恢复出厂设置了。因此不root是最优的选择,但是不ro...

    用户1680321
  • 2017年终总结:秋招心路历程+安卓/java知识总结Android 知识点总结Java知识点总结

    一直想写一篇年终总结的,但是又不知道写点什么,感觉没有什么可总结的,但是今年有很多事情还是值得回顾纪念的,之后再来看这些东西应该会感触颇多。2017对我来说是值...

    牛客网
  • 知识总结:安卓工程师养成计划计算机基础细分方向知识算法

    楼主Android菜鸡一枚,今年校招侥幸拿到了还不错的offer。因为校招实在过于侥幸,面试上很少遇到复杂的问题,这里就不写面经了,初略谈一谈校招的一些准备吧。...

    牛客网

扫码关注云+社区

领取腾讯云代金券