ListView之排序

本文主要讲ListView排序问题,关于布局,请参考ListView之动态修改

单字段排序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private ArrayList<Map<String, Object>> mArrayList;
private void getData() {
 
    //add Data.....
    //对ListView中数据list排序
    if (!mArrayList.isEmpty()){
        Collections.sort(mArrayList, new Comparator<Map<String, Object>>() {
            @Override
            public int compare(Map<String, Object> object1, Map<String,
                Object> object2) {
 
            //根据字段"LEVEL"排序
                return object1.get("LEVEL").toString()
                    .compareTo(object2.get("LEVEL").toString());
            }
        });
    }
}

效果图如下(LEVEL字段为图片样式):

如上图如果这样排你肯定不满意。因为文本没有排序。
多字段排序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (!mArrayList.isEmpty()) {
    Collections.sort(mArrayList, new Comparator<Map<String, Object>>() {
        @Override
        public int compare(Map<String, Object> object1,
            Map<String, Object> object2) {
            //我把obejct1 和obejct2写倒了,这样写的用处就是反向排序。
            int i = object2.get("LEVEL").toString()
                            .compareTo(object1.get("LEVEL").toString());
            if (i == 0) {           //如果"LEVEL"字段相同,再根据下一字段排序
                 object1.get("TITLE").toString()
 
                    .compareTo(object2.get("TITLE").toString());
            }
            return i;
        }
   });
}

前后效果图如下:

值得一提的是右边图片的样式:

1
2
3
4
5
6
7
<!-- wifi_singal_open.xml -->
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" />
    <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" />
    <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" />
    <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4" />
</level-list>

上面drawable是4种不带锁的图片。
在wifi_singal.xml中引用wifi_signal_open和wifi_signal_lock文件:

1
2
3
4
5
6
7
8
<!-- wifi_singal.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:settings="http://schemas.android.com/apk/res/com.zkx.demo">
    <item settings:state_encrypted="true"
        android:drawable="@drawable/wifi_signal_lock"/>
    <item settings:state_encrypted="false"
        android:drawable="@drawable/wifi_signal_open" />
</selector>

settings:state_encrypted=”true”为自定义属性,在attr.xml中有配置:

1
2
3
4
5
<resources>
    <declare-styleable name="WifiEncryptionState">
        <attr name="state_encrypted" format="boolean" />
    </declare-styleable>
</resources>

最后在Adapter getView中配置图片文件:

1
2
3
4
5
6
7
8
9
public static final int[] STATE_SECURED = {R.attr.state_encrypted};
public static final int[] STATE_NONE = {}; 
ImageView img = (ImageView)v.findViewById(R.id.img);
img.setImageResource(R.drawable.wifi_signal);
img.setImageLevel(Integer.valueOf(map.get("LEVEL").toString())); 
//可见或不可见
int[] state = Boolean.valueOf(map.get("STATE").toString())
    ? STATE_SECURED : STATE_NONE;
img.setImageState(state, true); [/java]
发表在 Android开发 | 标签为 , | 留下评论

Android权限机制总结与常见权限不足问题分析

Android系统是运行在Linux内核上的,Android与Linux分别有自己的一套严格的安全及权限机制,
很多像我这样的新手,尤其是习惯了windows低安全限制的用户,很容易在这方面弄混淆,下面是我总结的Android系统权限相关的内容,
作为这段时间对android权限学习的总结,也希望能对大家有所帮助,不正确之处请指出。

首先分清两个概念:
要区分apk运行时的拥有的权限与在文件系统上被访问(读写执行)的权限两个概念。
apk程序是运行在虚拟机上的,对应的是Android独特的权限机制,只有体现到文件系统上时才使用linux的权限设置。
(一)linux文件系统上的权限
-rwxr-x–x system   system       4156 2010-04-30 16:13 test.apk
代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。
比如上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。
而test.apk运行起来后可以干哪些事情,跟这个就不相关了。
千万不要看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限。
(二)Android的权限规则

(1)Android中的apk必须签名
这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。
重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。

默认生成的APK文件是debug签名的。
获取system权限时用到的签名,见:如何使Android应用程序获取系统权限

(2)基于UserID的进程级别的安全机制
大家都知道,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。
Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为”app_”加一个数字,比如app_43
不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。

Android提供了如下的一种机制,可以使两个apk打破前面讲的这种壁垒。
在AndroidManifest.xml中利用sharedUserId属性给不同的package分配相同的userID,通过这样做,两个package可以被当做同一个程序,
系统会分配给两个程序相同的UserID。当然,基于安全考虑,两个package需要有相同的签名,否则没有验证也就没有意义了。

(这里补充一点:并不是说分配了同样的UserID,两程序就运行在同一进程, 下面为PS指令摘取的,
显然,system、app_2分别对应的两个进程的PID都不同,不知Android到底是怎样实现它的机制的)

User   PID PPID
system    953   883   187340 55052 ffffffff afe0cbcc S system_server
app_2     1072 883   100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system    1083 883   111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2     1088 883   156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默认apk生成的数据对外是不可见的
实现方法是:Android会为程序存储的数据分配该程序的UserID。
借助于Linux严格的文件系统访问权限,便实现了apk之间不能相互访问似有数据的机制。
例:我的应用创建的一个文件,默认权限如下,可以看到只有UserID为app_21的程序才能读写该文件。
-rw——- app_21   app_21      87650 2000-01-01 09:48 test.txt

如何对外开放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 标记。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的显式权限声明
Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。
一般以下动作时都需要申请相应的权限:

A particular permission may be enforced at a number of places during your program’s operation:

  • At the time of a call into the system, to prevent an application from executing certain functions.
  • When starting an activity, to prevent applications from launching activities of other applications.
  • Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
  • When accessing and operating on a content provider.
  • Binding or starting a service.

在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。
在程序运行期间是不检测权限的。
如果安装时权限获取失败,那执行就会出错,不会提示用户权限不够。
大多数情况下,权限不足导致的失败会引发一个 SecurityException, 会在系统log(system log)中有相关记录。

(5)权限继承/UserID继承
当我们遇到apk权限不足时,我们有时会考虑写一个linux程序,然后由apk调用它去完成某个它没有权限完成的事情,很遗憾,这种方法是行不通的。
前面讲过,android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限),
即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被限制。
实际上,android是通过给子进程分配父进程的UserID实现这一机制的。

(三)常见权限不足问题分析

首先要知道,普通apk程序是运行在非root、非system层级的,也就是说看要访问的文件的权限时,看的是最后三位。
另外,通过system/app安装的apk的权限一般比直接安装或adb install安装的apk的权限要高一些。

言归正传,运行一个android应用程序过程中遇到权限不足,一般分为两种情况:
(1)Log中可明显看到权限不足的提示。
此种情况一般是AndroidManifest.xml中缺少相应的权限设置,好好查找一番权限列表,应该就可解决,是最易处理的情况。

有时权限都加上了,但还是报权限不足,是什么情况呢?
Android系统有一些API及权限是需要apk具有一定的等级才能运行的。
比如 SystemClock.setCurrentTimeMillis()修改系统时间,WRITE_SECURE_SETTINGS权限 好像都是需要有system级的权限才行。
也就是说UserID是system.

(2)Log里没有报权限不足,而是一些其他Exception的提示,这也有可能是权限不足造成的。
比如:我们常会想读/写一个配置文件或其他一些不是自己创建的文件,常会报java.io.FileNotFoundException错误。
系统认为比较重要的文件一般权限设置的也会比较严格,特别是一些很重要的(配置)文件或目录。

-r–r—– bluetooth bluetooth      935 2010-07-09 20:21 dbus.conf
drwxrwx–x system   system            2010-07-07 02:05 data

dbus.conf好像是蓝牙的配置文件,从权限上来看,根本就不可能改动,非bluetooth用户连读的权利都没有。

/data目录下存的是所有程序的私有数据,默认情况下android是不允许普通apk访问/data目录下内容的,通过data目录的权限设置可知,其他用户没有读的权限。
所以adb普通权限下在data目录下敲ls命令,会得到opendir failed, Permission denied的错误,通过代码file.listfiles()也无法获得data目录下的内容。
上面两种情况,一般都需要提升apk的权限,目前我所知的apk能提升到的权限就是system(具体方法见:如何使Android应用程序获取系统权限),
至于是否有root级的,如何提升至root级不得而知,知道的朋友劳烦告知,感激不尽

转载自

狐狸浩浩技术空间http://hi.baidu.com/donghaozheng/blog/item/23ca75ec0028bbdc2e2e21c5.html

发表在 Android开发 | 标签为 , | 留下评论

Android样式之在代码中添加样式

有时候需要在java中定义控件,但是系统的控件难看。

想换Style?setStyle?Android View中根本就没有这个方法。

因为Style不是一个属性,而是一个属性集合。所以是无法直接set的。

这里以CheckBox做示例

找到framework下的res目录下的values/Theme.xml。找到CheckBox的样式定义

1
2
3
<item name="checkboxStyle">
    @android:style/Widget.CompoundButton.CheckBox
</item>

打开同目录下的style.xml,找到“Widget.CompoundButton.CheckBox”样式。

