Android学习笔记--基础知识

作者原创 转载请注明出处:http://blog.csdn.net/u014434965/article/details/51660953
1. Android平台架构:
- Android系统体系结构主要分为:应用程序层、应用程序框架、Android运行时、函数库、Linux内核
- 每一个android程序都运行在一个单独的Dalvik虚拟机内也就是说每一个android应用程序都对应一条Dalvik进程,同时Dalvik也专门针对同时高效的运行多个虚拟机进程进行了优化以便于对各个不同的应用进程进行隔离。
- 虽然Android是采用java语言编写的但是Android虚拟机Dalvik和java虚拟机JVM是存在区别的两者之间也不兼容。
它们之间的区别主要表现在:
i、Dalvik虚拟机运行Android特有的.dex文件。.dex文件是Android通过DX工具将应用程序中所有的.class文件编译而成。而java虚拟机JVM则是从.class文件或是JAR包中加载字节码
i、Dalvik是基于寄存器实现。JVM是基于栈来实现的。

  1. Android应用打包生成一个APK需要以下几步:

    • 通过DX工具将所有的.class文件转化成.dex文件
    • 通过AAPT工具打包所有的资源文件
    • 通过apkBuilder工具把前面两部得到的文件一同打包生成一个apk文件
  2. Android应用程序分析:
    -自动生成的R.java文件:
    先看下面一段代码:
    “`
    /* AUTO-GENERATED FILE. DO NOT MODIFY.
    This class was automatically generated by the
    aapt tool from the resource data it found. It
    should not be modified by hand.
    */
    public final class R {
    public static final class anim {
    public static final int abc_fade_in=0x7f050000;
    public static final int abc_fade_out=0x7f050001;
    public static final int abc_grow_fade_in_from_bottom=0x7f050002;
    public static final int abc_popup_enter=0x7f050003;
    public static final int abc_popup_exit=0x7f050004;

    }
    public static final class array {
    public static final int starfans=0x7f0c0000;
    }
    public static final class attr {
    public static final int actionBarPopupTheme=0x7f0100c6;
    }
    public static final class id {
    public static final int action_adapter_item=0x7f04001a;
    public static final int activity_action_card=0x7f04001b;
    public static final int activity_action_list=0x7f04001c;
    public static final int activity_article_list=0x7f04001d;
    public static final int activity_audio_record=0x7f04001e;
    public static final int activity_bicker_detail=0x7f04001f;
    public static final int activity_binding=0x7f040020;
    public static final int activity_capture=0x7f040021;
    }
    public static final class color {
    public static final int abc_background_cache_hint_selector_material_dark=0x7f0d00e5;
    public static final int abc_background_cache_hint_selector_material_light=0x7f0d00e6;
    public static final int abc_input_method_navigation_guard=0x7f0d0000;
    public static final int abc_primary_text_disable_only_material_dark=0x7f0d00e7;
    public static final int abc_primary_text_disable_only_material_light=0x7f0d00e8;
    public static final int abc_primary_text_material_dark=0x7f0d00e9;

    }
    “`
    从上面的代码中注释可以看出R.java文件是有aapt工具根据应用中的资源文件自动生成的,这个文件的规则主要有一下几条:

     - 每类资源文件对应R类中的一个内部类,layout布局对应layout内部类,字符串资源文件对应String内部类,所有资源文件标识符对应id内部类 非常明确
     - 每一个具体的资源所对应的内部类都是一个public static final class的类型,所以在调用的时候直接R.类型.类型中的某个值 比如在调用id的时候R.id.action_adapter_item.
    因此在开发Android应用程序的时候要将每类资源放到res文件夹下对应的文件中方便AAPT工具来扫描这些资源
    
  3. Android清单文件AndroidManifest文件:


     <?xml version="1.0" encoding="utf-8"?>
          <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.custom.test">
    <!-- 检测网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 获取mac地址作为用户的备用唯一标识 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <application
        android:name=".TestApplication"
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:name">
        <activity
            android:name=".LaunchActivity"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        在android的清单文件中包含以下主要的信息:
            a、应用程序唯一标示符 包名:com.custom.test
            b、应用程序所有包含的组件:activity、service、contentProvide、BroadCastReceiver.
            c、其他程序访问该应用程序所需要的权限
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值