惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
T
Threatpost
C
CERT Recently Published Vulnerability Notes
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Security Archives - TechRepublic
Security Archives - TechRepublic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
K
Kaspersky official blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
Project Zero
Project Zero
H
Heimdal Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
Google Online Security Blog
Google Online Security Blog
W
WeLiveSecurity
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Schneier on Security
Schneier on Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
News | PayPal Newsroom
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Cloudbric
Cloudbric
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
S
Securelist
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
NISL@THU
NISL@THU
N
News and Events Feed by Topic
S
Security Affairs
The Last Watchdog
The Last Watchdog
T
Tor Project blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
C
Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tenable Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security

博客园 - 晓光

Android获取手机短信 Android系统的进程,任务,服务的信息 Android程序如何安装到内存或卡中 (转)解决Debug certificate expired的问题 (转)Android ViewGroup的onInterceptTouchEvent()事件分析 (转)禁止横屏和竖屏切换 (转)Android Bitmap 与 Drawable之间的转换 (转)Android中两种设置全屏的方法 (转)Android之getSystemService (转)SQL Server Compact Edition 数据库连接字符串 (转)SqlDateTime溢出类错误解决 C# 数据库连接字符串集合 - 晓光 - 博客园 Android Activity生命周期 Flex HttpService,WebService简单介绍 (转)Flex Module通信(2)——使用事件 (转)Flex Modules通信(1)——通过接口 (转)Canvas不能接收 rollOver和roolOut事件的解决方案 - 晓光 - 博客园 (转)FLEX中使用outerDocument - 晓光 - 博客园 (转)C# Hashtable Synchronized vs SyncRoot
(转)Android Project Structure
晓光 · 2011-02-08 · via 博客园 - 晓光

一个Android项目会包括java源文件,资源文件如图片,基于xml的布局文件等,第三方的jar包等。这些文件最终会被编译成一个.apk文件即Android应用程序可执行文件Android package file, .apk文件可以安装在模拟设备或者真机上。

看一下HelloAndroid项目的结构图:

image

可以看到Android项目主要包括:

src/: 存放java源文件

gen/: 存放由Android编译工具生成的java源文件, 这些文件不能手动修改。如R.java就定义了一些常量,这些常量是对资源文件的索引,以便我们很方便的引用这些资源文件。

assets/: 存放一些静态文件并将会被一起打包成.apk文件

res/:存放资源文件

    res/drawable: 存放图片如PNG,JPEG等

res/drawable-ldpi/my_icon.png       // 存放低分辨率的图片
res/drawable-mdpi/my_icon.png   // 存放中等分辨率的图片
res/drawable-hdpi/my_icon.png       // 存放高分辨率的图片

    res/layout: 存放基于xml的布局文件

    res/menu: 存放基于xml的菜单文件

    res/values: 存放字符串等资源文件,如多语言的文件

bin/:存放编译后的文件

   bin/yourpackagename/classes/:存放java编译后的.class文件

   bin/classes.dex: class文件被转换成针对Dalvik虚拟机优化的dex文件, 在Introducing Android中有提及。

   bin/resources.ap_: 被压缩的资源文件类似zip文件。

   bin/yourapp.apk: Android应用程序可执行文件,其实它也是个压缩的文件,包含了.dex文件,各种资源文件等。

AndroidManifest.xml是一个当前应用程序的组件清单,它列出了应用程序包含的各种activities,services,权限等, 下面看一下HelloAndroid项目中的AndroidManifest.xml文件:

01 <?xml version="1.0" encoding="utf-8"?>
03       package="com.benjamin.helloandroid"
04       android:versionCode="1"
05       android:versionName="1.0">
06     <application android:icon="@drawable/icon" android:label="@string/app_name">
07         <activity android:name=".HelloAndroid"
08                   android:label="@string/app_name">
09             <intent-filter>
10                 <action android:name="android.intent.action.MAIN" />
11                 <category android:name="android.intent.category.LAUNCHER" />
12             </intent-filter>

可以看到根元素manifest的定义, 首先声明了命名空间,指定了包名。android:versionCode是Android应用程序的版本号,一个整形的数字,在应用程序升级的时候会进行比较是否决定要更新。android:versionName是你自己为你应用程序定义一个版本代号,不必一定是数字,如”Tiger 2000”, “System X”等。如果你的应用程序要发布在Android Market的话,都需要指定android:versionCode和android:versionName这两项。


android:icon表示你的应用程序显示的图标,"@drawable/icon”表示读取res/drawable下面icon这个图片,android:label表示应用程序的名称,"@string/app_name”表示读取res/values/strings.xml中app_name的值。activity的两个属性android:name和android:label分别表示这个activity的类名,activity的显示名称。intent-filter表示在什么条件下这个activity会显示。