1
2
3
4
5
6
7
8
<style name="Widget.CompoundButton.CheckBox">
    <item name="android:background">
         @android:drawable/btn_check_label_background
    </item>
    <item name="android:button">
        @android:drawable/btn_check
    </item>
</style>

下面知道该怎么做了吧?

在代码中给上面的属性赋相应的值就可以了。

1
2
 cb.setBackgroundResource(R.drawable.checkbox_bg);
 cb.setButtonDrawable(R.drawable.checkbox_button);

还有一种方法,但是对大部分应用程序来说都做不到,因为需要在系统资源中添加Style(可能有更好的方法,暂未找到)。

具体方法就不写了,参考上面代码。

在程序中使用View的构造函数:

1
CheckBox cb = new CheckBox(context, null, android.R.attr.CheckBox);

上面的R.style.CheckBox就是样式文件了。

本文出自”Android龙“,转载请注明出处http://www.20864.com/?p=132

发表在 Android开发 | 标签为 , | 留下评论

暂未注册的较好域名

com、net域名:
cnxiluo.com
csshing.com
comapr.com
clsh.net
mnnic.com
cumway.com
enashop.com
earnmine.com
hanizi.com
duomap.com
finevip.com
exiaozi.com
julock.com
ida3.com
hoiiy.com
joyskys.com
laijiayou.com
nextting.com
laoabc.com
oilta.com
antgame.net
atbeat.com
prfd.net
pfef.net
qhff.net
rsrk.net
rrtk.net
qljy.net
qmdf.net
spwz.net
pfst.net
rycq.net
rbxx.net
sxco.net
sbau.net
slox.net

关于sky的未注册5位com域名:
skyaf.com
skyaj.com
skyaq.com
skyaw.com
skyay.com
skybn.com
skybq.com
skybv.com
skybw.com
skydf.com
skydp.com
skyeq.com
skyfd.com
skyfk.com
skyfq.com
skyfp.com
skyfl.com
skyfw.com
skyfn.com
skygc.com
skyfv.com
skygf.com
skygj.com
skygv.com
skyhb.com
skyhs.com
skyhv.com
skyih.com
skyij.com
skyil.com
skyiz.com
skyjg.com
skyjc.com
skyji.com
skyjm.com
skyjn.com
skyju.com
skyjt.com
skyjw.com
skyjv.com
skykb.com
skykh.com
skykg.com
skykv.com
skylb.com
skylh.com
skykx.com
skylq.com
skylv.com
skymj.com
skymw.com
skynq.com
skynp.com
skynl.com
skynw.com
skyoj.com
skyog.com
skyoq.com
skyov.com
skypj.com
skyqb.com
skyqf.com
skyqn.com
skyqp.com
skyqo.com
skyqg.com
skyqm.com
skyqw.com
skyqz.com
skyqx.com
skyqv.com
skyqs.com
skyrg.com
skyrq.com
skysb.com
skytn.com
skyuh.com
skyug.com
skyuj.com
skyuq.com
skyuy.com
skyuw.com
skyvb.com
skyvf.com
skyvh.com
skyvm.com
skyvj.com
skyvk.com
skyvt.com
skyvw.com
skyvq.com
skyvl.com
skywc.com
skywf.com
skywk.com
skywh.com
skywt.com
skyxq.com
skyxv.com
skyxg.com
skyyb.com
skyyg.com
skyyk.com
skyzb.com
skyzn.com
skyzt.com
skyzv.com
skyzm.com

关于tao的5位未注册com域名:
taoaf.com
taocv.com
taodw.com
taoej.com
taoeh.com
taofh.com
taofd.com
taofv.com
taogq.com
taogk.com
taohx.com
taojq.com
taokv.com
taomq.com
taonq.com
taooz.com
taooy.com
taoqm.com
taorh.com
taorv.com
taosr.com
taoub.com
taouf.com
taouq.com
taovb.com
taovf.com
taovg.com
taovk.com
taovl.com
taovh.com
taovj.com
taovq.com
taovt.com
taovz.com
taovx.com
taowr.com
bptao.com
bqtao.com
brtao.com
bvtao.com
bwtao.com
cvtao.com
cwtao.com
cttao.com
dttao.com
dvtao.com
ehtao.com
fdtao.com
fntao.com
fptao.com
fqtao.com
frtao.com
fwtao.com
fvtao.com
gctao.com
ghtao.com
gqtao.com
grtao.com
gttao.com
ijtao.com
irtao.com
jrtao.com
kctao.com
kftao.com
kvtao.com
kztao.com
lbtao.com
mqtao.com
nqtao.com
nptao.com
nltao.com
ojtao.com
oqtao.com
ovtao.com
owtao.com
oytao.com
pbtao.com
pdtao.com
pjtao.com
pntao.com
pqtao.com
pvtao.com
qgtao.com
qftao.com
qptao.com
qntao.com
qrtao.com
qttao.com
qwtao.com
rbtao.com
rdtao.com
rftao.com
rgtao.com
rhtao.com
rktao.com
rltao.com
rqtao.com
rntao.com
rttao.com
rvtao.com
sltao.com
srtao.com
svtao.com
tftao.com
trtao.com
uftao.com
ugtao.com
uhtao.com
ujtao.com
uttao.com
uwtao.com
uytao.com
vbtao.com
vdtao.com
vftao.com
vgtao.com
vhtao.com
vjtao.com
vmtao.com
vptao.com
vttao.com
vqtao.com
vutao.com
vwtao.com
vxtao.com
wctao.com
vztao.com
wvtao.com
xqtao.com
xrtao.com
xttao.com
yvtao.com
zctao.com
zftao.com
zvtao.com

未注册com域名:
gounn.com
goumax.com
goubeta.com
hubeta.com
lubeta.com
dabeta.com
banww.com
banmm.com
banwap.com
banvv.com
yindm.com
yinvv.com
yinbeta.com
yinwap.com
hubeta.com
zaiie.com
zaixx.com
zaivv.com
zaiaa.com
zaibox.com
zaiwap.com
hubeta.com
dmyin.com
dmzai.com
dmfei.com
dmbeta.com
pubeta.com
feiuu.com
feibeta.com
feimax.com
aayin.com
aazai.com
cczai.com
ooyin.com
oozai.com
sszai.com
ssfei.com
ssbeta.com
vvban.com
vvzai.com
vvyin.com
vvfei.com
vvbeta.com
wwyin.com
wwban.com
wwbeta.com
nnyin.com
xxzai.com
xxfei.com
boxtu.com
boxgou.com
boxlu.com
boxzai.com
boxdm.com
boxban.com
boxfei.com
boxww.com
boxwap.com
maxyin.com
maxzai.com
betaao.com
betatu.com
betaso.com
betagou.com
betaha.com
betaba.com
betalu.com
betahu.com
betalv.com
betaie.com
betahu.com
betaza.com
betadm.com
betahu.com
betayin.com
betazai.com
betapu.com
betafei.com
betaoo.com
betaww.com
betavv.com
betacc.com
betauu.com
betamm.com
betaxx.com
betann.com
mailhu.com
mailgou.com
mailyin.com
mailhu.com
mailzai.com
mailhu.com
mailsu.com
mailpu.com
mailfei.com
mailuu.com
wapzai.com

发表在 网络 | 标签为 | 留下评论

ListView之动态修改

关于ListView样式及内容的动态修改,本文使用了重写BaseAdapter。

MyAdapter 类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.android.test;
import java.util.ArrayList;
import java.util.Map;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter {
    private ListMain main;
    private ArrayList<Map<String, Object>> list;
    public MyAdapter(ListMain main, ArrayList<Map<String, Object>> list) {
        this.main = main;
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }
    @Override
    public Object getItem(int position) {
       return list.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //如果未选择或list列表为空时直接跳出,避免NullPointException
        if (position < 0 || list.size() <= 0) {
            return null;
        }
        //如果为空重新导入ListView的布局文件,布局文件自定义
        if (convertView == null) {
            convertView = LayoutInflater.from(main).inflate(R.layout.list1, null);
        }
        //实例化
        ImageView img = (ImageView)convertView.findViewById(R.id.list1_img_icon);
        TextView tv1 = (TextView)convertView.findViewById(R.id.list1_tv1);
        TextView tv2 = (TextView)convertView.findViewById(R.id.list1_tv2);
        //获取参数
        Map<String, Object> map = list.get(position);
        tv1.setText((String)map.get("TITLE"));
        tv2.setText((String)map.get("CONTENT"));
        //修改样式
        if (main.getStatus(position) == ListMain.LIST_SELECT) {
            convertView.setBackgroundColor(Color.parseColor("#003D79"));
            img.setBackgroundResource(R.drawable.ic_settings_personalize);
            tv1.setTextColor(Color.BLUE);
            tv1.setShadowLayer(1, 1, 0.75f, Color.WHITE);
        } else {
            convertView.setBackgroundColor(Color.BLACK);
            img.setBackgroundResource(Integer.valueOf(map.get("IMG").toString()));
            tv1.setTextColor(Color.WHITE);
            tv1.setShadowLayer(1, 1, 0.75f, Color.CYAN);
        }
    return convertView;
    }
}

