安卓开发遇到的各种问题

1. 运行时出现的  java.lang.NoClassDefFoundError: org.htmlparser.Parser

出现这个问题,首先当然去查引用。发现引用包里有这个类呀。折腾了好久,后来才发现原来是这个类的依赖类没的。(是在eclipse里试出来的)引入一个htmllexer.jar包就好了。

这里的错误提示太误导人了。缺什么就提示什么呗。硬是把最上层的不缺的打映出来。

2. Multiple dex files define Lorg/htmlparser/util/SimpleNodeIterator;

我先说网上搜到的解决办法吧:f1  Project-> Clean   然后再Project -> Build All  这个是通过清空历史文件,重新编译的方法。

f2 其实,就是在你的项目下某个文件夹中有一个后缀为*.APK的文件,删掉,重启Eclipse即可。另外提醒下,一定要重启Eclipse!!

上面的是我从http://blog.csdn.net/asan855/article/details/7568702看到的。

f3 然后我遇到的情况却是。jar包里确实有两个一样的class。我们知道eclipse里是可以引用多个一样的包或类的。但安卓不让有一样的类,然后我就找到那个jar包,用RAR打开,删除其中的一个类。就ok了。

3. service类没有放到基本包下面,运行startService(loopRequestService);没反应,也不报错,service也不启动。

基本包在这里定义的:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.angelshelter.fanmore.android.v1"

解决办法是把service类定义移动基本包下面。

4. 

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:Program Files (x86)Javajdk1.8.0_102injava.exe'' finished with non-zero exit value 2

原因是我在开发apicloud插件的时候,引入了android-support-v4.jar包,可能与系统自带的冲突,删除就好了。(jar包有冲突

2017-05-23

一键真机测试的时候报错:The selected device is incompatible.

这个是因为build.gradle的minSdkVersion 10太高了,比你现在连接的手机高,所以你要把最低版本号调低一点或者换个新手机,记住,修改后要Build -> clean Project 一下才会生效

 2017-05-24

一头撞死算了,昨天我居然写出了一个死循环而不自知,还各种怀疑是不是开发环境有bug? 即没有报错,又没有执到结束,子线程也没有修改宿主类的成员变量。。。。

大家也来瞧瞧,一眼看出来的是大神

            String line = br.readLine();
            while(line!=null){
                if(!line.startsWith("#")){
                    if(line.length()==0){
                        continue;
                    }
                    M3u8Entity.TS ts = new M3u8Entity.TS(line, baseUrl + line);
                    entity.addTS(ts);
                }
                line = br.readLine();
            }

 2017-07-14

做播放器的时候,如果集成的播放器框加没有暴露出它的控制组件层什么时候显示,什么时候隐藏,有时候,你想小屏的时候隐藏返回,全屏的时候显示全屏。

发现自己设置visible并没有效果,因为框架会经常地修改setVisibility值,又不告诉你,每次它设置setVisibility值的时候,就会覆盖你自己的设置。

有一种另寻窍门的办法是,框架设置setVisibility,你可以设置透明度呀,透明度为1的时候不可见,透明度为255的时候可见。

如果是图片就是setAlpha(255);如果是View就是.getBackground().setAlpha(255);

2017-08-29

不作死就不会死。最近又遇到了UnsatisfiedLinkError问题。我把所有的so文件都加进去了的呀。一直以为只要把so文件放到jniLibs目录里就会自动加载,我又错了。需要用

System.loadLibrary("QuCore-ThirdParty");

去加载so文件。

所以呀,在学习一个SDK开发包的时候,那个继承Application的类是最核心的,一般在它里面做一些初始化工作。一定要看。

2017-08-30

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.administrator.appcompattest/com.example.administrator.appcompattest.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

检查 value.xml文件,是有定义Theme主题的,在看AndroidManifest.xml文件里面也设置了主题,为什么还是报这个错误了,后来花了我一晚上的时候,在对比中发现,原来是我自己生成的R文件(手动生成的)有问题。

2017-09-06凌晨

前几天开发中遇到的android.support.v7.widget.RecyclerView类找不到报错。今天找到原因了。

虽然我是看jar里面确实是有这个类。造成这个原因,是因为我在android-support-recyclervew多个版本之间换了部分类,造成RecyclerView依赖的类找不到,所以不能实例化RecyclerView。

又因为这个类是在jar包里面,所以Android Studio编译通过了,并没有发现有什么不对。

2017-09-08

在做安卓协议打开APP的时候,发现怎么做都不生效,后来打了一个正式包,居然有效了,原来usb运行对协议无效。

2017-09-24

Toast不能在非ui线程中调用。

2018-03-24

 mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                    SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_IN_DEFAULT,
                    AudioFormat.ENCODING_PCM_16BIT, BUFFER_SIZE);

这个只能调用一次,如果调用第二次,然后

 mAudioRecord.startRecording();

就会报错:报了

java.lang.IllegalStateException: 
        startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:986) at cn.angelshelter.app.apicloud.decibel.DecibelModule$1.run(DecibelModule.java:85) at java.lang.Thread.run(Thread.java:761)

正确的处理流程是


if(mAudioRecord!=null){
mAudioRecord.stop();
mAudioRecord.release();
}
mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_IN_DEFAULT,
AudioFormat.ENCODING_PCM_16BIT, BUFFER_SIZE);

 2019-12-08

修改AndroidManifest.xml下面的package包名,发现并没有生效。

然后找到build.gradle文件,看到一行

    defaultConfig {
        applicationId project.ANDROID_BUILD_APP_PKG
}

虽然我没有找到那个project文件在哪,但把 applicationId project.ANDROID_BUILD_APP_PKG 这一行注解掉就可以了。

原文地址:https://www.cnblogs.com/angelshelter/p/4132792.html