由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的理解和认识简要的做个笔记,有异议或者不解的,可以直接留言. 什么是ProGuard工具? ProGuard是android提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类.字段和函数等,达到压缩.优化和混淆代码的功能.具体来说,使用ProGuard工具…
由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的理解和认识简要的做个笔记,有异议或者不解的,可以直接留言. 什么是ProGuard工具? ProGuard是android提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类.字段和函数等,达到压缩.优化和混淆代码的功能.具体来说,使用ProGuard工具…
导入android源码中的APP源码到eclipse 一般最简单的办法就是创建新的android工程,选择create project from existing source选项,直接导入源码就OK了 编译报错一般就是少了相关的jar包,直接在源码中找到相应jar导入eclipse就好了 不过我们一般只是为了编辑,不用管这些错误的,我们增加在unix下mm编译就OK了…
最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计模式,以及近期Android开发中的一些热点话题. 受访嘉宾介绍: 何红辉(@MrSimp1e),前友盟Android工程师,活跃于国内各大技术社区,热爱开源,热爱技术,热爱分享.Android开源库 AndroidEventBus . Colorful 作者, 开发技术前线 站长,<Android源码…
1. 方法一:导入,编译(太麻烦,各种不兼容问题) android studio和eclipse的应用结构目录是不同的,但是在android源码中的应用基本上都是使用的eclipse目录结构(在/packages/apps中),如果是使用的eclipse,则随便复制一个android.mk修改一下就能使用了,如果是android studio,则还需要一定的修改. 注意:我只在android studio2.3上成功,android studio3.0上会有各种各样的错误,不知道如何解决 pac…
1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keystrokes. Use with TAKES_FOCUS_MASK when * calling setFlags. */ private static final int NOT_FOCUSABLE = 0x00000000; /** * This view wants keystrokes. Us…
今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的APP是可以使用隐藏的API的,为什么这个不行? 百思不得其解,最后通过对比mk文件发现,在计算机的mk文件中多了一句:LOCAL_SDK_VERSION := current,顿时发现问题所在 注释掉这句之后,重新mmm编译通过.…
Android源码中很多关键代码都是C++实现的,java通过jni来调用,经常会看到java中这样的代码: static native Thread currentThread(); 如何根据方法名找到其对应的C++实现,有两个方法. 先来个java代码的示例VMThread.java: package java.lang; class VMThread { Thread thread; int vmData; VMThread(Thread t) { thread = t; } native…
在Android源码中添加C/CPP可执行程序一般保存在external目录中 下面是每个文件的内容 ①add.c #include "add.h" int add (int a, int b) { return a+b; } ②add.h #ifndef __ADD_H__ #define __ADD_H__ int add(int a, int b); #endif ③main.c #include <stdio.h> #include <cutils/log.h…
参考罗升阳<Android系统源代码情景分析> 在Android源码中,我们通常把实验性质的Android APP放在packages/experimental目录下.对于一个简单的应用程序,他的目录结构如下 Android应用程序工程一般包含有一个源代码目录src.一个资源目录res.一个配置文件AndroidManifest.xml和一个编译脚本文件Android.mk HelloAndroid.java package com.tian.hello; import android.app…
一:aar文件如何引用 系统Settings中引用bidehelper-1.1.12.aar 文件为例 源码地址:packages/apps/Settings/Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := \ $(call all-logtags-files-under, src) LOCAL_MODULE := settings-logtags include $(BUILD_ST…
在项目\frameworks\base\wifi\java\android\net\wifi\WifiStateMachine.java里面,有如下的代码,是设置wifi热点保持状态的:如下: private class HotspotAutoDisableObserver extends ContentObserver { public HotspotAutoDisableObserver(Handler handler) { super(handler); mContext.getConte…
最近项目相当紧张,回家之后还需要继续研究android源码. 从网上找了一些资料,下载过程中还是遇到了很多问题.这里罗列一下: 1. 下载Repo过程中提示证书问题: curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo curl: (60) SSL certificate problem: unable to get local issuer certificate More details here…
最近看了一些android的源码,发现设计模式无处不在啊!感觉有点乱,于是决定要把设计模式好好梳理一下,于是有了这篇文章. 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因.如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责.而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因.通俗的说,即一个类只负责一项职责,将一组相关性很高的函数.数据封装到一个类中. 开闭原则 对于扩展是开放的,这意味着模块的行为是可以扩展的.当应用的需求改变时,我们可以对模块进行扩展,使其…
直接看例子: #include<iostream> #include<stdlib.h> using namespace std; struct Base{ int ba; int bb; void printB(){ cout<<"base print"<<endl; } }; struct A{ struct Base b; int aa; void printA(){ cout<<"A print"&…
今天想把android源码/vendor/letv/frameworks/base/java下的源码编译成 framework-letv.jar供乐乐语音客户端使用,编译完后,发现jar包文件虽然生成了,但包里面并没有相关的源码class文件,无法正常使用.经过请教加研究发现,Android.mk文件需要添加选项如下: --------------------------------start------------------------------------ 54 LOCAL_JACK_E…
一:如何自定义TextView实现滚动效果 继承TextView基类 重写构造方法 修改isFocused()方法,获取焦点. /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the…
方法一: 在packages/apps下面以需要预置的APK名字创建文件夹,以预置一个名为Test的APK为例 将Test.apk放到packages/apps/Test下面 在packages/apps/Test下面创建文件Android.mk,文件内容如下: include $(CLEAR_VARS) # Module name should match apk name to be installed LOCAL_MODULE := Test LOCAL_MODULE_TAGS := op…
由于项目需求,在系统多媒体管理数据库里的存储图像文件的表中需要新增加一个字段,源码在:项目\packages\providers\MediaProvider\MediaProvider.java下,在updateDatabase()方法里,你会发现images表格是由files创建的一个视图,于是,在files的创建里增加了一个字段,如下: .... db.execSQL("CREATE TABLE files (" + "_id INTEGER PRIMARY KEY AU…
在源码\android\frameworks\base\core\java\android\content\res \Configuration.java下有读取DEFAULT_FONTSCALE的值,如果没有定义这个值就用缺省的值fontScale = 1.0f; 代码如下: /** * Set this object to the system defaults. */ public void setToDefaults() { String scale = Build.DEFAULT_FO…
很多人都下载过下图中的 Sources for Android SDK,但是很少人知道怎么用       下载完毕后可以再 Android SDK 根目录下看到 sources 文件夹内 有 android-18 的文件夹,里边就是 Android 4.3 的源码,如下图       我们需要做的就是把 android-18 目录下的所有文件 拷贝 到  Adt-Bundle\sdk\platforms\android-18 中新建的 sources 文件夹内     ok,that's all…
1. jdk的版本不对 我开始安装的是最新的jdk7,但是编译时会出现jdk的版本…
集成第三方so和jar包 include $(CLEAR_VARS) #jar包编译            LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=securitysdk:libs/hello.jar #64和32系统选择不同的库 ifeq (arm64, $(strip $(TARGET_ARCH)))     LOCAL_PREBUILT_LIBS := libssl:libs/arm64-v8a/libssl.so     LOCAL_PREBUILT…
Android系统本身提供了很多系统服务,如WindowManagerService,PowerManagerService等.下面描述一下添加一个系统服务的具体步骤. 1.定义自定义系统服务接口 撰写一个aidl文件,定义服务的接口,将在编译过程中通过aidl工具生成对应的Java接口. 一般系统服务的aidl文件都放在framework\base\core\java\android\os目录中. 以IMyTool.aidl为例.在.aidl中定义自己需要加入的方法,编写规则和java接口差不…
Android开发的学习流程 final,finally,finalize的区别 Android的发展越来越快,Android开发人员越来越多,当两种情况碰撞,在诸多开发者中跟紧Android步伐脱颖而出就显得十分必要,虽然Android开发行业薪资高,潜力大,但人往高处走,有更大的上升空间就一定要抓住机会,Android开发行业其实很简单,高技能行业行业唯一重要的要求就是技能,所以学好Android开发直接关系到未来的职业发展,千锋Android培训机构作为行业最具权威的Android研发和人…
在external/icu4c/studata/readme.txt,里面有修改icu4c中资源的编译方法 # 具体步骤(可复制下面命令,直接运行): # 1)新增或者修改external/icu4c/data目录下的资源 # 2)创建一个临时目录: # croot rm external/icu4c/stubdata/icudt48l-all.dat rm external/icu4c/stubdata/icudt48l-default.dat rm -rf external/icu4c/ic…
The Independent JPEG Group's JPEG software========================================== README for release 6b of 27-Mar-1998==================================== This distribution contains the sixth public release of the Independent JPEGGroup's free JPEG…
2.3编译Android源码 Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源码之前,必须要先掌握Android源码的组成. 2.3.1Android源码目录结构 在Android源码中,按照不同功能代码被放在不同的目录下: 目录 描述 bionic 针对Android系统定制的仿生标准C库.链接器等所在目录,Android系统并没有使用Linux的glibc库,bioinc…
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio.IntelliJ IDEA中进行阅读的步骤和过程,网上的博客和网站上已经记录的很多了,仅此将自己从书上看到的方法和步骤记录一下.android源码的工程比较大,如果手动阅读代码不借助IDE工具的话,还是比较费劲的,将android源码导入eclipse.androidstudio.IntelliJ…
Android源码下载完成的目录结构如如所示: step1:将.classpath文件拷贝到源代码的根目录 Android源码支持多种IDE,如果是针对APP层做开发的话,建议大家使用Eclipse开发环境.在源码路径(~/development/ide/eclipse)下,Android提供了.classpath配置文件(备注:该文件为隐藏文件). cp development/ide/eclipse/.classpath ./ chmod u+w .classpath # Make the…