首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 系统架构及HAL层概述

对于必须与进程相关联的代码库,还可以使用直通模式(在Java中不受支持) ---- 1.4. AIDL Android接口定义语言(AIDL)是一款可供用户用来抽象化IPC的工具。...但是,如果框架客户端支持多种实例名称,则必须在设备专用service_contexts文件中添加其他实例名称 android.hardware.power.IPower/custom_instance...不要创建自定义状态类型,而应在接口文件中创建常量状态int,并在CPP/NDK后端使用EX_SERVICE_SPECIFIC,在Java后端使用ServiceSpecificException 未经检查的传输错误不会导致...每个分区都可以在内部使用自己的系统属性 从Android 10版本开始,跨分区访问的系统属性已架构化为Sysprop说明文件,并且用于访问属性的API会生成为C++具体函数和Java类 2.2.1....节点必须定义以下属性: dev必须指向表示by-name分区的设备节点 type必须是文件系统类型(如在fstab文件中一样) mnt_flags必须是装载标记的逗号分隔列表(如在fstab文件中一样

11.2K75

深入浅出Java注解

Java注解又称为标注,是Java从1.5开始支持加入源码的特殊语法元数据;Java中的类、方法、变量、参数、包都可以被注解。...使用注解很简单,根据注解类的@Target所修饰的对象范围,可以在类、方法、变量、参数、包中使用“@+注解类名+[属性值]”的方式使用注解。...如果是自定义的注解,比如第三方框架ActiveAndroid,它的用户是每个使用注解的类,所有使用注解的类都需要继承Model.java,在Model.java的构造方法中通过反射来获取注解类中的每个属性...android.support.annotation下; JDK:在包java.lang下; 第三方框架中的自定义注解; 最常见注解 @Override   属于标记注解,不需要设置属性值;只能添加在方法的前面...、类(如果一个类中的所有方法都有相同的线程需求,就可以对这个类进行注解,比如View.java就被@UIThread所标记)只能在指定的线程类中被调用,包括:@UiThread、@MainThread、

75820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android编译时注解,和重复代码Say No!

    可能存在一些疏漏和错误,欢迎指正~ Java注解基础 在Java中,一个自定义的注解看起来是类似下面这样子的: @Retention(RetentionPolicy.CLASS)@Target(ElementType.TYPE...使用Inherited声明出来的注解,只有在类上使用时才会有效,对方法,属性等其他无效。...新建Android工程和Java Module 注意:由于Android默认不支持部分javax包的内容,所以我们需要将注解解析相关的类放到Java Module中才能调用到。...获取了生产线父类的名称和包名,以及为即将生成的工厂类设置了包名和类名。...接口或者枚举 调用classBuilder设置类名; 调用addModifiers可以设置类的属性类型,public static final等,可以同时添加多个属性 调用addMethod可以在类中添加一个函数方法

    2.4K30

    java编码规范

    枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。 说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。...【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释 11....5) 类内共享常量:直接在类内部 private static final 定义。 ---- 5.【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。...【推荐】setter 方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名。在getter/setter 方法中,不要增加业务逻辑,增加排查问题的难度。我曾天真的认为这种黑魔法很酷。...5) 类 static 成员变量如果仅在本类使用,必须是 private。 6) 若是 static 成员变量,必须考虑是否为 final。 7) 类成员方法只供类内部调用,必须是 private。

    2.6K10

    java编码规范

    枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。 说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。...【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释 11....5) 类内共享常量:直接在类内部 private static final 定义。 ---- 5.【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。...【推荐】setter 方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名。在getter/setter 方法中,不要增加业务逻辑,增加排查问题的难度。我曾天真的认为这种黑魔法很酷。...5) 类 static 成员变量如果仅在本类使用,必须是 private。 6) 若是 static 成员变量,必须考虑是否为 final。 7) 类成员方法只供类内部调用,必须是 private。

    2.5K20

    Binder 进程通信

    对于List和Map中的元素类型必须是Aidl支持的类型。如果使用自定义类型作 为参数或返回值,自定义类型必须实现Parcelable接口。...在aidl文件中所有非Java基本类型参数必须加上in、out、inout标记,以指明参数是输入参数、输出参数还是输入输出参数。 Java原始类型默认的标记为in,不能为其它标记。...AIDL 支持的数据类型 共 4 种: Java 的基本数据类型 List 和 Map 元素必须是 AIDL 支持的数据类型 Server 端具体的类里则必须是 ArrayList 或者 HashMap...新建 aidl 文件夹,在其中创建接口 aidl 文件以及实体类的映射 aidl 文件 在 main 文件夹下新建 aidl 文件夹,使用的包名要和 java 文件夹的包名一致: // Book.aidl...parcelable Book; 在其中声明映射的实体类名称与类型 注意,这个 Book.aidl 的包名要和实体类包名一致。

    86420

    Android 代码混淆 混淆方案

    WebView中JavaScript调用的方法 Layout布局使用的View构造函数、android:onClick等。 检查混淆结果 混淆过的包必须进行检查,避免因混淆引入的bug。...把类名、属性名、方法名替换为简短且无意义的名称; 预校验。添加预校验信息。这个预校验是作用在Java平台上的,Android平台上不需要这项功能,去掉之后还可以加快混淆速度。...具体做法是在 build.grade文件中,将shrinkResources属性设置为true。需要注意的是,只有在用minifyEnabled true开启了代码压缩后,资源压缩才会生效。...“合并资源”流程中,名称相同的资源被视为重复资源会被合并。...需要注意的是,这一流程不受shrinkResources属性控制,也无法被禁止,gradle必然会做这项工作,因为假如不同项目中存在相同名称的资源将导致错误。

    2.7K30

    Android开发(21) Android Manifest.xml 结构详解二

    xlmns:android指定了Android的命名空间,默认情况下是“http://schemas.android.com/apk/res/android”;而package是标准的应用包名,也是一个应用进程的默认名称...,以本书微博应用实例中的包名为例,即“com.app.demos”就是一个标准的Java应用包名,我们为了避免命名空间的冲突,一般会以应用的域名来作为包名。...JVM(Java虚拟机),然后再把Java类加载到JVM里头运行,负责加载Java类的这部分就叫做ClassLoader。...Activity名,当然必须是前面已经声明过的Activity。...> Service服务组件的声明标签,用于定义与描述一个具体的Android服务,主要属性有:Service服务类名android:name,服务图标android:icon,服务描述android

    78240

    你不知道的 Java 注解那些事!

    Java 注解又称为标注,是 Java 从 1.5 开始支持加入源码的特殊语法元数据:Java中的类、方法、变量、参数、包都可以被注解。...事实上,@Override 是告诉编译器这个方法是一个重写方法,如果父类中不存在该方法,编译器会报错,提示该方法不是父类中的方法。...使用注解很简单,根据注解类的 @Target 所修饰的对象范围,可以在类、方法、变量、参数、包中使用 “@+注解类名 + [属性值]” 的方式使用注解。...如果是自定义的注解,比如第三方框架ActiveAndroid,它的用户是每个使用注解的类,所有使用注解的类都需要继承 Model.java,在 Model.java 的构造方法中通过反射来获取注解类中的每个属性...方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过 default 来声明参数的默认值。

    71310

    使用 Cordova 构建应用的流程

    "service": 在本机端调用的服务名称。 这对应于一个本机类,下面列出的本机指南中提供了更多关于该类的信息。 "action": 呼叫本地方的操作名称。 这通常对应于本机类方法。...第一个调用 Echo 服务,这是一个类名。 第二个请求 echo 动作,这是该类中的一个方法。 第三个是包含 echo 字符串的参数数组,它是 window.echo 函数的第一个参数。...>, []); 这将从 WebView 向 Android 本地端封送一个请求,通过在 args 数组中传递附加参数,有效地调用服务类上的 action 方法。...该值是 Java 类的完全限定的名称空间标识符。 否则,插件可能会编译,但仍然不可用于 Cordova。 插件初始化和生存期 为每个 WebView 的生命周期创建一个插件对象实例。...当捕获异常并返回错误时,为了清晰起见,尽可能使返回到 JavaScript 的错误匹配 Java 的异常名称是很重要的。

    4.3K11

    ClassNotFoundException解决方案总结

    /article/details/50773255  2》,是否使用了重复的类库,且版本不一致,导致低版本被优先使用  3》,类名错了,在调用class类中的forname方法时会出异常,很明显,我的是在调用...classloader的loadclass方法时出错  4》,没有导入纯Java驱动包  还有一些初级错误比如  5》,清单配置文件中是否activity的路径错误,activity名字是否错误 还有尽量不要使用中文作为项目名称...,如果你想修改APP的名称可以在string.xml以及Androidmanifest.xml文件中修改 4,示例解决方案 如果在Androidmanifest.xml文件中点击activity类名根本无法进入到...activity中,那就说明包名跟目录不是对应的,必须修改。...检查时发现包名是错误的 我的目录结构如下: 也就是说mainactivity类位于src/activity包下,而我的清单配置文件中的package却配置错误 android

    5.2K20

    【Android开发高级系列】AndroidManifest.xml专题

    1 简介 1.1 关于AndroidManifest.xml         AndroidManifest.xml是每个android程序中必须的文件。...B、package         指定本应用内java主程序包的包名,它也是一个应用进程的默认名称     C、sharedUserId         表明数据权限,因为默认情况下,Android给每个...C、android:backupAgent         这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值...,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)。     ...若该类(比方androidMain类)是在声明的package下,则可以直接声明android:name="androidMain",但此类是在package下面的子包的话,就必须声明为全路径或android

    88850

    Android开发规范(转自掘金,转MD格式)

    没有必要通过 package 分离,因为 PBL 中也可能出现尴尬的情况: ├── service ├── MainService.java 复制代码 按照 PBL, service 包下的所有东西都是...类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。...在 Android 开发过程中,Context 在函数参数中是再常见不过的了,我们最好把 Context 作为其第一个参数。...文件,因为对于一个视图来说,有一个重复的外观是很常见的,将所有的外观细节属性(colors、padding、font)放在 styles.xml 文件中。...,将一组相关的和重复 android:xxxx 的属性放到一个通用的 中。

    8110

    android代码混淆

    为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难...缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素的名称,否则就会这样就会导致程序出错。 一, 我们用到反射的地方。...二, 我们代码依赖于系统的接口,比如被系统代码调用的回调方法,这种情况最复杂。 三, 是我们的java 元素名称是在配置文件中配置好的。...2,运行错误,当code 不能混淆的时候,我们必须要正确配置,否则程序会运行出错,这种情况问题最多。 3,调试苦难,出错了,错误堆栈是混淆后的代码 ,自己也看不懂。...}    保护指定的类的成员的名称(如果他们不会压缩步骤中删除) -keepclasseswithmembernames {class_specification}    保护指定的类和类的成员的名称

    1.6K80

    Android开发(九) Android Manifest.xml 结构详解

    android程序中必须的文件。...B、package 指定本应用内java主程序包的包名,它也是一个应用进程的默认名称 C、sharedUserId 表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID...C、android:backupAgent 这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值...:name="package名称.子包名成.androidMain" L、android:permission 设置许可名,这个属性若在上定义的话,是一个给应用程序的所有组件设置许可的便捷方式...是指向对应快捷方式的activity,如上述的shortcut(此Activity名) android:label是指快捷方式的名称,而快捷方式的图标默认是给定的application图标 7、第三层

    1.3K30

    android开发笔记之 Android代码混淆打包

    大家好,又见面了,我是你们的朋友全栈君。 大家应该都听过代码混淆吧,如果大家有去反编译过别人的APK的话,应 该会看到好多包名和类名是a,b.c….之类的的吧,这里就提到了一个概念: 混淆。...那就让我们了解下这个东西吧 作用:为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译 缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素的名称,否则就会这样就会导致程序出错...三, 是我们的java 元素名称是在配置文件中配置好的。 所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆的。...2,运行错误,当code 不能混淆的时候,我们必须要正确配置,否则程序会运行出错,这种情况问题最多。 3,调试苦难,出错了,错误堆栈是混淆后的代码 ,自己也看不懂。...-dontusemixedcaseclassnames 混淆时不会产生形形色色的类名 -keepattributes {attribute_name,…} 保护给定的可选属性,例如LineNumberTable

    85720

    Android 混淆那些事儿

    混淆的原理 Java 是一种跨平台、解释型语言,Java 源代码编译成的class文件中有大量包含语义的变量名、方法名的信息,很容易被反编译为Java 源代码。...混淆不仅能将代码中的类名、字段、方法名变为无意义的名称,保护代码,也由于移除无用的类、方法,并使用简短名称对类、字段、方法进行重命名缩小了程序的size。...在优化阶段,Proguard进一步设置非Entry Point的类和方法为private、static和final来进行优化,不使用的参数会被移除,某些方法会被标记被内联。...(2)-assumenosideeffects 指令: 下文会用在android log的移除上 assumeosideeffects是Optimization过程中的选项,所以为保证指令的有效,需要开启...中资源文件名使用简短无意义名称进行替换,如下面代码所示,在AAPT生成resources.arsc和*.ap*时把资源文件的名称进行替换。

    3.3K50

    AndroidManifest.xml常用标签属性介绍

    标签 说明:实现各个应用程序之间的(跨应用)数据共享 属性:android:name 说明:该属性代表实现了provider的类的名称,也就是ContentProvider的子类。...该属性应该是一个类的全名称 属性:android:authorities 说明:列出一个或者多个由provider的提供的URI的authorities。多个authorities由分号隔开。...子标签中的规则进行授权) service 标签 属性:android:name 说明:用于指定实现该服务的Service子类的类名,它应该是完整的Java...类名 receiver 标签 receiver 标签 说明:用于响应来自应用APP或者系统的广播消息 属性:android:name 说明:注册一个广播类(name后需写出你要注册的文件路径...meta-data 标签 meta-data 标签 说明:提供组件额外的数据,它本身就是一个键值对,可以自定义名称和值 属性:android:name 说明:名称 属性:android

    1.5K20

    androidmanifest.xml作用_android读取xml数据

    大家好,又见面了,我是你们的朋友全栈君。 AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。...B、package 指定本应用内java主程序包的包名,它也是一个应用进程的默认名称 C、sharedUserId 表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同...C、android:backupAgent 这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定...:name=”package名称.子包名成.androidMain” L、android:permission 设置许可名,这个属性若在上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的...(此Activity名) android:label是指快捷方式的名称,而快捷方式的图标默认是给定的application图标 7、Service: 【1】service与activity同级,与activity

    1.4K20
    领券