文章目录
- 1、友盟QQ和QQ空间分享提示图片存储错误
- 2、hijson格式化后缺少了一些参数
- 3、enum少用作单例
- 4、友盟QQ和空间分享收不到回调
- 5、manifest中package和gradle中applicationID的区别
- 6、org.gradle.jvmargs = -Xmx1536m
- 7、android studio设置代理的问题
- 8、设置阿里的jcenter地址
- 9、studio可设置多渠道打包,为不同渠道配置不同api
- 10、发送消息到通知栏
- 11、构建版本变体遇见的问题
- 12、打包aab报错
- 13、 Caused by: ys: Subscriber class have no public methods with the @Subscribe annotation
- 14、listview相关
- 15、两个类实现同一个回到接口,总有一个无效
1、友盟QQ和QQ空间分享提示图片存储错误
使用友盟分享有的界面可以,有的一直提示QQ和QQ空间一直提示图片存储错误或没有存储权限,最后才发现失败的地方是因为使用了网络图片地址,而这个地址又用不了了。
2、hijson格式化后缺少了一些参数
Hijson格式化后台返回的json字符串,值为null时,自动去掉了,搞得有用的字段没写到。
3、enum少用作单例
enum一般用来定义常量
4、友盟QQ和空间分享收不到回调
友盟QQ和空间分享收不到回调,需添加
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data);
}
5、manifest中package和gradle中applicationID的区别
manifest中package和gradle中applicationID的区别
1、package主要用于指定类和资源文件存放的位置。
2、applicationID是应用的唯一标识符,多渠道打包是可以为不同渠道配置不同的applicationID的,但这样他们就不是同一个应用了,更新也无法直接覆盖安装了。
如果两个不一样时,第三方SDK需要我们的包名时,要提供的是applicationID,这才是应用标识符。
6、org.gradle.jvmargs = -Xmx1536m
org.gradle.jvmargs = -Xmx1536m 是Gradle 的默认最大堆大小为 1536 MB,如果电脑很卡可以改小一点就像给studio分配内存一样。
7、android studio设置代理的问题
在studio设置页面设置代理将会使所有项目都生效,在gradle.properties中设置代理将会用于整个项目(在studio设置中设置代理会覆盖gradle.properties中的设置),如果要单独为某个module设置代理就写在模块的gradle的android{里}
apply plugin: 'com.android.application'
android {
...
defaultConfig {
...
systemProp.http.proxyHost=proxy.company.com
systemProp.http.proxyPort=443
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
systemProp.http.auth.ntlm.domain=domain
}
...
}
8、设置阿里的jcenter地址
Google和jcenter下载过慢可以使用阿里的地址(https://maven.aliyun.com/mvn/view),按下面的形式,要什么库就引入
maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
也可以使用离线的配置,配置方法https://developer.android.google.cn/studio/intro/studio-config
9、studio可设置多渠道打包,为不同渠道配置不同api
project structure中可配置多渠道打包和为调试添加签名,多变种等
10、发送消息到通知栏
更多设置可参考
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//适配8.0及以上需要设置NotificationChannel,且NotificationChannel的id与Notification的channelId必须相同
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId, "模拟验证码", NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(channel);
}
Notification notification = new NotificationCompat.Builder(this, channelId)
.setContentTitle("登录验证码")
.setContentText("登录验证码是" + stringBuilder.toString())
.setSmallIcon(R.mipmap.ic_launcher)
.build();
notificationManager.notify(1, notification);
11、构建版本变体遇见的问题
1.参考链接配置构建变体 2.build type 是版本类型,默认有release和debug两个,productFlavors是产品变种(多渠道打包),他们两个组合起来就是版本变体Build varient。
为不同版本类型、产品变种、版本变体配置不同资源文件的问题(正式版和测试版切换变体就自动切换接口)
1、接口类放到各自版本下,main文件夹里不放,避免重复冲突
2、最好和以前的包结构一样,这个类要写上包路径,不然main里面引用不到
package com.example.jobdemo; \没有路径main包引用不到
public class WebApi {
public static final String buildinfo = "QQ版";
}
12、打包aab报错
‘other’ has different root,需要把打包文件生成路径放到项目里面,不能是其他目录
13、 Caused by: ys: Subscriber class have no public methods with the @Subscribe annotation
原因:注册了eventbus又没有写接收的方法(或者接收的方法没有@Subscribe(threadMode = ThreadMode.MAIN))这类的标记
解决:这个activity不接收eventbus事件就不要注册,注册了就要有接收的方法。
14、listview相关
listview.addHeaderView 不设置适配器不会显示,header会触发item点击事件,适配器中返回list.size就好了,但如果有头部setOnItemClickListener的position 从HeaderView开始,添加了几个头部就占几个position
15、两个类实现同一个回到接口,总有一个无效
一个回调接口不能同时被两个类注册,比如一个回调接口被一个activity和它里面的fragment注册了,接口运行回调方法时,并不能像eventbus那样让所有注册的类都收到,要实现这个需求还是用eventbus或自己写广播。