1. 尽量将界面的公用控件或者布局抽取出来作为自定义的控件,并对外申明需要的方法(这些方法可以在需要的时候加),方便管理,减轻activity的压力。
2.新建module作为项目依赖时,在子module中不要涉及布局等,只写封装对象、逻辑和操作等内容,界面相关的写到主module中。
3.关于命名:尽量写含义明确的英文单词。成员变量加 m(member)、静态变量加s(static)。
4. 新建module后,如果无法引用R文件,可以执行一下操作:打开 file/settings 界面,依次选择 Build,Execution/compiler ,在该界面的右边选择勾选
第一个选项(compile independent modules in....),然后clear、build项目。
5. 在一次使用EventBus时,始终无法导包,最后发现项目文件:bubuild.gradle 里面依赖:
dependencies{} 里面是: implementation fileTree(include :[ ' *.jar ' ], dir: 'libs' )
而不是 compile fileTree(include :[ ' *.jar ' ], dir: 'libs' )。
原理还不知道。
6. 当程序中的“BuildConfig”无法导包时(可能不影响编译和程序的启动),可以选择菜单栏的Build:选择Make Module '你的mudule名字' 就可以在build(gradle生成的编译文件)中生成BuileConfig类,就可以在程序中导包了。
7.在实际开发中,有时候会接受一些来源的数据包,但是注意一点:c/c++ 的byte取值范围和java是不一样的:
java中byte的取值范围是 -128到127,最高位用来表示正负
而c/c++中byte的取值范围是0到255,
比如同样的十进制数:100,转换成java或c/c++的byte,都是1100110,
但是在java中,使用java的getBytes()得到的却是负数(最高位是1,表示负数)
而c#的getBytes()方法得到的却是正数。
如果在java想要得到和c#等值的数据的话,
可以对android接收到的byte数据做&0xFF处理。
8. 有时候我们换电脑导项目会发现as提示我们这样的错误,导致程序无法正常运行:
Error:This Gradle plugin requires Studio 3.0 minimum
可能的解决方法是:在项目的gradle.properties文件末尾加上代码:
android.injected.build.model.only.versioned = 3
该方法亲测有效,但不是唯一的方法。