在ListMain中,插入一个ArrayList>

1
2
3
4
5
6
7
8
9
ArrayList<Map<String, Object>> list;
list = new ArrayList<Map<String,Object>>();
for (int i = 0; i < TITLE.length; i++) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("TITLE", TITLE[i]);
    map.put("CONTENT", CONTENT[i]);
    map.put("IMG", IMG[i]);
    map.put("STATUS", LIST_NOT);
    list.add(map);}

将ListView与Adapter绑定:

1
2
adapter = new MyAdapter(this, list);
lv.setAdapter(adapter);

在onItemClick中处理选中事件:

1
2
3
4
5
6
7
for (int i = 0; i < TITLE.length; i++) {
    list.get(i).put("STATUS", LIST_NOT);
}
list.get(arg2).put("STATUS", LIST_SELECT);
 
adapter.getView(arg2, null, lv);
adapter.notifyDataSetChanged();

效果图如下(图片随便拉来的:-))
初始时:

选中“后来”,改变图标,改变字体颜色,改变文字阴影。

ok,这样就完成了。
后续继续更新。

本文出自"Android龙",转载请注明出处http://www.20864.com/?p=90

发表在 Android开发 | 标签为 , | 留下评论

众多Android 开源项目推荐,给力工作给力学习

FBReaderJ 

FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。
bookinfo-rus.png 

项目地址:http://www.fbreader.org/FBReaderJ/

 

Angle 
  
Angle是一款专为Android平台设计的,适合快速开发的2D游戏引擎,基于OpenGL ES技术开发。该引擎全部用Java代码编写,并且可以根据自己的需要替换里面的实现。项目地址:
 

 
 

 

android-shuffle   
android-shuffle是一个GTD(Getting Things Done)个人备忘记事本。
3429748650_97b07951e5_o.png4299625001_01b6c3d1ef_o.png 
 
  

Open GPS Tracker 

GPSTracker是一个能够使用Android地图记录你的驾车或旅行路线的项目,出发前打开软件选择开始记录,你所经过的路线就会实时显示在地图上,同时还会显示当前的行驶速度。程序会按用户自己设置的标题自动存路线留做日后查看,也可以把路线分享给朋友。GPSTracker项目是一个Map方面的完整应用,包括两个主要组成部分,第一部分是一个收集和存储GPS追踪数据的系统服务,第二部分是Map Activity控制跟踪数据并在地图上显示提供接口。GPSTracker项目用到了osmdroid项目的部分功能,其中OpenStreetMap是一个可供自由编辑的世界地图,允许您查看,编辑或者使用世界各地的地理数据来帮助您。
media_track.png
satellite.png 
 
  

Rokon 

Rokon是一个强大、可扩展、灵活的Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为Box2D,因此能够实现一些较为复杂的物理效果,有人将它称为Cocos2d-iPhone引擎的Android版(因为业务逻辑和编码风格上也确实很像)。
drop_block_ss1.png )。
drop_block_ss3.png

 
  
 


LGame 

LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本。其底 层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部Graphics API(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本 间主要代码能够相互移植。Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版 已突破1.2MB,Android版有所简化也在500KB左右。此外,该引擎还内置有按照1:1实现的J2ME精灵类及相关组件,可以将绝大多数 J2ME游戏平移到Android或PC版中。
lgame_act.gif 

 
  

OpenIntents 

通过”Intents”,Android给连接软件和动态替换组件提供了优秀的基础。Google定义了一批intents(如:打电话啊,联系人清单上选择一个联系人,打开浏览器,电池更换的时候提供提示,等等,详细清单请看:available intents和intent class) 但是任何程序可以自由定义额外的intents和content-providers。我们可以很容易的联想到独立开发的程序(比如在这次的比赛中)极少有可能会和新定义的intents和接口良好的一起工作。 我们这个项目的目标是收集很可能在多个项目中都有用的想法(而且很可能已经被其他独立程序员实现了),定义一批比较合理且扩展性比较好的一批intents和接口,提供基础但稳定有效的实现,可以被其他Android程序所应用的,特别是其他参加比赛的程序员们。OpenIntents本身也会参加这次的比赛。我们提供小的样品程序来演示OpenIntents的用法和特性。 因为我们专注于经常被使用到的那些intents,Google也很可能在不久的将来提供他们自己的标准intents(比如关于日历的。。。)当那个发生的时候,我们会提供透明的接口来直接呼叫Google的实现方法,而你已有的程序可以直接使用Google的新功能而不需要改变任何东西。而且,由于你的程序在设计初期就是已经支持intents的了,当Google的intents出来的时候,你可以很方便的直接他们的intents。还有可能的是Google可能会借用一些OpenIntents开发的intents。无论如何,如果你的程序使用OpenIntents,在和其他使用OpenIntents程序提供互相支持的同时,你会得到额外的附加值,从而全面增强用户体验。
openintents1.pngmainscreen2.png 
 
  

android-bluetooth 

非常官方Android Bluetooth API支持远程设备扫描、远程设备配对,服务发现(SDP)和客户端RFCOMM串行连接。项目地址:http://code.google.com/p/android-bluetooth/

 
 
 


Android apktool   

Android apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片、XML配置、语言资源等文件,也可以添加新的功能到APK文件中。用该工具来汉化Android软件然后重新打包发布是相当简单的。
 
  

quake2android 

quake2android是一个将《雷神之锤2》(Quake2)游戏移植到Android平台上的开源项目。支持谷歌Nexus One,三星Galaxy S,摩托罗拉Droid X等手机。
Quake2.jpg 
 
  

AndEngine 

AndEngine是一个开源的,基于OpenGL实现的Android 2D游戏引擎。这里提供一些基于AndEngine实现的示例。
 
  

android-opencv 

android-opencv是一个将OpenCV移到Android手机平台的开源项目,该项目使用OpenCV最新的一个分枝并利用一个改良过的Android NDK进行构建。项目地址:http://code.google.com/p/android-opencv/

 
 


android-dalvik-vm-on-java  
android-dalvik-vm-on-java该项目的目标是开发一个采用Java实现的Android Dalvik虚拟机。目的是为了学习Dalvik VM的思想和架构。当前支持Dalvik可执行文件格式(.dex),完整的Dalvik指令系统,J2ME CLDC API,多线程(包括同步阻塞,等待和通知)。项目地址:http://code.google.com/p/android-opencv

 
 


Android PC_BCR 
Android PC_BCR让你能够使用你的Android手机做为PC机的外围条形码扫描仪。扫描的条形码将通过WiFi网络连接传PC机中。这个开源项目由多个组件组成,在手机设备上PC_BCR使用ZXing扫描仪器来扫描条形码,然后程序通过网络传到PC中,PC中有专门的PC_BCR程序接收。项目地址:http://code.google.com/p/android-pcbcr/

 
 
 


android-sms   

android-sms能够将Android SMS短信备份到Gmail中的Android开源程序。


jPCT-AE   
jPCT-AE是一个将jPCT移植至Android平台上3D图形引擎。
karga1.jpg

 

  

AndTweet 

AndTweet是一个轻量级Twitter客户端,支持利用触摸和键盘进行快速操作。
3328108955_a142931f3f_o.png3236629233_b9396a131c.png
 

项目地址:http://code.google.com/p/andtweet/

 
 


android-smspopup  

android-smspopup这个Android应用程序能够拦截收到的短消息并在一个弹出框中显示消息内容和联系人头像。此外还可以自定义LED颜色,振动模式,当第一次提醒显示没有看到时会重复提醒用户哪些信息没有看过。

 

项目地址:http://code.google.com/p/android-smspopup/


 

MyTracks 

My Tracks能够记录你在户外活动的GPS轨迹并实时显示时间,速度,距离和海拔等信息。还可以将这些信息上传至Google Spreadsheets并在Google My Maps中显示。

 

项目地址:http://code.google.com/p/mytracks/

 
 


 

i-jetty 
ijetty-screen2.jpg
i-jetty是一个将开源Web容器Jetty移植到Google Android手机平台上的开源项目。让你可以在手机上运行现有的Web应用。
 

项目地址:http://code.google.com/p/i-jetty/

 

 


   

webOdroid 

webOdroid这个开源项目提供了一组完整的工具,能够根据现有网站创建一个Android应用程序。它提供的特性包括:
  • 一个功能齐全的RSS浏览器
  • 能够显示文章列表的ListView或GridView控件。
  • 提供易于定制的模板
  • 在网站上执行远程搜索
  • 根据文章标题提供搜索建议
  • 异步下载和缓存RSS供稿和图片
  • 动态抽取和裁剪文章的图片
  • 通过一个专用的Joomla组件能够集成Joomla网站的搜索功能

项目地址:http://www.webodroid.com/

 


android-json-rpc 

android-json-rpc是一个在android程序中使用的JSON-RPC客户端类库。它提供了一个简单的API来执行JSON-RPC服务调用。
 

项目地址:http://code.google.com/p/android-json-rpc/

 
 
 


BikeRoute 
BikeRoute是一个Android应用程序提供基于GPS线路计划和定位功能。支持A到B路径规划,附近的单车停放处的位置,一步一步的指示,路线图,卫星导航等功能。
BikeRoute.jpgBikeRoute.jpg
 

  

Andorid PDF Viewer 

Andorid PDF Viewer是一个运行在ANDROID手机上的PDF文件查看器。它是pdf-rendere:https://pdf-renderer.dev.java.net/的一个移植实现。
 

项目地址:http://andpdf.sourceforge.net/

 
 


 Spring Android 

 Spring Android 是Spring框架的扩展,用于简化 Android 本地应用程序的开发。

 

项目地址:http://www.springsource.org/spring-android

 
 
 


AchartEngine 

AChartEngine是一个针对Android程序开发的开源图表生成类库。支持以下几种图表类型:

  • 折线图
  • 区域图
  • 散点图
  • time chart
  • 柱状图
  • 饼状图
  • bubble chart
  • doughnut chart

range (high-low) bar chart

项目地址:http://code.google.com/p/achartengine/

 
 
 


Opencore 
Opencore是google联合packetvideo推出的多媒体开源框架,其中的h.264解码器在目前所有的开源h.264解码器中最好的,在win32和armv4上测试通过,性能好很多,大概提升20%!OpenCore的另外一个常用的称呼是PacketVideo,它是Android的多媒体核心。在防站的过程中,PacketVideo是一家公司的 名称,而OpenCore是这套多媒体框架的软件层的名称。在Android的开发者中间,二者的含义基本相同。对比Android的其它程序 库,OpenCore的代码非常庞大,它是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多 使用继承等方式。

OpenCore是一个多媒体的框架,从宏观上来看,它主要包含了两大方面的内容:

    * PVPlayer:提供媒体播放器的功能,完成各种音频(Audio)、视频(Video)流的回放(Playback)功能
    * PVAuthor:提供媒体流记录的功能,完成各种音频(Audio)、视频(Video)流的以及静态图像捕获功能

 

项目地址:http://www.opencore.net/

 
 


  

Android Tools 
Android Tools是一个轻量级IDE用于创建、构建、安装和测试Android应用程序。可方便的通过点击访问Android的命令、目录和文件。它还提供一个内置的文本编辑器。Android Tools能够让学习和使用Android变得更加简便。
AndroidToolsBasicTab.jpg
 

项目地址:http://fieldbird.sourceforge.net/AndroidTools/

 
 


  

android-binding 
android-binding这个开源项目提供了一个框架用于将android view widgets与数据模型相绑定。帮助您在android应用程序中实现MVC或MVVM模式。
 

项目地址:http://code.google.com/p/android-binding/

 
 


Robotium 

Robotium是一个测试框架能够方便你为Android应用程序编写强大、健壮的自动黑盒测试用例。利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案Robotium支持Activities、Dialogs、Toasts、Menus和Context Menus。

 

项目地址:http://code.google.com/p/robotium/ 

 

 

 


QuiteSleep 

QuiteSleep是一个Android2.0+应用程序,可以设置免打扰时间段。这个时间段内,打进来的电话将会被阻止并通过SMS或E-Mail发送预定义好的信息给打电话者告知他你正忙或正在睡觉等。
 

 


  fanfoudroid 

安能饭否是一款开源的饭否Android客户端 。目前支持功能: 消息/私信收发,后台提醒,回复/转发/收藏,查看/关注用户,拍照/图片上传。即将支持功能: 关注管理,随便看看。 
5344789918_58acfe070b.jpg
 

项目地址:http://code.google.com/p/fanfoudroid/


 

Skylight1 

Skylight1是一个开源的Java手机应用程序开发框架和一些Android应用程序与示例。

这个开源项目包含了以下子项目:

  • SkylightOpenGL – OpenGL wrapper DSL to the Java binding for OpenGL ES – JSR 239 for Android and Java ME
  • Skylight1 DI – 一个依赖注入框架
  • Skylight1 Mocks – 一组Android电话的模拟对象,包括回放。
  • Skylight1 Utils – 工具类如:FPS计数器,远程异常堆栈处理。
  • Skylight1 UI – 公共可定制UI类
  • Skylight1 XML – XML解析类。
  • Skylight1 Server – corresponding server side projects and utils
  • MarketConsoleScraper – Android Market console scraper contributed by Worksmart Labs
  • Skylight1 Demos – api and sample demos including:
    • Tanked, a 2D OpenGL demo
    • Barnstormer, a 3D OpenGL demo
    • Flick Test, a flick example showing borders of adjacent views
    • Skylight1 Wallpaper, a live wallpaper example featuring selectable backgrounds and a fingerprint.

Current Android Applications:

  • Skylight1 TDC – a test data capture application for Android phones – available here for download
  • Skylight1 Game the initial app, a game for Android phones called “Balance the Beer” – available on the market.
  • NYC Events – an app that lists NYC Parks, Art and Music events. – available on the market
  • Toast – an app that helps you make a toast with your phone! – available on the market

项目地址:http://code.google.com/p/skylight1/


 

Android团队提供的示例项目
如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏、图像处理、时间显示、开始菜单快捷方式等。
地址:http://code.google.com/p/apps-for-android/


 

Remote Droid
RemoteDroid是一个Android应用,能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项目为开发者提供了如网络连接、触 摸屏手指运动等很好的样例。
地址:http://code.google.com/p/remotedroid/


 

TorProxy和Shadow
TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。从该项目源代码中,可以 掌握socket连接、管理cookie等方法。
地址:http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/


 

Android SMSPopup
SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信SMS接口。
地址:http://code.google.com/p/android-smspopup/


 

 Standup Timer
Standup Timer应用用于控制站立会议时间,类似秒表倒计时,可以提醒每个人的讲话时间已到,从而保证每个与会者使用时间一样。从该项目的代码中,可以学会如何 使用时间函数。另外,这个项目的代码是采用视图view、模型model严格分离的设计思路。
地址:http://github.com/jwood/standup-timer


 

 Foursquare
是 Foursquare.com的一个客户端应用,该应用主要分为两个模块:API(com.joelapenna.foursquare)和界面前端 (com.joelapenna.foursquared)两部分。从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。
地址:http://code.google.com/p/foursquared/


 

 Pedometer
Pedometer应用用于记录你每天走路步[]数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新、后台运行服 务等。
地址:http://code.google.com/p/pedometer/


 

 OpenSudoku-android
OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一个网站交互等技术。
地址:http://code.google.com/p/opensudoku-android


 

ConnectBot
ConnectBot是Android平台的一个客户端安全壳应用。从该项目代码中,可以学习到很多Android安全方面的内容,这些是你在开发应用 时经常需要考虑的安全问题。
地址:http://code.google.com/p/connectbot/


 

WordPress的Android应用
当然在最后不能不提Wordpress的Android应用了,这是Wordpress官方开发团队提供的一个项目。从代码中可以学习到XMLRPC调 用(当然还有更多的优秀内容)。
地址:http://android.svn.wordpress.org/trunk/


 

 Jamendo

Jamendo在线音乐播放器是一款android平台在开源的在线音乐播放,该播放器的主要特色如下:

1.       界面美观,在jamendo播放器中精美的布局的随处可见,大量使用自定义控件和Adapter进行布局,这点可供初学者好好探讨研究

2.       构架清晰

3.       在代码中大量使用全局缓冲机制,如全局Application缓冲,图片缓冲等等。。

4.       数据传递使用JSON方式,网络传输(Apache Http 4.0)。。。

5.       全局的MediaService,并且伴有NotifyManager等进行通知

   部分截图如下:

    主界面:

   

    MusicSearch界面


  

    Music 播放界面,从图中可以看出,播放界面做的很美观

  

   播放界面下方用到了SlidingDrawer
  

      RadioSearch 界面

   
 

   Jamendo 官方网站:http://www.jamendo.com/en

    分享的内容依次是:

   1.分析Music搜索实现,主要是网络和JSON传输

   2.分析全局Application缓存实现方法

   3.分析Download模块

   4.分析Adapter使用

   5.分析全局Service构成

   6.分析自定义Widet,代码中大量使用自定义布局,对新手学习布局很有帮助

   7.分析整体结构

学习Android 或者做Android 项目的可以参考这些。

本文出自 “Terry_龙” 博客,请务必保留此出处http://terryblog.blog.51cto.com/1764499/547777

发表在 Android开发 | 标签为 , | 留下评论

Android 源码目录结构详解

Android 2.1
|– Makefile
|– bionic                        (bionic C库)
|– bootable                (启动引导相关代码)
|– build                        (存放系统编译规则及generic等基础开发包配置)
|– cts                        (Android兼容性测试套件标准)
|– dalvik                        (dalvik JAVA虚拟机)
|– development        (应用程序开发相关)
|– external                (android使用的一些开源的模组)
|– frameworks                (核心框架——java及C++语言)
|– hardware                (部分厂家开源的硬解适配层HAL代码)
|– out                        (编译完成后的代码输出与此目录)
|– packages                (应用程序包)
|– prebuilt                (x86和arm架构下预编译的一些资源)
|– sdk                        (sdk及模拟器)
|– system                        (底层文件系统库、应用及组件——C语言)
`– vendor                (厂商定制代码)

bionic 目录
|– libc                        (C库)
|   |– arch-arm        (ARM架构,包含系统调用汇编实现)
|   |– arch-x86        (x86架构,包含系统调用汇编实现)
|   |– bionic                (由C实现的功能,架构无关)
|   |– docs                (文档)
|   |– include                (头文件)
|   |– inet                (?inet相关,具体作用不明)
|   |– kernel                (Linux内核中的一些头文件)
|   |– netbsd                (?nesbsd系统相关,具体作用不明)
|   |– private                (?一些私有的头文件)
|   |– stdio                (stdio实现)
|   |– stdlib                (stdlib实现)
|   |– string                (string函数实现)
|   |– tools                (几个工具)
|   |– tzcode                (时区相关代码)
|   |– unistd                (unistd实现)
|   `– zoneinfo        (时区信息)
|– libdl                        (libdl实现,dl是动态链接,提供访问动态链接库的功能)
|– libm                        (libm数学库的实现,)
|   |– alpha                (apaha架构)
|   |– amd64                (amd64架构)
|   |– arm                (arm架构)
|   |– bsdsrc                (?bsd的源码)
|   |– i386                (i386架构)
|   |– i387                (i387架构?)
|   |– ia64                (ia64架构)
|   |– include                (头文件)
|   |– man                (数学函数,后缀名为.3,一些为freeBSD的库文件)
|   |– powerpc        (powerpc架构)
|   |– sparc64                (sparc64架构)
|   `– src                (源代码)
|– libstdc++                (libstdc++ C++实现库)
|   |– include                (头文件)
|   `– src                (源码)
|– libthread_db        (多线程程序的调试器库)
|   `– include                (头文件)
`– linker                        (动态链接器)
`– arch                (支持arm和x86两种架构)

bootable 目录
.
|– bootloader                                (适合各种bootloader的通用代码)
|   `– legacy                                (估计不能直接使用,可以参考)
|       |– arch_armv6                (V6架构,几个简单的汇编文件)
|       |– arch_msm7k                (高通7k处理器架构的几个基本驱动)
|       |– include                        (通用头文件和高通7k架构头文件)
|       |– libboot                        (启动库,都写得很简单)
|       |– libc                        (一些常用的c函数)
|       |– nandwrite                (nandwirte函数实现)
|       `– usbloader                (usbloader实现)
|– diskinstaller                        (android镜像打包器,x86可生产iso)
`– recovery                                (系统恢复相关)
    |– edify                                (升级脚本使用的edify脚本语言)
    |– etc                                (init.rc恢复脚本)
    |– minui                                (一个简单的UI)
    |– minzip                                (一个简单的压缩工具)
    |– mtdutils                        (mtd工具)
    |– res                                (资源)
    |   `– images                        (一些图片)
    |– tools                                (工具)
    |   `– ota                        (OTA Over The Air Updates升级工具)
`– updater                        (升级器)

build目录
.
|– core                                (核心编译规则)
|– history                                (历史记录)
|– libs                               
|   `– host                        (主机端库,有android “cp”功能替换)
|– target                                (目标机编译对象)
|   |– board                        (开发平台)
|   |   |– emulator        (模拟器)
|   |   |– generic                (通用)
|   |   |– idea6410        (自己添加的)
|   |   `– sim                (最简单)
|   `– product                (开发平台对应的编译规则)
|       `– security        (密钥相关)
`– tools                                (编译中主机使用的工具及脚本)
    |– acp                        (Android “acp” Command)
    |– apicheck                (api检查工具)
    |– applypatch                (补丁工具)
    |– apriori                        (预链接工具)
    |– atree                        (tree工具)
    |– bin2asm                (bin转换为asm工具)
    |– check_prereq        (检查编译时间戳工具)
    |– dexpreopt                (模拟器相关工具,具体功能不明)
    |– droiddoc                (?作用不明,java语言,网上有人说和JDK5有关)
    |– fs_config                (This program takes a list of files and directories)
    |– fs_get_stats                (获取文件系统状态)
    |– iself                        (判断是否ELF格式)
    |– isprelinked                (判断是否prelinked)
    |– kcm                        (按键相关)
    |– lsd                        (List symbol dependencies)
    |– releasetools                (生成镜像的工具及脚本)
    |– rgb2565                (rgb转换为565)
    |– signapk                (apk签名工具)
    |– soslim                        (strip工具)
`– zipalign                (zip archive alignment tool)

dalvik目录 dalvik虚拟机
.
|– dalvikvm                        (main.c的目录)
|– dexdump                        (dex反汇编)
|– dexlist                                (List all methods in all concrete classes in a DEX file.)
|– dexopt                                (预验证与优化)
|– docs                                (文档)
|– dvz                                (和zygote相关的一个命令)
|– dx                                (dx工具,将多个java转换为dex)
|– hit                                (?java语言写成)
|– libcore                                (核心库)
|– libcore-disabled                (?禁用的库)
|– libdex                                (dex的库)
|– libnativehelper                (Support functions for Android’s class libraries)
|– tests                                (测试代码)
|– tools                                (工具)
`– vm                                (虚拟机实现)

development 目录                (开发者需要的一些例程及工具)
|– apps                                (一些核心应用程序)
|   |– BluetoothDebug        (蓝牙调试程序)
|   |– CustomLocale        (自定义区域设置)
|   |– Development        (开发)
|   |– Fallback                (和语言相关的一个程序)
|   |– FontLab                (字库)
|   |– GestureBuilder        (手势动作)
|   |– NinePatchLab        (?)
|   |– OBJViewer                (OBJ查看器)
|   |– SdkSetup                (SDK安装器)
|   |– SpareParts                (高级设置)
|   |– Term                        (远程登录)
|   `– launchperf                (?)
|– build                                (编译脚本模板)
|– cmds                                (有个monkey工具)
|– data                                (配置数据)
|– docs                                (文档)
|– host                                (主机端USB驱动等)
|– ide                                (集成开发环境)
|– ndk                                (本地开发套件——c语言开发套件) (android 2.2将此部分移出,单独成一目录)
|– pdk                                (Plug Development Kit)
|– samples                        (例程)
|   |– AliasActivity        (?)
|   |– ApiDemos                (API演示程序)
|   |– BluetoothChat        (蓝牙聊天)
|   |– BrowserPlugin        (浏览器插件)
|   |– BusinessCard        (商业卡)
|   |– Compass                (指南针)
|   |– ContactManager        (联系人管理器)
|   |– CubeLiveWallpaper        (动态壁纸的一个简单例程)
|   |– FixedGridLayout        (像是布局)
|   |– GlobalTime                (全球时间)
|   |– HelloActivity        (Hello)
|   |– Home                        (Home)
|   |– JetBoy                        (jetBoy游戏)
|   |– LunarLander        (貌似又是一个游戏)
|   |– MailSync                (邮件同步)
|   |– MultiResolution        (多分辨率)
|   |– MySampleRss        (RSS)
|   |– NotePad                (记事本)
|   |– RSSReader                (RSS阅读器)
|   |– SearchableDictionary        (目录搜索)
|   |– SimpleJNI                (JNI例程)
|   |– SkeletonApp        (空壳APP)
|   |– Snake                        (snake程序)
|   |– SoftKeyboard        (软键盘)
|   |– Wiktionary                (?维基)
|   `– WiktionarySimple(?维基例程)
|– scripts                                (脚本)
|– sdk                                (sdk配置)
|– simulator                        (?模拟器)
|– testrunner                        (?测试用)
`– tools                                (一些工具)

external 目录
.
|– aes                        (AES加密)
|– apache-http                (网页服务器)
|– astl                        (ASTL (Android STL) is a slimmed-down version of the regular C++ STL.)
|– bison                        (自动生成语法分析器,将无关文法转换成C、C++)
|– blktrace                (blktrace is a block layer IO tracing mechanism)
|– bluetooth                (蓝牙相关、协议栈)
|– bsdiff                        (diff工具)
|– bzip2                        (压缩工具)
|– clearsilver                (html模板系统)
|– dbus                        (低延时、低开销、高可用性的IPC机制)
|– dhcpcd                (DHCP服务)
|– dosfstools                (DOS文件系统工具)
|– dropbear                (SSH2的server)
|– e2fsprogs                (EXT2文件系统工具)
|– elfcopy                (复制ELF的工具)
|– elfutils                        (ELF工具)
|– embunit                (Embedded Unit Project)
|– emma                        (java代码覆盖率统计工具)
|– esd                        (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放)
|– expat                        (Expat is a stream-oriented XML parser.)
|– fdlibm                        (FDLIBM (Freely Distributable LIBM))
|– freetype                (字体)
|– fsck_msdos                (dos文件系统检查工具)
|– gdata                        (google的无线数据相关)
|– genext2fs                (genext2fs generates an ext2 filesystem as a normal (non-root) user)
|– giflib                        (gif库)
|– googleclient        (google用户库)
|– grub                        (This is GNU GRUB, the GRand Unified Bootloader.)
|– gtest                        (Google C++ Testing Framework)
|– icu4c                        (ICU(International Component for Unicode)在C/C++下的版本)
|– ipsec-tools                (This package provides a way to use the native IPsec functionality )
|– iptables                (防火墙)
|– jdiff                        (generate a report describing the difference between two public Java APIs.)
|– jhead                        (jpeg头部信息工具)
|– jpeg                        (jpeg库)
|– junit                        (JUnit是一个Java语言的单元测试框架)
|– kernel-headers        (内核的一些头文件)
|– libffi                        (libffi is a foreign function interface library.)
|– libpcap                (网络数据包捕获函数)
|– libpng                        (png库)
|– libxml2                (xml解析库)
|– mtpd                        (一个命令)
|– netcat                        (simple Unix utility which reads and writes dataacross network connections)
|– netperf                        (网络性能测量工具)
|– neven                        (看代码和JNI相关)
|– opencore                (多媒体框架)
|– openssl                (SSL加密相关)
|– openvpn                (VPN开源库)
|– oprofile                (OProfile是Linux内核支持的一种性能分析机制。)
|– ping                        (ping命令)
|– ppp                        (pppd拨号命令,好像还没有chat)
|– proguard                (Java class file shrinker, optimizer, obfuscator, and preverifier)
|– protobuf                (a flexible, efficient, automated mechanism for serializing structured data)
|– qemu                        (arm模拟器)
|– safe-iop                (functions for performing safe integer operations )
|– skia                        (skia图形引擎)
|– sonivox                (sole MIDI solution for Google Android Mobile Phone Platform)
|– speex                        (Speex编/解码API的使用(libspeex))
|– sqlite                        (数据库)
|– srec                        (Nuance 公司提供的开源连续非特定人语音识别)
|– strace                        (trace工具)
|– svox                        (Embedded Text-to-Speech)
|– tagsoup                (TagSoup是一个Java开发符合SAX的HTML解析器)
|– tcpdump                (抓TCP包的软件)
|– tesseract                (Tesseract Open Source OCR Engine.)
|– tinyxml                (TinyXml is a simple, small, C++ XML parser)
|– tremor                        (I stream and file decoder provides an embeddable,integer-only library)
|– webkit                        (浏览器核心)
|– wpa_supplicant        (无线网卡管理)
|– xmlwriter                (XML 编辑工具)
|– yaffs2                        (yaffs文件系统)
`– zlib                        (a general purpose data compression library)

frameworks 目录        (核心框架——java及C++语言)
.
|– base                        (基本内容)
|   |– api                  (?都是xml文件,定义了java的api?)
|   |– awt                 (AWT库)
|   |– build                (空的)
|   |– camera           (摄像头服务程序库)
|   |– cmds              (重要命令:am、app_process等)
|   |– core                (核心库)
|   |– data                (字体和声音等数据文件)
|   |– docs                (文档)
|   |– graphics           (图形相关)
|   |– include             (头文件)
|   |– keystore        (和数据签名证书相关)
|   |– libs                (库)
|   |– location        (地区库)
|   |– media                (媒体相关库)
|   |– obex                (蓝牙传输库)
|   |– opengl                (2D-3D加速库)
|   |– packages        (设置、TTS、VPN程序)
|   |– sax                (XML解析器)
|   |– services        (各种服务程序)
|   |– telephony        (电话通讯管理)
|   |– test-runner        (测试工具相关)
|   |– tests                (各种测试)
|   |– tools                (一些叫不上名的工具)
|   |– vpn                (VPN)
|   `– wifi                (无线网络)
|– opt                        (可选部分)
|   |– com.google.android                                (有个framework.jar)
|   |– com.google.android.googlelogin                (有个client.jar)
|   `– emoji                (standard message elements)
`– policies                (Product policies are operating system directions aimed at specific uses)
    `– base               
        |– mid        (MID设备)
        `– phone   (手机类设备一般用这个,与锁屏有关的代码)

hardware 目录                (部分厂家开源的硬解适配层HAL代码)
|– broadcom                        (博通公司)
|   `– wlan                        (无线网卡)
|– libhardware                        (硬件库)
|   |– include                        (头文件)
|   `– modules                (Default (and possibly architecture dependents) HAL modules)
|       |– gralloc                (gralloc显示相关)
|       `– overlay                (Skeleton for the “overlay” HAL module.)
|– libhardware_legacy        (旧的硬件库)
|   |– flashlight                (背光)
|   |– gps                        (GPS)
|   |– include                        (头文件)
|   |– mount                        (旧的挂载器)
|   |– power                        (电源)
|   |– qemu                        (模拟器)
|   |– qemu_tracing        (模拟器跟踪)
|   |– tests                        (测试)
|   |– uevent                        (uevent)
|   |– vibrator                        (震动)
|   `– wifi                        (无线)
|– msm7k                        (高通7k处理器开源抽象层)
|   |– boot                        (启动)
|   |– libaudio                (声音库)
|   |– libaudio-qsd8k        (qsd8k的声音相关库)
|   |– libcamera                (摄像头库)
|   |– libcopybit                (copybit库)
|   |– libgralloc                (gralloc库)
|   |– libgralloc-qsd8k        (qsd8k的gralloc库)
|   |– liblights                (背光库)
|   `– librpc                        (RPC库)
|– ril                                (无线电抽象层)
|   |– include                        (头文件)
|   |– libril                        (库)
|   |– reference-cdma-sms        (cdma短信参考)
|   |– reference-ril                        (ril参考)
|   `– rild                                (ril后台服务程序)
`– ti                                                (ti公司开源HAL)
    |– omap3                                (omap3处理器)
    |   |– dspbridge                (DSP桥)
    |   |– libopencorehw        (opencore硬件库)
    |   |– liboverlay                (overlay硬件库)
    |   |– libstagefrighthw        (stagefright硬件库)
    |   `– omx                        (omx组件)
    `– wlan                                (无线网卡)

packages 目录
.
|– apps                            (应用程序库)
|   |– AlarmClock              (闹钟)
|   |– Bluetooth                (蓝牙)
|   |– Browser                  (浏览器)
|   |– Calculator                (计算器)
|   |– Calendar                  (日历)
|   |– Camera                   (相机)
|   |– CertInstaller             (在Android中安装数字签名,被调用)
|   |– Contacts                 (拨号(调用)、联系人、通话记录)
|   |– DeskClock               (桌面时钟)
|   |– Email                       (Email)
|   |– Gallery                     (相册,和Camera类似,多了列表)
|   |– Gallery3D                 (?3D相册)
|   |– GlobalSearch            (为google搜索服务,提供底层应用)
|   |– GoogleSearch           (google搜索)
|   |– HTMLViewer             (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)
|   |– IM                            (即时通讯,为手机提供信号发送、接收、通信的服务)
|   |– Launcher                  (登陆启动项,显示图片框架等等图形界面)
|   |– Launcher2                (登陆启动项,负责应用的调用)
|   |– Mms                        (?彩信业务)
|   |– Music                        (音乐播放器)
|   |– PackageInstaller        (安装、卸载程序的响应)
|   |– Phone                        (电话拨号程序)
|   |– Provision                (预设应用的状态,使能应用)
|   |– Settings                (开机设定,包括电量、蓝牙、设备信息、界面、wifi等)
|   |– SoundRecorder        (录音机,可计算存储所需空间和时间)
|   |– Stk                         (接收和发送短信)
|   |– Sync                        (空)   ——-○1
|   |– Updater                (空)
|   `– VoiceDialer                (语音识别通话)
|– inputmethods                (输入法)
|   |– LatinIME                (拉丁文输入法)
|   |– OpenWnn                (OpenWnn输入法)
|   `– PinyinIME                (拼音输入法)
|– providers                        (提供器,提供应用程序、界面所需的数据)
|   |– ApplicationsProvider                (应用程序提供器,提供应用程序启动项、更新等)
|   |– CalendarProvider                        (日历提供器)
|   |– ContactsProvider                        (联系人提供器)
|   |– DownloadProvider                (下载管理提供器)
|   |– DrmProvider                        (创建和更新数据库时调用)
|   |– GoogleContactsProvider        (联系人提供器的子类,用以同步联系人)
|   |– GoogleSubscribedFeedsProvider(设置信息提供器)
|   |– ImProvider                                (空)
|   |– ManagementProvider                (空)
|   |– MediaProvider                        (媒体提供器,提供存储数据)
|   |– TelephonyProvider                (彩信提供器)
|   |– UserDictionaryProvider        (用户字典提供器,提供用户常用字字典)
|   `– WebSearchProvider                (空)
|– services                                       
|   |– EasService                                (空)
|   `– LockAndWipe                        (空)
`– wallpapers                                        (墙纸)
    |– Basic                                        (基本墙纸,系统内置墙纸)
    |– LivePicker                                (选择动态壁纸)
    |– MagicSmoke                        (壁纸特殊效果)
    `– MusicVisualization                (音乐可视化,图形随音乐而变化)

○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。

prebuilt 目录                        (x86和arm架构下预编译的一些资源)
.
|– android-arm                (arm-android相关)
|   |– gdbserver                (gdb调试器)
|   `– kernel                        (模拟的arm内核)
|– android-x86                (x86-android相关)
|   `– kernel                        (空的)
|– common                        (通用编译好的代码,应该是java的)
|– darwin-x86                        (drawin x86平台)
|   `– toolchain                (工具链)
|       |– arm-eabi-4.2.1       
|       |– arm-eabi-4.3.1       
|       `– arm-eabi-4.4.0       
|– darwin-x86_64                (drawin x86 64bit平台)
|– linux-x86                        (linux x86平台)
|   `– toolchain                (工具链,我们应该主要用这个)
|       |– arm-eabi-4.2.1       
|       |– arm-eabi-4.3.1       
|       |– arm-eabi-4.4.0       
|       `– i686-unknown-linux-gnu-4.2.1        (x86版编译器)
|– linux-x86_64                (linux x86 64bit平台)
|– windows                        (windows平台)
`– windows-x86_64        (64bit windows平台)
system 目录                (底层文件系统库、应用及组件——C语言)
.
|– Bluetooth                (蓝牙相关)
|– core                        (系统核心工具盒接口)
|   |– adb                (adb调试工具)
|   |– cpio                (cpio工具,创建img)
|   |– debuggerd        (调试工具)
|   |– fastboot        (快速启动相关)
|   |– include                (系统接口头文件)
|   |– init                (init程序源代码)
|   |– libacc                (轻量级C编译器)
|   |– libctest                (libc测试相关)
|   |– libcutils        (libc工具)
|   |– liblog                (log库)
|   |– libmincrypt        (加密库)
|   |– libnetutils        (网络工具库)
|   |– libpixelflinger        (图形处理库)
|   |– libsysutils        (系统工具库)
|   |– libzipfile        (zip库)
|   |– logcat                (查看log工具)
|   |– logwrapper        (log封装工具)
|   |– mkbootimg        (制作启动boot.img的工具盒脚本)
|   |– netcfg                (网络配置netcfg源码)
|   |– nexus                (google最新手机的代码)
|   |– rootdir                (rootfs,包含一些etc下的脚本和配置)
|   |– sh                        (shell代码)
|   |– toolbox                (toolbox,类似busybox的工具集)
|   `– vold                (SD卡管理器)
|– extras                        (额外工具)
|   |– latencytop        (a tool for software developers ,identifying system latency happen)
|   |– libpagemap        (pagemap库)
|   |– librank                (Java Library Ranking System库)
|   |– procmem        (pagemap相关)
|   |– procrank        (Java Library Ranking System相关)
|   |– showmap        (showmap工具)
|   |– showslab        (showslab工具)
|   |– sound                (声音相关)
|   |– su                        (su命令源码)
|   |– tests                (一些测试工具)
|   `– timeinfo        (时区相关)
`– wlan                        (无线相关)
    `– ti                        (ti网卡相关工具及库)
vendor 目录                        (厂家定制内容)

|– aosp                             (android open source project)
|   `– products                  (一些板级规则)
|– htc                               (HTC公司)
|   |– common-open         (通用部分)
|   |   `– akmd                 (解压img用的工具)
|   |– dream-open            (G1开放部分)
|   |– prebuilt-open           (预编译开放部分)
|   `– sapphire-open         (sapphire这款型号开放内容)
|– pv-open                       (没东西)
|– qcom                           (里面基本是空的)
`– sample                        (google提供的样例)
    |– apps                        (应用)
    |   |– client                   (用户)
    |   `– upgrade              (升级)
    |– frameworks             (框架)
    |   `– PlatformLibrary   (平台库)
    |– products                  (产品)
    |– sdk_addon              (sdk添加部分)
    `– skins                       (皮肤)

        `– WVGAMedDpi      (WVGA适用的图片)

发表在 Android源码 | 标签为 , | 留下评论

Android Permission中英对照

android.permission.ACCESS_CHECKIN_PROPERTIES
Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded
允许读写访问 “properties”表在checkin数据库中,改值可以修改上传

android.permission.ACCESS_COARSE_LOCATION
Allows an application to access coarse (e.g., Cell-ID, WiFi) location
允许一个程序访问CellID或WiFi热点来获取粗略的位置

android.permission.ACCESS_FINE_LOCATION
Allows an application to access fine (e.g., GPS) location
允许一个程序访问精良位置(如GPS)

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
Allows an application to access extra location provider commands
允许应用程序访问额外的位置提供命令

android.permission.ACCESS_MOCK_LOCATION
Allows an application to create mock location providers for testing
允许程序创建模拟位置提供用于测试

android.permission.ACCESS_NETWORK_STATE
Allows applications to access information about networks
允许程序访问有关GSM网络信息 

android.permission.ACCESS_SURFACE_FLINGER
Allows an application to use SurfaceFlinger’s low level features
允许程序使用SurfaceFlinger底层特性

android.permission.ACCESS_WIFI_STATE
Allows applications to access information about Wi-Fi networks
允许程序访问Wi-Fi网络状态信息

android.permission.ADD_SYSTEM_SERVICE
Allows an application to publish system-level services
允许程序发布系统级服务

android.permission.BATTERY_STATS
Allows an application to update the collected battery statistics
允许程序更新手机电池统计信息
android.permission.BLUETOOTH
Allows applications to connect to paired bluetooth devices
允许程序连接到已配对的蓝牙设备

android.permission.BLUETOOTH_ADMIN 
Allows applications to discover and pair bluetooth devices
允许程序发现和配对蓝牙设备

android.permission.BRICK
Required to be able to disable the device (very dangerous!)
请求能够禁用设备(非常危险)

android.permission.BROADCAST_PACKAGE_REMOVED 
Allows an application to broadcast a notification that an application package has been removed
允许程序广播一个提示消息在一个应用程序包已经移除后

android.permission.BROADCAST_STICKY
Allows an application to broadcast sticky intents
允许一个程序广播常用intents

android.permission.CALL_PHONE
Allows an application to initiate a phone call without going through the Dialer user interface for the user to confirm the call being placed
允许一个程序初始化一个电话拨号不需通过拨号 用户界面需要用户确认

android.permission.CALL_PRIVILEGED
Allows an application to call any phone number, including emergency numbers, without going through the Dialer user interface for the user to confirm the call being placed
允许一个程序拨打任何号码,包含紧 急号码无需通过拨号用户界面需要用户确认

android.permission.CAMERA
Required to be able to access the camera device
请求访问使用照相设备

android.permission.CHANGE_COMPONENT_ENABLED_STATE
Allows an application to change whether an application component (other than its own) is enabled or not
允 许一个程序是否改变一个组件或其他的启用或禁用

android.permission.CHANGE_CONFIGURATION
Allows an application to modify the current configuration, such as locale
允许一个程序修改当前设置,如本地化

android.permission.CHANGE_NETWORK_STATE
Allows applications to change network connectivity state
允许程序改变网络连接状态

android.permission.CHANGE_WIFI_STATE
Allows applications to change Wi-Fi connectivity state
允许程序改变Wi-Fi连接状态

android.permission.CLEAR_APP_CACHE
Allows an application to clear the caches of all installed applications on the device
允许一个程序清楚缓存从所有安装的程序在设备中

android.permission.CLEAR_APP_USER_DATA
Allows an application to clear user data 
允许一个程序清除用户设置

android.permission.CONTROL_LOCATION_UPDATES
Allows enabling/disabling location update notifications from the radio
允许启用禁止位置更新提示从无线模块

android.permission.DELETE_CACHE_FILES
Allows an application to delete cache files
允许程序删除缓存文件

android.permission.DELETE_PACKAGES
Allows an application to delete packages
允许一个程序删除包

android.permission.DEVICE_POWER
Allows low-level access to power management
允许访问底层电源管理

android.permission.DIAGNOSTIC
Allows applications to RW to diagnostic resources
允许程序RW诊断资源

android.permission.DISABLE_KEYGUARD
Allows applications to disable the keyguard
允许程序禁用键盘锁

android.permission.DUMP
Allows an application to retrieve state dump information from system services
允许程序返回状态抓取信息从系统服务

android.permission.EXPAND_STATUS_BAR
Allows an application to expand or collapse the status bar 
允许一个程序扩展收缩在状态栏,Android开发网提示应该是一个类似Windows Mobile中的托盘程序

android.permission.FACTORY_TEST
Run as a manufacturer test application, running as the root user
作为一个工厂测试程序,运行在root用户

android.permission.FLASHLIGHT
Allows access to the flashlight
访问闪光灯,Android开发网提示HTC Dream不包含闪光灯

android.permission.FORCE_BACK
Allows an application to force a BACK operation on whatever is the top activity
允许程序强行一个后退操作是否在顶层activities

android.permission.FOTA_UPDATE 
暂时不了解这是做什么使用的,Android开发网分析可能是一个预留权限.

android.permission.GET_ACCOUNTS
Allows access to the list of accounts in the Accounts Service
访问一个帐户列表在Accounts Service中

android.permission.GET_PACKAGE_SIZE
Allows an application to find out the space used by any package
允许一个程序获取任何package占用空间容量

android.permission.GET_TASKS
Allows an application to get information about the currently or recently running tasks: a thumbnail representation of the tasks, what activities are running in it, etc
允许一个程序获取信息有关当前或最近运行的任 务,一个缩略的任务状态,是否活动等等

android.permission.HARDWARE_TEST
Allows access to hardware peripherals. 
允许访问硬件

android.permission.INJECT_EVENTS
Allows an application to inject user events (keys, touch, trackball) into the event stream and deliver them to ANY window
允许一个程序截获用户事件如按键、触 摸、轨迹球等等到一个时间流

android.permission.INSTALL_PACKAGES
Allows an application to install packages
允许一个程序安装packages

android.permission.INTERNAL_SYSTEM_WINDOW
Allows an application to open windows that are for use by parts of the system user interface
允许打开窗口使用系统用户界面

android.permission.INTERNET
Allows applications to open network sockets
允许程序打开网络套接字

android.permission.MANAGE_APP_TOKENS
Allows an application to manage (create, destroy, Z-order) application tokens in the window manager
允许程序管理(创建、催后、z -order默认向z轴推移)程序引用在窗口管理器中

android.permission.MASTER_CLEAR
目前还没有明确的解释,可能是清除一切数据,类似硬格机

android.permission.MODIFY_AUDIO_SETTINGS
Allows an application to modify global audio settings
允许程序修改全局音频设置

android.permission.MODIFY_PHONE_STATE
Allows modification of the telephony state – power on, mmi, etc
允许修改话机状态,如电源,人机接口等

android.permission.MOUNT_UNMOUNT_FILESYSTEMS
Allows mounting and unmounting file systems for removable storage 
允许挂载和反挂载文件系统可移动存储

android.permission.PERSISTENT_ACTIVITY
Allow an application to make its activities persistent
允许一个程序设置他的activities显示

android.permission.PROCESS_OUTGOING_CALLS
Allows an application to monitor, modify, or abort outgoing calls
允许程序监视、修改有关播出电话

android.permission.READ_CALENDAR
Allows an application to read the user’s calendar data
允许程序读取用户日历数据

android.permission.READ_CONTACTS
Allows an application to read the user’s contacts data.
允许程序读取用户联系人数据

android.permission.READ_FRAME_BUFFER
Allows an application to take screen shots and more generally get access to the frame buffer data
允许程序屏幕波或和更多常规的访问帧缓冲数据

android.permission.READ_INPUT_STATE
Allows an application to retrieve the current state of keys and switches
允许程序返回当前按键状态

android.permission.READ_LOGS
Allows an application to read the low-level system log files.
允许程序读取底层系统日志文件

android.permission.READ_OWNER_DATA
Allows an application to read the owner’s data
允许程序读取所有者数据

android.permission.READ_SMS
Allows an application to read SMS messages
允许程序读取短信息

android.permission.READ_SYNC_SETTINGS
Allows applications to read the sync settings
允许程序读取同步设置

android.permission.READ_SYNC_STATS
Allows applications to read the sync stats
允许程序读取同步状态

android.permission.REBOOT
Required to be able to reboot the device.
请求能够重新启动设备

android.permission.RECEIVE_BOOT_COMPLETED
Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting
允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动

android.permission.RECEIVE_MMS
Allows an application to monitor incoming MMS messages, to record or perform processing on them
允许一个程序监控将收到MMS彩信,记录或处理

android.permission.RECEIVE_SMS
Allows an application to monitor incoming SMS messages, to record or perform processing on them
允许程序监控一个将收到短信息,记录或处理

android.permission.RECEIVE_WAP_PUSH
Allows an application to monitor incoming WAP push messages
允许程序监控将收到WAP PUSH信息

android.permission.RECORD_AUDIO
Allows an application to record audio
允许程序录制音频

android.permission.REORDER_TASKS
Allows an application to change the Z-order of tasks
允许程序改变Z轴排列任务

android.permission.RESTART_PACKAGES
Allows an application to restart other applications 
允许程序重新启动其他程序

android.permission.SEND_SMS
Allows an application to send SMS messages 
允许程序发送SMS短信

android.permission.SET_ACTIVITY_WATCHER
Allows an application to watch and control how activities are started globally in the system
允许程序监控或控制activities已经启动全局系统中

android.permission.SET_ALWAYS_FINISH
Allows an application to control whether activities are immediately finished when put in the background
允许程序控制是否活动间接完成在处于后台时

android.permission.SET_ANIMATION_SCALE
Modify the global animation scaling factor 
修改全局信息比例 

android.permission.SET_DEBUG_APP
Configure an application for debugging 
配置一个程序用于调试

android.permission.SET_ORIENTATION
Allows low-level access to setting the orientation (actually rotation) of the screen 
允许底层访问设置屏幕方向和实际旋转

android.permission.SET_PREFERRED_APPLICATIONS
Allows an application to modify the list of preferred applications with the PackageManager.addPackageToPreferred() and PackageManager.removePackageFromPreferred() methods 
允许一个程 序修改列表参数PackageManager.addPackageToPreferred() 和packageManager.removePackageFromPreferred()方法

android.permission.SET_PROCESS_FOREGROUND
Allows an application to force any currently running process to be in the foreground 
允许程序当前运行程序强行到前台

android.permission.SET_PROCESS_LIMIT
Allows an application to set the maximum number of (not needed) application processes that can be running
允许设置最大的运行进程数量

android.permission.SET_TIME_ZONE
Allows applications to set the system time zone 
允许程序设置时间区域

android.permission.SET_WALLPAPER
Allows applications to set the wallpaper
允许程序设置壁纸

android.permission.SET_WALLPAPER_HINTS
Allows applications to set the wallpaper hints 
允许程序设置壁纸hits

android.permission.SIGNAL_PERSISTENT_PROCESSES
Allow an application to request that a signal be sent to all persistent processes
允许程序请求发送信号到所有显示的进程中

android.permission.STATUS_BAR
Allows an application to open, close, or disable the status bar and its icons
允许程序打开、关闭或禁用状态栏及图标 

android.permission.SUBSCRIBED_FEEDS_READ
Allows an application to allow access the subscribed feeds ContentProvider
允许一个程序访问订阅RSS Feed内容提供

android.permission.SUBSCRIBED_FEEDS_WRITE
系统暂时保留改设置,未来版本可能会加入该功能

android.permission.SYSTEM_ALERT_WINDOW
Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications
允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层

android.permission.VIBRATE
Allows access to the vibrator 
允许访问振动设备

android.permission.WAKE_LOCK
Allows using PowerManager WakeLocks to keep processor from sleeping or screen from dimming 
允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失

android.permission.WRITE_APN_SETTINGS
Allows applications to write the apn settings 
允许程序写入API设置

android.permission.WRITE_CALENDAR
Allows an application to write (but not read) the user’s calendar data
允许一个程序写入但不读取用户日历数据

android.permission.WRITE_CONTACTS
Allows an application to write (but not read) the user’s contacts data 
允许程序写入但不读取用户联系人数据

android.permission.WRITE_GSERVICES
Allows an application to modify the Google service map 
允许程序修改Google服务地图

android.permission.WRITE_OWNER_DATA
Allows an application to write (but not read) the owner’s data
允许一个程序写入但不读取所有者数据

android.permission.WRITE_SETTINGS
Allows an application to read or write the system settings
允许程序读取或写入系统设置

android.permission.WRITE_SMS
Allows an application to write SMS messages 
允许程序写短信

android.permission.WRITE_SYNC_SETTINGS
Allows applications to write the sync settings 
允许程序写入同步设置

发表在 Android开发 | 标签为 , , | 留下评论

Android 控制台错误 应用程序获取系统权限

在windows平台通过eclipse编译android源码中,如果编译Settings或者android manifest XML中 shared user id 包含android.uid.shared等系统权限的时候,则会报以下错误。

一、Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE

1、由于卸载没有完全,可以使用设置中卸载相应应用,或者adb uninstall com.android.***

二、Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

主要是由于使用了android.uid.shared导致的问题。

第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:

1. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
2. 使用mm命令来编译,生成的apk就可以在模拟器中运行了。

第二个方法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:

1. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。
2. 查看Android.mk文件,加入LOCAL_CERTIFICATE := 这一行,根据这行的内容,选择相应的签名。
platform—–>platform.pk8和platform.x509.pem
shared  —–>shared.pk8和shared.x509.pem
3. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,
首先找到密钥文件,在我的Android源码目录中的位置
是”build\target\product\security”,下面的platform.pk8和platform.x509.pem
两个文件。
然后用Android提供的Signapk工具来签名,signapk的源代码是
在”build\tools\signapk”下, 我编译好之后的路径在out/host/linux-x86/framework下。
用法为”java -jar signapk.jar  platform.x509.pem platform.pk8 input.apk output.apk”,
signapk.jar的文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。

  4.其他的APPS应用也是按照该方法可以正常运行,
不过这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到platform.pk8和 platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android中的key来签名,程序在模 拟器上运行OK,不过放到G3上安装直接提示”Package … has no signatures that match those in shared user android.uid.system”,这样也是保护了系统的安全。

最后解释一下原理,首先加入android:sharedUserId=”android.uid.system”这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。

        只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform key,就是上面第二个方法提到的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。

最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。

发表在 Android开发 | 标签为 , | 留下评论