1. 接入海康云眸的SDK时,将aar放在app/libs中,在build.gradle中配置
implementation(name: 'HikCloudOpenSDK-1.0.3', ext: 'aar')
时,gradle sync时报错
ERROR: Failed to resolve: :HikCloudOpenSDK-1.0.3:
修改:在android中加入即可
android {
……
repositories {
flatDir {
dirs 'libs'
}
}
}
2. 打开一个新项目,Gradle sync时报错:
The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin.
原因:
是build.gradle中android{}里出问题了 instrumentTest.setRoot(‘tests’) ,你可能在升级 Android Studio 时更新了项目的 gradle 配置,这里的配置中 instrumentTest 已被弃用,不适用于现在的 gradle 版本。
解决方法:
用 androidTest 替换 instrumentTest,编译运行即可。或者将instrumentTest.setRoot(‘tests’) 直接注释掉。
3. ScrollView嵌套RecycleView会有滑动冲突:
解决方法:rv_report.setNestedScrollingEnabled(false); 禁止recycleView滑动。
但这样,RecycleView会显示不全,只显示一项。
解决方法:
在recycleView外面嵌套一层布局,并把布局的属性设置为android:descendantFocusability="blocksDescendants"
<RelativeLayout
android:descendantFocusability="blocksDescendants"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_report"
android:layout_marginBottom="@dimen/px30"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
4. MPAndroidChart 柱状图
多条柱状图groupBars
(barWidth + barSpace) * barNum + groupSpace = 1;
多条柱状图显示不全,向右偏移:
解决方法:
xAxis.setAxisMaximum(size);
xAxis.setAxisMinimum(0f);
xAxis.setCenterAxisLabels(true);
设置了后,自定义X轴标签时报空指针
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
String labelValue = warningBeans.get((int) value % warningBeans.size()).getAreaName();
// Log.e(TAG, "labelValue="+labelValue+","+value+",Math.ceil(value)="+Math.ceil(value));
return labelValue;
}
});
改成:
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
if (value < 0) {
return "";
}
String labelValue = warningBeans.get((int) value % warningBeans.size()).getAreaName();
// Log.e(TAG, "labelValue="+labelValue+","+value+",Math.ceil(value)="+Math.ceil(value));
return labelValue;
}
});
5. 个推原来好用,突然获取不到clientId了,查看打印:
Process: com.nmpa.nmpaapp:pushservice, PID: 7618
java.lang.ExceptionInInitializerError: Please first initialize in Application
at com.nmpa.nmpaapp.appmanager.LibApp.getContext(LibApp.java:24)
at com.nmpa.nmpaapp.utils.SavePreferences.getString(SavePreferences.java:92)
at com.nmpa.nmpaapp.base.BaseApplication.onCreate(BaseApplication.java:99)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1122)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6619)
at android.app.ActivityThread.-wrap2(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:108)
原来在application做初始化时,其他地方报了异常,从而影响了个推的初始化;
将SavePreferences.getString("SP_SDK_OUATH_TOKEN_VAL")这句代码注释掉即可。
6. 在Android Studio中导入一个项目,运行到真机上时,报错:
The application could not be installed: INSTALL_FAILED_ABORTED
解决方法:
在手机的开发者模式中,关闭监控ADB安装应用的选项,再运行就行了。
7. 导入项目,报错:"Unknow host 'd29vzk4ow07wi7.cloudfront.net'. You need to adjust the proxy settings in Gradle'
在总的build.gradle中加入阿里云镜像,注意要放在jcenter()前面。
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
8. 打包时,报错:
Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
只需要按照提示在build.gradle中添加:
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
9. 打包时报错:ERROR: All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
解决办法:
在app的build.gradle中android的defaultConfig下增加flavorDimensions "default"即可。
10. AndroidManifest.xml的配置:
android:extractNativeLibs="true"
extractNativeLibs对应的是native层设置。当设置为false,会防止安装时PackageManager将APK中的so文件拷贝解压到文件系统中,设为false时,打包出来的apk会很大,设为true时,打包大小与不写时一样;
11. 页面中添加多个fragment时,fragment的内容有时候不显示;
向页面中添加完fragment后,要记得执法fragmentTracation.commit()或commitAllowingStateLoss()方法,之后再进行fragment的显示或隐藏操作;
if (mainFragment == null) {
mainFragment = new MainFragment();
transaction.add(R.id.fl_content,mainFragment,MainFragment.class.getName());
}
if (blankFragment == null) {
blankFragment = BlankFragment.newInstance();
transaction.add(R.id.fl_content,blankFragment,BlankFragment.class.getName());
}
if (settingFragment == null) {
settingFragment = new SettingFragment();
transaction.add(R.id.fl_content, settingFragment,SettingFragment.class.getName());
}
transaction.commitAllowingStateLoss();
showMainFragment();
或者改用:
mainFragment = new MainFragment();
blankFragment = new BlankFragment();
settingFragment = new SettingFragment();
transaction.add(R.id.fl_content,mainFragment,MainFragment.class.getName())
.add(R.id.fl_content,blankFragment,BlankFragment.class.getName())
.add(R.id.fl_content,settingFragment,SettingFragment.class.getName())
.hide(blankFragment)
.hide(settingFragment)
.show(mainFragment).commit();
12. 计算view的宽高:
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), //2, 测量大小
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
当View.MeasureSpec.UNSPECIFIED换成View.MeasureSpec.EXACTLY时报错:
java.lang.IllegalArgumentException: width and height must be > 0
附注MeasureSpec:
view的MeasureSpec是由自己的LayoutParams和父容器所给的MeasureSpec共同决定的;
MeasureSpecs实现为32位的int,由size和mode组成,高2位代表mode,低30位代表size,它通过将mode和size打包成一个int值来减少对象内存分配,并提供打包和解包的方法。
mode分类:
- UNSPECIFIED:父容器不对View有任何限制,给它想要的任何尺寸。一般用于系统内部,表示一种测量状态。
- EXACTLY:父容器已经检测出view的精确大小,这时候view的大小就是size所指定的值。它对应于LayoutParams中的match_parent和具体数值两种模式。
- AT_MOST:父容器指定了一个可用大小,即size,子view的大小不能大于这个值,具体值要看vew的实现。它对应于LayoutParams中的wrap_content。
13.No signing config configured for variant release
运行程序时报错No signing config configured for variant release
原因:build.gradle中没有配置signingConfigs或者signingConfigs配置信息错误,比如jks路径错误或别名错误。