精华内容
下载资源
问答
  • Android 源码

    千次阅读 2013-09-20 21:30:19
      费了九牛二虎之力才整理完、亲!如对您有用的话就收藏吧!...1、Android植物大战僵尸(源码) 2、android 指南针源码 3、Android 精仿QQ登录UI(源码) 4、Android 手机、身份证、区号查询(源码

    自:http://www.juapk.com/thread-496-1-1.html  巨卓网开发论坛

     

    费了九牛二虎之力才整理完、亲!如对您有用的话就收藏吧!!(欢迎转载)
    Android 代码仓库目录:

    1、Android植物大战僵尸(源码)
    2、android 指南针源码
    3、Android 精仿QQ登录UI(源码)
    4、Android 手机、身份证、区号查询(源码)
    5、Android应用案例开发大全(源码)
    6、Android 利用传感器Sensor实现微信的摇一摇功能(代码)
    7、Android Gallery廊效果(源码)
    8、Android 编程实用代码大全
    9、Android 远程视频监控程序(源码)
    10、Android 中国象棋(经典源码)
    11、android 筛子游戏(源码)
    12、Android 俄罗斯方块(经典源码)
    13、Android扫雷游戏(经典源码)
    15、android电话拨号器(源码)
    16、Android 坦克游戏(经典源码)
    17、Android经典游戏21点
    18、Android水果连连看(经典源码)
    19、android 添加桌面快捷方式(源码)
    20、Android移动开发案例详解(源码)
    21、安卓ListView组件Demo
    22、Android应用开发揭秘书籍(源码)
    23、新手指引滑动效果
    24、仿360左右滑动UI
    25、Android 五子棋源码
    26、Fragment+Tabhost实现网易新闻客户端的框架
    27、android连接数据库实例源码
    28、android日志个人日程管理
    29、andriod闹钟源代码
    30、自适应屏幕DEMO
    31、android(腾讯微博 + 新浪微博)客户端 Oauth 认证 Demo
    32、Android手机平台重力感应Demo
    33、android仿UCWEB界面源码
    34、Android 陌客随机聊天(源码)
    35、android快捷查询系统源代码
    36、Android安卓抽屉效果Demo
    37、Android安卓WIFI 扫描 Demo
    38、Android应用开发详解(PDF+源码)
    39、Android 疯狂足球游戏源码
    40、Android 录音程序源码
    41、Android安卓源码Demo汇总
    42、Android 图片瀑布流 Demo
    43、android源码之文件操作
    44、android源码之浏览器
    45、音乐播放器demo
    46、Android 的27个经典Demo
    47、Android 实现自动接听和挂断电话功能
    48、Android 导航页开门效果
    49、android 手机号码归属地查询(SQLite)
    50、mars android第一至四季源码合集
    51、完整详细的音乐播放器DEMO

    52、Android 实现图片的倒影效果(源码)
    53、Android 电量显示Widgets插件(源码)
    54、Android 绚丽闹钟
    55、Android 抽屉效果Demo
    56、Android 电话号码在线查询、调用WebService接口(Demo源码)
    57、音乐播放器源码
    58、Android 仿ios时间设置界面UI源码
    59、精美Android UI界面源码(有图有真相)
    60、仿Siri的中文语音助理(源码)
    61、Android左右推出菜单(实用源码)
    62、Android 个人记帐程序(Sqlite深入)
    63、高仿 UCWEB7.4 新版的menu 界面(UI源码)
    64、高仿大众点评(精品源码)
    65、愤怒的小猪(游戏源码)
    66、android小应用之生日计算器(原创)
    67、Android万能在线视频(播放器源码)
    68、高仿微信聊天气泡界面(UI源码)
    69、Android GPS网络定位(实例源码)
    70、高仿UC半透明MENU菜单(有图有真相)
    71、类似QQ的android弹出(菜单源码)
    72、2012最新版QQ登陆界面的实现(UI源码)
    73、Android 断点续传下载(精品源码)
    74、Android 3D旋转效果--随手势
    75、Android手机的情景模式的设置(软件源码)
    76、Android Expandablelistview实现,仿QQ人员列表,自制Shape (精品推荐)
    77、Android 模仿酷狗播放器(精品源码)
    78、Android手机测周围环境分贝的(功能源码)
    79、Android 检测软键盘的弹起与隐藏
    80、Android裁剪照片
    81、手势控制,密码登入的记事本
    82、手电筒闪光灯(源码)
    83、快捷拨打电话的widget程序(漂亮)
    84、Android《五子连珠》游戏源码
    85、小米文件管理器(源码)
    86、管道工人游戏(源码)
    87、android 基站定位(源码)
    88、15款Andriod 游戏(源码放送)
    89、android游戏之帮美女换衣服(邪恶源码)
    90、Android界面UI之javascript与Activity进行交互(源码)
    91、android应用卸载提示(实用推荐)
    92、android代码-综合案例-在线视频播放器
    93、Jamendo android开源在线音乐播放
    94、Android FTP上传实例
    95、Android dom、sax、pull三种xml解析(实例源码)
    96、Android 应用源码(微盘下载)
    97、Android edittext播放gif表情
    98、Android 仿lanucher滑动翻页的TabHost
    99、Android 调用前置摄像头
    100、Android 图形解锁(源码)
    101、Path经典动画效果之一 半角转动
    102、viewPager的简单应用
    103、Android 设置移动、联通、电信wap接入点(Demo)
    104、Android 图案解锁
    105、Android拼图游戏(源码)
    106、Android 平移、拖动排序动画demo
    107、Android 五星红旗(创意源码)
    108、安卓 ActionMode 实例 Demo
    109、忍者突袭游戏(源码)
    110、Android 人品测试器
    111、Android 数独(Demo)
    112、android-魔法泡泡动画分析(附源码)
    113、Android 本地图片和拍照图片上传作为头像(功能源码)
    114、Android简单电子书(demo)
    115、Android版本升级(源码)
    116、Android 网页浏览器Demo源码
    117、Android北京地铁导航小助手(源码)
    118、Android推出左侧菜单之模仿facebook布局效果
    119、Android 类似电话号码滑动的城市列表
    120、Android GPS 源码 demo(内附api)
    121、Android 仿360恶意广告拦截扫描UI效果
    122、Android 广告滚动条实现demo
    123、Android 五子棋
    124、android任务管理器
    125、Android 小米系统之便签源码
    126、Android 中文天气预报程序(有图有真相)
    127、Android图片裁剪及常用图片特效处理(Demo)
    128、SQLite 增、删、改、查(SQLite操作源码)
    129、Android 经典示例(初学者必学)
    130、Android 欢迎引导界面(Demo)
    131、Android 仿QQ的源码,客户端和服务端源码(推荐)

     

     

    喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你值得拥有哦!

    作者:快乐出发0220 ,文章出处:http://www.cnblogs.com/klcf0220/ ,文章版权归本人所有。欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面明显位置给出原文链接,否则将会追究法律责任,请自重!!!另外喜欢开源,乐意分享的大神们,欢迎加入QQ群:176507146,你值的拥有哦!!!
    展开全文
  • android源码下载

    千次下载 热门讨论 2011-06-25 15:38:36
    android源码下载android源码下载android源码下载
  • 蘑菇街 TeamTalk android源码

    千次下载 热门讨论 2014-11-05 15:00:12
    蘑菇街 TeamTalk android源码 一同开源的还有php和win的服务端源码,客户端有Mac、Windows、iOS和Android四个版本源码,该IM软件适合中小型企业用户,支持单聊和群聊,提供文字、表情和图片的富文本实时聊天功能,...
  • Android闹钟最终版【android源码闹钟解析】

    万次阅读 多人点赞 2012-04-14 18:14:12
    我以前写了个复杂闹钟的demo,参见Android闹钟【复杂版】【大明进化十五】 .但是里面的bug有一些,好多人留言,所以我就看看源码,找找原因?顺便把源码代码整理出来,弄成一个完整的可以运行的apk,今天上午就整理...

           我以前写了个复杂闹钟的demo,参见Android闹钟【复杂版】【大明进化十五】 .但是里面的bug有一些,好多人留言,所以我就看看源码,找找原因?顺便把源码代码整理出来,弄成一个完整的可以运行的apk,今天上午就整理了一下,才发现,源码处理的逻辑多一些,考虑的情况多,比如开机后接收一个广播,然后从数据库中取时间和当前时间对比,设置闹钟,当时区改变了,也会发送广播,对闹钟进行设置的。

            转载请标明出处:http://blog.csdn.net/wdaming1986/article/details/7461043       

            有人问我:“当设置一个闹钟后,然后调系统时间超过设置的闹钟的时间,这时候闹钟响了??”

             通过源码,我发现这种情况是正常的。不是bug。可以理解。

             以下是我发现的几点闹钟中重要的点,分享一下:

             (1)在闹钟中有AudioManager管理机制,这个机制可以申请和释放OnAudioFocusChangeListener监听。

    还有mTelephonyManager对象,处理在闹钟响的时候,来电铃声的切换。

             (2)广播接收闹钟,通过广播启动AlarmKlaxon这个Service,隐式启动service:

    public static final String ALARM_INTENT_EXTRA = "intent.extra.alarm";

    // Play the alarm alert and vibrate the device.
            Intent playAlarm = new Intent(Alarms.ALARM_ALERT_ACTION);
            playAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm);
            context.startService(playAlarm);

       在mainfest中,AlarmKlaxon这个服务的定义如下:

    <service android:name="AlarmKlaxon"
                    android:description="@string/alarm_klaxon_service_desc"
                    >
                <intent-filter>
                    <action android:name="com.cn.daming.deskclock.ALARM_ALERT" />
                </intent-filter>
            </service>

    这个service做的是允许别的Activity打断正在响铃的铃声,播放其他的铃声,例如,闹钟响的时候来电话了。

            (3)在listview中包含checkbox,这时候闹钟的处理时,activity实现一个OnItemClickListener的监听,点击每一项的监听。然后在checkbox单独拿出去写一个类,继承LinearLayout,重写setPressed()这个方法,以实现“当点击checkbox的时候不触发parent的click事件”。关键代码如下:

     @Override
        public void setPressed(boolean pressed) {
            // If the parent is pressed, do not set to pressed.
            if (pressed && ((View) getParent()).isPressed()) {
                return;
            }
            super.setPressed(pressed);
        }

     

    下面看看我的程序截图:

                        红色圈的图标为我的闹钟。                                         点击“玲闹钟”后的界面

                                      

                          点击新建闹钟出现的界面                                           设置好时间弹出的toast。

                                      

    下面我把我的主要入口类的代码贴出来

    DeskClockMainActivity.java

    package com.cn.daming.deskclock;
    
    import java.util.Calendar;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.database.Cursor;
    import android.graphics.Typeface;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ContextMenu;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.AdapterContextMenuInfo;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.CheckBox;
    import android.widget.CursorAdapter;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    
    public class DeskClockMainActivity extends Activity implements OnItemClickListener{
    	
        static final String PREFERENCES = "AlarmClock";
    
        /** This must be false for production.  If true, turns on logging,
            test code, etc. */
        static final boolean DEBUG = false;
    
        private SharedPreferences mPrefs;
        private LayoutInflater mFactory;
        private ListView mAlarmsList;
        private Cursor mCursor;
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            //取自定义布局的LayoutInflater
            mFactory = LayoutInflater.from(this);
            //取getSharedPreferences中key==“AlarmClock”的值
            mPrefs = getSharedPreferences(PREFERENCES, 0);
            //获取闹钟的cursor
            mCursor = Alarms.getAlarmsCursor(getContentResolver());
            
            //更新布局界面
            updateLayout();
    
        }
        
        //加载更新界面布局
        private void updateLayout() {
        	setContentView(R.layout.alarm_clock);
            mAlarmsList = (ListView) findViewById(R.id.alarms_list);
            AlarmTimeAdapter adapter = new AlarmTimeAdapter(this, mCursor);
            mAlarmsList.setAdapter(adapter);
            mAlarmsList.setVerticalScrollBarEnabled(true);
            mAlarmsList.setOnItemClickListener(this);
            mAlarmsList.setOnCreateContextMenuListener(this);
    
            View addAlarm = findViewById(R.id.add_alarm);
            addAlarm.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        addNewAlarm();
                    }
                });
            // Make the entire view selected when focused.
            addAlarm.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                    public void onFocusChange(View v, boolean hasFocus) {
                        v.setSelected(hasFocus);
                    }
            });
    
            ImageButton deskClock =
                    (ImageButton) findViewById(R.id.desk_clock_button);
            deskClock.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        
                    }
            });
        }
        
        private void addNewAlarm() {
            startActivity(new Intent(this, SetAlarm.class));
        }
        
        /**
         * listview的适配器继承CursorAdapter
         * @author wangxianming
         * 也可以使用BaseAdapter
         */
        private class AlarmTimeAdapter extends CursorAdapter {
            public AlarmTimeAdapter(Context context, Cursor cursor) {
                super(context, cursor);
            }
    
            public View newView(Context context, Cursor cursor, ViewGroup parent) {
                View ret = mFactory.inflate(R.layout.alarm_time, parent, false);
    
                DigitalClock digitalClock =
                        (DigitalClock) ret.findViewById(R.id.digitalClock);
                digitalClock.setLive(false);
                return ret;
            }
    
            //把view绑定cursor的每一项
            public void bindView(View view, Context context, Cursor cursor) {
                final Alarm alarm = new Alarm(cursor);
    
                View indicator = view.findViewById(R.id.indicator);
    
                // Set the initial resource for the bar image.
                final ImageView barOnOff =
                        (ImageView) indicator.findViewById(R.id.bar_onoff);
                barOnOff.setImageResource(alarm.enabled ?
                        R.drawable.ic_indicator_on : R.drawable.ic_indicator_off);
    
                // Set the initial state of the clock "checkbox"
                final CheckBox clockOnOff =
                        (CheckBox) indicator.findViewById(R.id.clock_onoff);
                clockOnOff.setChecked(alarm.enabled);
    
                // Clicking outside the "checkbox" should also change the state.
                //对checkbox设置监听,使里外一致
                indicator.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                            clockOnOff.toggle();
                            updateIndicatorAndAlarm(clockOnOff.isChecked(),
                                    barOnOff, alarm);
                        }
                });
    
                DigitalClock digitalClock =
                        (DigitalClock) view.findViewById(R.id.digitalClock);
    
                // set the alarm text
                final Calendar c = Calendar.getInstance();
                c.set(Calendar.HOUR_OF_DAY, alarm.hour);
                c.set(Calendar.MINUTE, alarm.minutes);
                digitalClock.updateTime(c);
                digitalClock.setTypeface(Typeface.DEFAULT);
    
                // Set the repeat text or leave it blank if it does not repeat.
                TextView daysOfWeekView =
                        (TextView) digitalClock.findViewById(R.id.daysOfWeek);
                final String daysOfWeekStr =
                        alarm.daysOfWeek.toString(DeskClockMainActivity.this, false);
                if (daysOfWeekStr != null && daysOfWeekStr.length() != 0) {
                    daysOfWeekView.setText(daysOfWeekStr);
                    daysOfWeekView.setVisibility(View.VISIBLE);
                } else {
                    daysOfWeekView.setVisibility(View.GONE);
                }
    
                // Display the label
                TextView labelView =
                        (TextView) view.findViewById(R.id.label);
                if (alarm.label != null && alarm.label.length() != 0) {
                    labelView.setText(alarm.label);
                    labelView.setVisibility(View.VISIBLE);
                } else {
                    labelView.setVisibility(View.GONE);
                }
            }
        };
        
        //更新checkbox
        private void updateIndicatorAndAlarm(boolean enabled, ImageView bar,
                Alarm alarm) {
            bar.setImageResource(enabled ? R.drawable.ic_indicator_on
                    : R.drawable.ic_indicator_off);
            Alarms.enableAlarm(this, alarm.id, enabled);
            if (enabled) {
                SetAlarm.popAlarmSetToast(this, alarm.hour, alarm.minutes,
                        alarm.daysOfWeek);
            }
        }
        
        /*
         * (non-Javadoc)
         * @see android.app.Activity#onContextItemSelected(android.view.MenuItem)
         * 创建上下文菜单
         */
        @Override
        public boolean onContextItemSelected(final MenuItem item) {
            final AdapterContextMenuInfo info =
                    (AdapterContextMenuInfo) item.getMenuInfo();
            final int id = (int) info.id;
            // Error check just in case.
            if (id == -1) {
                return super.onContextItemSelected(item);
            }
            switch (item.getItemId()) {
                case R.id.delete_alarm:
                    // Confirm that the alarm will be deleted.
                    new AlertDialog.Builder(this)
                            .setTitle(getString(R.string.delete_alarm))
                            .setMessage(getString(R.string.delete_alarm_confirm))
                            .setPositiveButton(android.R.string.ok,
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface d,
                                                int w) {
                                            Alarms.deleteAlarm(DeskClockMainActivity.this, id);
                                        }
                                    })
                            .setNegativeButton(android.R.string.cancel, null)
                            .show();
                    return true;
    
                case R.id.enable_alarm:
                    final Cursor c = (Cursor) mAlarmsList.getAdapter()
                            .getItem(info.position);
                    final Alarm alarm = new Alarm(c);
                    Alarms.enableAlarm(this, alarm.id, !alarm.enabled);
                    if (!alarm.enabled) {
                        SetAlarm.popAlarmSetToast(this, alarm.hour, alarm.minutes,
                                alarm.daysOfWeek);
                    }
                    return true;
    
                case R.id.edit_alarm:
                    Intent intent = new Intent(this, SetAlarm.class);
                    intent.putExtra(Alarms.ALARM_ID, id);
                    startActivity(intent);
                    return true;
    
                default:
                    break;
            }
            return super.onContextItemSelected(item);
        }
        
        /*
         * (non-Javadoc)
         * @see android.app.Activity#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo)
         * 创建菜单
         */
        @Override
        public void onCreateContextMenu(ContextMenu menu, View view,
                ContextMenuInfo menuInfo) {
            // Inflate the menu from xml.
            getMenuInflater().inflate(R.menu.context_menu, menu);
    
            // Use the current item to create a custom view for the header.
            final AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
            final Cursor c =
                    (Cursor) mAlarmsList.getAdapter().getItem((int) info.position);
            final Alarm alarm = new Alarm(c);
    
            // Construct the Calendar to compute the time.
            final Calendar cal = Calendar.getInstance();
            cal.set(Calendar.HOUR_OF_DAY, alarm.hour);
            cal.set(Calendar.MINUTE, alarm.minutes);
            final String time = Alarms.formatTime(this, cal);
    
            // Inflate the custom view and set each TextView's text.
            final View v = mFactory.inflate(R.layout.context_menu_header, null);
            TextView textView = (TextView) v.findViewById(R.id.header_time);
            textView.setText(time);
            textView = (TextView) v.findViewById(R.id.header_label);
            textView.setText(alarm.label);
    
            // Set the custom view on the menu.
            menu.setHeaderView(v);
            // Change the text based on the state of the alarm.
            if (alarm.enabled) {
                menu.findItem(R.id.enable_alarm).setTitle(R.string.disable_alarm);
            }
        }
        
        /*
         * (non-Javadoc)
         * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
         * 设置菜单的点击事件的处理
         */
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.menu_item_settings:
                    startActivity(new Intent(this, SettingsActivity.class));
                    return true;
                case R.id.menu_item_desk_clock:
                	//modify by wangxianming in 2012-4-14
    //                startActivity(new Intent(this, DeskClock.class));
                    return true;
                case R.id.menu_item_add_alarm:
                    addNewAlarm();
                    return true;
                default:
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
       
        /*
         * (non-Javadoc)
         * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
         * 创建菜单
         */
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.alarm_list_menu, menu);
            return super.onCreateOptionsMenu(menu);
        }
        
        /*
         * (non-Javadoc)
         * @see android.widget.AdapterView.OnItemClickListener#onItemClick(android.widget.AdapterView, android.view.View, int, long)
         * 创建菜单的点击事件响应
         */
    	public void onItemClick(AdapterView<?> adapterView, View v, int pos, long id) {
    		Intent intent = new Intent(this, SetAlarm.class);
            intent.putExtra(Alarms.ALARM_ID, (int) id);
            startActivity(intent);
    		
    	}
    	
       @Override
        protected void onDestroy() {
            super.onDestroy();
            ToastMaster.cancelToast();
            mCursor.close();
        }
    }

     

    【说明】想要源码的可以留下邮箱,我看到后就给你发过去!

    也可以到我的csdn资源中下载:http://download.csdn.net/detail/wdaming1986/4226174

     

     

     

          

    展开全文
  • 一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)

    一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)


    idegen工具

    要将Android系统源代码工程导入到Eclipse或者IntelliJ IDEA,关键是要有相应的工程配置文件。

    idegen专门为IDE环境调试源码而设计的工具,idegen可以用来生成针对Eclipse和IntelliJ IDEA的Android系统源代码工程配置文件,它位于Android系统源代码工程目录的下列位置:

    development/tools/idegen/
    
    

    AS中导入AOSP源码

    将工程导入AS需要下面三个步骤:

    1. 获取到idegen.jar
    2. 获取idegen.sh 执行生成android.ipr/android.iml
    3. Android sutdio 选择android.ipr导入

    生成android.ipr等文件

    执行下面的命令即可生成android.ipr等文件:

    cd ~/aosp //具体的源码根目录
    source build/envsetup.sh //用于初始化环境变量
    mmm development/tools/idegen/  //生成文件out/host/linux-x86/framework/idegen.jar
    ./development/tools/idegen/idegen.sh//源码根目录生成文件android.ipr(工程相关设置), android.iml(模块相关配置)
    

    注意:如果是mac,执行命令之前,首先要进入bash,方法也很简单:

    bash
    

    否则会报错:报错Couldn’t find directory development/tools/idegen/

    导入AndroidStudio

    打开AS,点击File -> Open,选中前面生成的android.ipr文件即可,该过程比较耗时。

    导入AS配置优化

    如果直接进行导入,导入之后,可以看到Android Studio下方,Indexing…会一直显示,时间非常长。其实我们大多数情况下只需要framework下的代码,可以进行一些排除操作。

    android.iml文件

    iml文件是idea组织工程的文件, 里面记录了各种记录模块, 文件夹以及依赖的信息。一般而言, 创建的工程都会有这个文件, 它的本质是一个工程组织文件, 和Maven的pom.xml, gradle的build.gradle, 等组织工程和处理依赖关系的文件并没有什么差别。

    打开android.iml文件,我们会发现这个而文件配置项非常多,主要有类标签:

    • sourceFolder:表示包含的文件目录,通常我们只需要留下framewrok即可。
    • excludeFolder:exclude顾名思义就是不包含的意思。我们有很多目录直接就不想让Studio去管它,不管是索引还是什么等等,所以只需要将这些目录配置到中就好了。

    android.iml文件修改

    打开android.iml文件,那么我们可以有选择的导入如下:

      <component name="NewModuleRootManager" inherit-compiler-output="true">
        <exclude-output />
        <content url="file://$MODULE_DIR$">
          <sourceFolder url="file://$MODULE_DIR$/../10.0.0_r2frameworks/base/core/java" type="kotlin-source" />
          <excludeFolder url="file://$MODULE_DIR$/.repo" />
          <excludeFolder url="file://$MODULE_DIR$/external/bluetooth" />
          <excludeFolder url="file://$MODULE_DIR$/external/chromium" />
          <excludeFolder url="file://$MODULE_DIR$/external/icu4c" />
          <excludeFolder url="file://$MODULE_DIR$/external/webkit" />
          <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
          <excludeFolder url="file://$MODULE_DIR$/out/eclipse" />
          <excludeFolder url="file://$MODULE_DIR$/out/host" />
          <excludeFolder url="file://$MODULE_DIR$/out/target/common/docs" />
          <excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates" />
          <excludeFolder url="file://$MODULE_DIR$/out/target/product" />
          <excludeFolder url="file://$MODULE_DIR$/prebuilt" />
          <excludeFolder url="file://$MODULE_DIR$/../10.0.0_r2external/emma" />
          <excludeFolder url="file://$MODULE_DIR$/../10.0.0_r2external/jdiff" />
        </content>
        <orderEntry type="sourceFolder" forTests="false" />
        <orderEntry type="inheritedJdk" />
      </component>
    

    如果已经把全部项目导入到Android Studio,又想删除怎么办,其实有一个简单的方法就是进入目录Project Structure -> Modules, 可快速去除某些模块, 其中红色代码Exclueded选项(即代表已删除的目录), 如下图:

    在这里插入图片描述

    AS中关联源码,实现代码跳转

    android.ipr导入AS之后,等待一段时间项目构建过程。

    我们想要实现代码跳转,需要对项目进行以下几个步骤的配置:

    1. 打开Project Structure

    点击File菜单下的Project Structure,打开项目的配置选项。

    2. 创建JDK

    选择“SDKs” -> 中间栏”+“号 -> 选择新建JDK -> 配置如下(选择一个系统的,然后修改即可):

    在这里插入图片描述

    重点:创建一个自定义名称的jdk、将Classpath和Sourcepath下的依赖都删除。

    3. Android API依赖

    选择目标API版本,将Java SDK修改为我们上一步创建的那个JDK,并且将Classpath和Sourcepath中的依赖清空。

    在这里插入图片描述

    配置Project

    选择”Project"选项,这里很简单,只需要设置目标API即可:

    在这里插入图片描述

    配置Modules

    这里很关键,我们选择“Modules”,中间栏选中项目,这里先配置API为对应版本,然后在Dependencies项目依赖选项卡中,需要删除所有能删除的选项,然后添加我们的源码目录为新的依赖项(这里我只添加了framewroks目录)。还有一点需要注意,把我们新添加的目录移动到顶部,这样就会优先从我们的源码目录查找代码了。

    在这里插入图片描述

    配置Modules 2

    在Modules中,我们切换选项卡到"Sources",然后选择我们的frameworks目录,点击"Mark as“那行中的”Source",代表添加frameworks到源码目录。(也可以在frameworks目录上右键单击,弹框中选择“Source"选项。)

    另外,如果我们不需要其他文件夹,可以使用同样类似操作,将该目录标记为”Excluded"的状态即可(添加后,会在窗口右侧展示为红色文本)。

    在这里插入图片描述

    错误处理

    Mac系统上,AS启动后,提示一个错误:

    Filesystem Case-Sensitivity Mismatch The project seems to be located on a case-sensitive file system. This does not match the IDE setting (controlled by property “idea.case.sensitive.fs”)

    问题的原因是:在Mac和windows上默认文件系统都是不区分大小写的,而Linux和friends的文件系统则是区分大小写的。

    Mac端解决办法:

    显式的告诉IDE我的文件系统是区分大小写的。修改文件idea.properties,位置在IED的包内容目录(右键APP,显示包内容),在idea.properties文件内加上如下代码:

    idea.case.sensitive.fs=true
    

    添加后,保存,然后重新打开AS即可。


    **PS:更多精彩内容,请查看 --> 《AOSP 专栏》
    **PS:更多精彩内容,请查看 --> 《AOSP 专栏》
    **PS:更多精彩内容,请查看 --> 《AOSP 专栏》

    展开全文
  • android源码导入eclipse、androidstudio、IntelliJ IDEA中进行阅读的步骤和过程,网上的博客和网站上已经记录的很多了,仅此将自己从书上看到的方法和步骤记录一下。android源码的工程比较大,如果手动阅读代码不...

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659


    将android源码导入eclipse、androidstudio、IntelliJ IDEA中进行阅读的步骤和过程,网上的博客和网站上已经记录的很多了,仅此将自己从书上看到的方法和步骤记录一下。android源码的工程比较大,如果手动阅读代码不借助IDE工具的话,还是比较费劲的,将android源码导入eclipse、androidstudio、IntelliJ IDEA等IDE中阅读。不仅阅读方便了不少而且代码高亮,很nice!后面就记录一下自己,将android4.x的源码导入eclipse中的过程、,顺手记录一下,方便查阅。


    1.编译Android源码

    由于将android源码导入到eclipse中需要android源码编译生成的.classpath文件才能实现。按照网上大牛的博客的方法先搭建好Android编译环境,根据自己的需求下载对应Android版本的源码,使用下面的步骤进行编译,具体的懒得写了,直接上《android设计与实现》上面的方法,虽然有些内容可能和下面提供的步骤不一样,但是大体的步骤是一样,具体以实际情况为准。



    2.复制配置文件

    Android源码中提供了eclipse java的项目配置文件,位于Android源码根目录下的development/ide/eclipse/.classpath路径下,将该文件复制到Android源码的根目录下



    3.将android源码导入eclipse中

    运行eclipse,在菜单栏,依次单击File-New-Java Project,如下图所示。在弹出的 New Java Project 窗口中,依次输入工程的名称后,指定Location为Android源码所在的目录(.classpath文件复制的位置),然后单击 Finish 按钮。



    4.查看Android源码

    查看eclipse左侧的Package Explorer窗口,可以查看 Android Framework源码 被导入进来,如下图,ok将Android源码导入eclipse中的步骤完成。




    笔记备份:

    1.android源码编译后,模拟器的启动:



    2.android源码 编译指定模块源码





    注意:前面已经记录了将android源码导入eclipse中的步骤,将android源码导入androidstudio、IntelliJ IDEA中的方法应该也是差不多,有问题再百度了。



    附件--提供Android 4.4.4 r1源码的.classspath文件下载:



    参考书籍:

    《Android设计与实现》 

    《Android框架解密》   




    展开全文
  • Android Studio 导入 Android 源码

    万次阅读 2017-03-15 19:40:58
    Android 的源码代码量是非常大的,也有多种代码编辑器来供我们选择来去阅读Android源码,本文将介绍如何将 Android 源码导入到 Android Studio 中来的技巧。 导入源码修改Android Studio的配置文件由于导入源码时...
  • Android源码编译速度优化 -- ccache设置

    万次阅读 2021-02-04 16:32:23
    Android源码编译时,设置ccache可有效的降低编译时间。 谷歌给出的指导方法(优化编译环境章节):点击进入 2. 方法 要想长久方便使用,需要将以下环境 变量写入/etc/profile或者~/.bashrc中 export USE_CCACHE=1 ...
  • Android studio 阅读Android源码

    千次阅读 2017-04-18 10:51:28
    window环境下source insight 3工具是相当好用,但mac x10之后没有mac版可用了,无奈卸载了,好在现在Android源码考虑到了开发者的便捷,已经可以支持Eclipse阅读源码了。下面我们介绍如何使用Android studio加载...
  • Android源码编译时,默认的时间制式是12小时,通过修改代码可以将其改为24小时制。 2. 分析 进入Settings源码找到设置时间制式的地方,路径为:packages/apps/Settings/src/...
  • Android Studio Android源码导入

    千次阅读 2018-06-03 07:42:46
     Android源码文件很多,想要记住所有源代码的路径,是基本不可能的,所以一般都会借用IDE来操作,使用过source insight,intellij idea来分析Android源码,感觉还是intelij好用,最近手头只...
  • 使用AndroidStudio查看并调试Android源码

    万次阅读 多人点赞 2018-11-04 19:08:42
    使用AndroidStudio查看并调试Android源码使用AndroidStudio查看并调试Android源码0.基础环境1. 操作系统2. Java3. Android源码1. 编译源码初始化编译环境AndroidP的终端检查源码AndroidO的终端检查源码选择编译目标...
  • Android源码学习

    千次阅读 2018-09-08 16:54:53
    进阶学习的阶段,需要我们保持一颗好奇的心,深入阅读Android源码,学习优秀的代码风格和设计思想,知其然并且知其所以然。 引用Google的一张框架图: Applications层,和用户直接交互的就是这些应用程序,它们...
  • Android Studio导入Android源码

    万次阅读 2016-03-11 16:33:46
    本文是以源码中development/tools/idegen/README作为指导文档,给出了使用Android Studio导入Android源码的方法步骤。 环境: Ubuntu 12.04,openJdk 1.7,Android Studio 1.1 Beta 4,android-5.0.1_r1源码 ...
  • Android 查看Android源码版本

    千次阅读 2015-01-22 16:25:32
    拉一套新源码时,往往需要知道Android源码是哪个版本的,如何查看Android源码的具体版本?介绍下常用的两个方法
  • Android Studio查看android源码

    千次阅读 2016-08-17 17:01:52
    上一篇我们详细了解了Android源码在OSX上的编译流程,这里我们来了解下如何在Android Studio设置查看源码,注意是查看代码的调用,无法用Android Studio编译。Android Studio的默认版本在/Applications/Android ...
  • Windows 环境下载 Android 源码

    万次阅读 多人点赞 2017-04-28 19:25:16
    Windows 环境下载 Android 源码 前言 Android 官网(该方式不适合 Windows 平台):https://source.android.com/source/downloading.html 可是我就想在 Windows 中使用 Source Insight 看看源代码,当然可以! ...
  • Android源码分析

    千次阅读 2017-03-21 17:42:29
    Android 开源项目源码解析android-open-project-analysis这是一个协作项目,最终多数开源库原理解析会在这里分享出来Android源码设计模式分析项目android_design_patterns_analysis该项目通过分析Android系统中的...
  • Android源码解析系列

    万次阅读 多人点赞 2016-02-19 10:33:42
    知乎上看了一篇非常不错的博文:有没有必要阅读ANDROID源码 看完之后痛定思过,平时所学往往是知其然然不知其所以然,所以为了更好的深入android体系,决定学习android framework层源码。这篇文章就是源码学习的汇总...
  • Android源码下载

    千次阅读 2016-05-27 18:01:00
    Android源码下载 Android源码下载支持的系统目前只有Ubuntu和Mac OS两种操作系统, 本次以Ubuntu系统为例. 官方网站: http://source.android.com/source/downloading.html下载Git(版本控制工具). 调出命令行: ...
  • 如何获取android源码

    千次阅读 2018-04-07 16:08:57
    因为目前世面上主流的操作系统有 Windows、Linux和Mac OS的操作系统,由于Mac OS 源自于Linux 系统,所以本职讲解分贝在Windows系统和Linux系统中获取Android 源码的知识,并境界编译Android源码...
  • 使用Android studio查看Android源码

    千次阅读 2018-02-23 16:26:18
    转载自 http://blog.csdn.net/Easyhood/article/details/53466648一,准备工作在使用Android Studio查看源码之前,你需要做下面几件事:下载Android源码进行过一次完整编译(不编译是无法进行源码导入工作的)以上操作...
  • 简诗Android 源码,Python 和 Flask服务器端后台源码下载 简诗 的想法最初来源于我阅读的一本来自 Kevin 的书《 Producter 》,书中介绍了 iOS 小记的开发设计过程。唯一的缺憾是没有开发 Android 版本。因此我...
  • Android源码解析合集

    千次阅读 2016-04-20 12:06:40
    android源码解析
  • 1. 安装 Source Insight(1) Source Insight 相关资源安装相关资源 :-- 下载地址 : http://www.sourceinsight.com/down35.html;... 导入 Android 源码导入 Android 源码 :-- 创建工程 : Project -> New Project, 输入
  • 下载最新Android系统源码,可以在国内的清华大学Android源码镜像下载,速度也是挺快的。我晚上几个小时就下载下来了。方法如下: 我的为VM虚拟机,安装ubuntu 14.04,安装git等常用的工具。 (1)下载 repo ...
  • android studio 导入android源码中的项目的问题。android stufio如何导入android源码中的项目可以不出错,或者怎么修改,可以在android studio上正常使用。请手请指教
  • android源码百度网盘下载(AOSP源码集合)

    千次阅读 热门讨论 2020-03-17 22:18:31
    android源码集合,android O P Q源码下载 链接:https://pan.baidu.com/s/1VfzY2u5HPalvv3zOUzm_Rw 提取码:mt7n
  • 如何用Android Studio调试Android源码

    千次阅读 2018-08-29 14:58:14
    众所周知,Android源码是Eclipse结构的,我们怎样导入到Android Studio中并进行调试呢? 首先,打开Android Studio,点击File--&gt;Open(注意:这里是open而不是import),这里,我们以打开SystemUI为例: 接着...
  • 自己动手调试Android源码

    万次阅读 多人点赞 2016-07-04 00:02:00
    在自己动手编译Android最新源码一文中,我们为自己编译了一份最新的Android源码.很多时候,我们编译源码的目的不仅仅是尝试一番,而是希望对其进行调试,并修改源码,看看其中一些关键机制的运行原理.比如你对AMS掌握不深...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,346
精华内容 68,938
关键字:

android源码