工作中遇到的问题---android

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路径错误或别名错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值