Android 问题汇总


Android问题汇总

目录
  • Android问题汇总
    • 1.使用Android Studio新建项目后,启动模拟器出现【No system image available】
    • 2. SDK、AVD、JDK、ADB、APK整理
      • AVD
      • ADB
    • 3.新建android空项目后configure build一直在转圈
    • 4.在根据P37页在onCreate()方法中写入button toast事件时出现代码Button提示红色,且说can't resolve symbol button的提示
    • 5.can't resolve symbol Intent
    • 6.理解在XML文件中的xmlns
    • 7.the ADB binary found at ... is obsolete and has seroiusperformance problems with the Android Emulato
    • 8.Emulator: ##KBD: Full queue, dropping event, current drop count
    • 9.怎么查看自己的android studio版本?
    • 10.android studio3.4.1版本添加百分比布局依赖
    • 11.使用adb工具无法切换成超级管理员
    • 12.怎么找到SDK路径?怎么找到SDK/platform-tools路径
    • 13.Android Studio代码区字体太小,调整代码区字体大小
    • 14.怎么删除在android模拟器上安装好的应用程序?
    • 15.使用adb 检查表是否添加数据成功 能正常进入数据库,查到表名,但是输入select * from Book;无返回结果
    • 16.配置LitePal
    • 17.在使用LitePal创建数据库时运行程序点击按钮直接显示LitePalTest has stopped. 报E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.litepaltest, PID: 18609 org.litepal.exceptions.ParseConfigurationFileException: can not parse the litepal.xml, check if it's in correct format错误。
    • 18.怎么使用adb进入数据库看表?
    • 19.打开模拟器,在Android studio底端显示【waiting for target deviceto come online】一直在转圈,而且点击模拟器中应用程序的界面没反应
    • 20.在模拟器中给10086打电话能打通吗?
    • 21.对URI和URL的理解
    • 22.再次创建和LitePal相关的项目时,在AndroidManifest.xml配置LitePalApplication写入 android:name="org.litepal.LitePalApplication"时会标红
    • 23.运行酷欧天气,显示正在加载,然后加载失败,无法显示全国各省名称
    • 24.酷欧天气正常显示省份后,点击某一省份,APP闪退,报CoolWeather keeps stopping
    • 25.android.database.sqlite.SQLiteException: no such table: county (code 1): , while compiling: SELECT * FROM county WHERE cityid = ?
    • 26.运行酷欧天气,获取天气信息失败,报com.example.coolweather W/System.err: java.net.SocketTimeoutException: connect timed out ??
    • 27.JSON和Gson
    • 28.怎么找到最新的依赖包dependencies
    • 29.怎么修改app的图标和名称
      • 修改app名称
      • 修改app图标
    • 31.我在运行展示网页的app时网页界面显示报错net::ERR_NAME_NOT_RESOLVED
    • 32. No version of NDK matched the requested version 20.0.5594570
    • 33.make project、clean project、rebuild project、build APK、generate signed apk
    • 34.Android Studio Build乱码

1.使用Android Studio新建项目后,启动模拟器出现【No system image available】

img

解决:切换网络,连接外网。看立马就好了??

image-20201012132909978

2. SDK、AVD、JDK、ADB、APK整理

AVD

Android Virtual Device,安卓虚拟设备.

image-20201106162409927

这就叫安卓虚拟机,AVD。

ADB

adb,android debug bridge安卓调试桥,可以让您与设备进行通信。

参考

3.新建android空项目后configure build一直在转圈

  • 尝试解决方法1:换网络

结果:报错

ERROR: Android dependency 'androidx.loader:loader:1.0.0' is set to compileOnly/provided which is not supported

image-20201013105828259

吃个饭回来build一下又好了????

4.在根据P37页在onCreate()方法中写入button toast事件时出现代码Button提示红色,且说can't resolve symbol button的提示

解决:在该activity.java的头部中添加以下代码

import android.widget.*

image-20201013133539837

5.can't resolve symbol Intent

解决:把鼠标放在标红的Intent上,按ALT+Enter即自动导入

import android.content.Intent;

也可手动写入上述代码

Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);

6.理解在XML文件中的xmlns

xmlns: xml namespace,xml命名空间。

命名空间的作用是解决命名冲突,不同程序设计师写的代码在整合时可能会遇到命名相同的情况,这样就需要指定名字的空间域,存放在名字空间域的全局实体只在本空间域内有效。

该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。

7.the ADB binary found at ... is obsolete and has seroiusperformance problems with the Android Emulato

image-20201014105017960

打开SDK managerimage-20201014105536296

选择SDK tools,点击右下角show package details.

image-20201014105556170

  • 网上的情况和解决方法

image-20201014105740659

  • 我的这里它没有update available.显示已经安装了30.0.2和28.0.2(我忘了哪个版本了)

我不勾选低版本28.0.2,只勾选30.0.2,点击应用,它会开始卸载28.0.2,不要害怕,卸载完了点击finish ,点击ok就可以了。

再次run,就不会显示该问题了。

8.Emulator: ##KBD: Full queue, dropping event, current drop count

点击run后手机模拟器只显示之前的一个android项目,而且点击任何按钮都无响应,在android studio的Event log中显示Emulator: ##KBD: Full queue, dropping event, current drop count信息。

解决方法:

关掉该模拟器,然后点击AVD manager image-20201014131418887

会进入下图界面,选择Wipe Data,擦除数据。

image-20201014131434666

再次运行项目即可。

参考文档

9.怎么查看自己的android studio版本?

解答:打开android studio-Help-About即可

image-20201015133355270

我的android studio版本是3.4.1

10.android studio3.4.1版本添加百分比布局依赖

解决:打开app/bulid.gradle

在dependencies中添加

implementation 'androidx.percentlayout:percentlayout:1.0.0'

百分比布局正确写法

  1. 首先打开app/build.gradle文件,在dependencies中添加百分比布局依赖包implementation 'androidx.percentlayout:percentlayout:1.0.0'

(注:我的android studio版本是3.4.1)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
    //添加该行
    implementation 'androidx.percentlayout:percentlayout:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.3.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

  1. 打开activity_main.xml文件,复制粘贴下面的代码
<?xml version="1.0" encoding="utf-8"?>


    
  1. 展示效果
image-20201015142659717

11.使用adb工具无法切换成超级管理员

打开DOS窗口,输入adb shell,命令行显示$,表示当前为普遍管理员;命令行显示# ,表示当前为超级管理员。

我这里显示的是$

输入su命令,显示su:not found,切换管理员身份失败

image-20201028154413529

原因:

我所使用的Android模拟器版本是处于7.0版本以上的(包括7.0),没有root权限,必须下载一个Android模拟器版本处于7.0版本以下的,并运行它

解决:

打开AVD manager 下载android版本低于7.0的安卓模拟器。运行该安卓模拟器,在DOS窗口中输入adb shell回车,显示#,切换成超级管理员成功??

image-20201028154808288

12.怎么找到SDK路径?怎么找到SDK/platform-tools路径

解决:

在导航栏中

image-20201028161831597

找到image-20201028161902679

打开这个图标,即可以看到SDK的路径

image-20201028161944545

把SDK路径复制到文件夹中,进入SDK路径,就可以看到platform-tools了

image-20201028162256002

13.Android Studio代码区字体太小,调整代码区字体大小

解决:

File - settings-Editor-font-Size 调整size即可。

image-20201028230823214

14.怎么删除在android模拟器上安装好的应用程序?

解决:

打开Android模拟器-设置(Settings)-Devices-Apps-找到你想删除的应用-点击该应用程序-选择uninstall

image-20201029133115893

15.使用adb 检查表是否添加数据成功 能正常进入数据库,查到表名,但是输入select * from Book;无返回结果

image-20201028234936417

解决:

这是因为我自己在建Book表时把其中一个列名写错了,而我在添加数据时列名写的是正确的,导致不能往内正常添加数据

,显示不出来,我后来把建表时的列名和添加数据时的列名全部核对更改统一了,就好了。

image-20201029134225236

16.配置LitePal

解决:

进入该链接,里面有非常非常详细的指导。随着时间的推移,它可能会版本更新,所以一定要去这个官网去配置LitePal.

2020/10/29

  1. 添加依赖。

在app/build.gradle dependencies中添加LitePal依赖

dependencies {
    implementation 'org.litepal.guolindev:core:3.2.2'
}
  1. 配置litepal.xml.

app/src/main-new-directory-assets-new-file-输入litepal.xml,创建litepal.xml文件,编辑litepal.xml内容

<?xml version="1.0" encoding="utf-8"?>

    
    

    
    

    
    
    
    
    
    

  1. 配置LitePalApplicaiton

修改AndroidManifest.xml代码

<?xml version="1.0" encoding="utf-8"?>


    
        android:name="org.litepal.LitePalApplication"
    
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        
            
                

                
            
        
    


17.在使用LitePal创建数据库时运行程序点击按钮直接显示LitePalTest has stopped. 报E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.litepaltest, PID: 18609 org.litepal.exceptions.ParseConfigurationFileException: can not parse the litepal.xml, check if it's in correct format错误。

image-20201029164945648 image-20201029165016446

原因:

image-20201029165802354

说明我这个litepal.xml里面有格式不对

解决:

我在litepal.xml找了半天我也不知道我哪里是写错了,索性把链接2.Configure litepal.xml重新粘贴了过来,然后就好了。。。。。

我的litepal.xml源码

<?xml version="1.0" encoding="utf-8"?>

    
    

    
    

    
    
        
    

    


18.怎么使用adb进入数据库看表?

解决:

打开dos窗口,输入adb shell ,如果返回# ,则说明进入超级管理员模式,如果返回$,则说明进入普遍管理员模式,我们要进入超级管理员模式,如出现不能进入超级管理员模式,则应下载android版本低于7.0的模拟器重新运行一下。

输入 cd /data/data/com.example.databasetest/databases/

输入ls

输入sqlite3 BookStore.db 进入BookStore.db 数据库

输入.table 查看有哪些表

输入.schema查看怎么创建的表

19.打开模拟器,在Android studio底端显示【waiting for target deviceto come online】一直在转圈,而且点击模拟器中应用程序的界面没反应

解决:

参考博文

这个问题是由模拟器引起的,首先打开AVD managerimage-20201030152959682

第一步:先关掉你自己的模拟器
第二步:打开AVD manager,找到你自己的模拟器,里面有一个选项Cold Boot Now
点击一下,模拟器打开并提示一行信息,直接dismiss掉就行了
第三步:重新运行app就可以了

20.在模拟器中给10086打电话能打通吗?

解答:不能,hhhhhhhh

但是界面太逼真了

image-20201030153227215

我也拿了我自己号码试,接不到啦,hhhhhh

21.对URI和URL的理解

参考博客

一、URI

<1>什么是URI

URI,通一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。

<2>URI的结构组成

URI通常由三部分组成:

①资源的命名机制;

②存放资源的主机名;

③资源自身的名称。

(注意:这只是一般URI资源的命名方式,只要是可以唯一标识资源的都被称为URI,上面三条合在一起是URI的充分不必要条件)

<3>URI举例

我们可以这样解释它:

①这是一个可以通过https协议访问的资源,

②位于主机 blog.csdn.net上,

③通过“/qq_32595453/article/details/79516787”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)

注意:以上三点只不过是对实例的解释,以上三点并不是URI的必要条件,URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。

二、URL

URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。

通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。

采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL是URI概念的一种实现方式。

URL的一般格式为(带方括号[]的为可选项):

protocol : // hostname[:port] / path / [;parameters][?query]#fragment

URL的格式由三部分组成:

①第一部分是协议(或称为服务方式)。

②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

③第三部分是主机资源的具体地址,如目录和文件名等。

第一部分和第二部分用“: //”符号隔开,

第二部分和第三部分用“/”符号隔开。

第一部分和第二部分是不可缺少的,第三部分有时可以省略。

三、URI和URL之间的区别

从上面的例子来看,你可能觉得URI和URL可能是相同的概念,其实并不是,URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。

21.使用git把远程版本库克隆到本地报“fatal: unable to access https://github.com/lululuxiaofei/coolweather.git/: Failed to connect to github.com port 443: Timed out”

解决:

连接公司外网。

我觉得这篇博文说的有道理。因为我直接连接了公司外网,所以一下就好了,就没有看这篇文章了,但是我觉得原因应该是如该博客所说的。

我后来连接公司的外网也不太行,后来我重启了git bash再输就好了

22.再次创建和LitePal相关的项目时,在AndroidManifest.xml配置LitePalApplication写入 android:name="org.litepal.LitePalApplication"时会标红

解决:在Android Studio 会在顶部弹窗点击Sync Now 就可以了。

23.运行酷欧天气,显示正在加载,然后加载失败,无法显示全国各省名称

我在完成P508-P509页14.4节所有内容点击运行程序时,发现

尝试解决方法1:

参考

在AndroidManifest.xml加android:usesCleartextTraffic=“true”,没用

尝试解决方法2:

把app/build.gradle的compileSdkVersion 和targetSdkVersion由30改成26 没用

尝试方法2一直android studio界面一直显示2 processings running,然后我就强制终止了程序的运行,并且把compileSdkVersion 和targetSdkVersion都改成了30,然后重新运行程序,就好了。。。。。。

莫名其妙。。。。。。

但是我觉得这篇博客可能会有用

24.酷欧天气正常显示省份后,点击某一省份,APP闪退,报CoolWeather keeps stopping

点击Logcat,找到错误的原因

是我在queryCities()方法中把

cityList = LitePal.where("provinceid = ?", String.valueOf(selectedProvince.getId())).find(City.class);

写错了

写成了

cityList = LitePal.where("province = ?", String.valueOf(selectedProvince.getId())).find(City.class);

后来改正过来就好了。。。。。

25.android.database.sqlite.SQLiteException: no such table: county (code 1): , while compiling: SELECT * FROM county WHERE cityid = ?

原因: 没有这个表

1.没有在litepal.xml中添加该表, 或添加的bean类没有继承datasport

2.没有在litepal.xml中更改版本号.

26.运行酷欧天气,获取天气信息失败,报com.example.coolweather W/System.err: java.net.SocketTimeoutException: connect timed out ??

image-20201105111129800

天气信息加载不出来

image-20201105111207797
//错误日志
2020-11-05 11:01:48.766 24814-24844/com.example.coolweather W/System.err:     at java.net.PlainSocketImpl.socketConnect(Native Method)
2020-11-05 11:01:48.767 24814-24844/com.example.coolweather W/System.err:     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
2020-11-05 11:01:48.767 24814-24844/com.example.coolweather W/System.err:     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
2020-11-05 11:01:48.767 24814-24844/com.example.coolweather W/System.err:     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
2020-11-05 11:01:48.767 24814-24844/com.example.coolweather W/System.err:     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
.......

尝试解决方法1:

参考博客1

设置timeout时间

HttpUrlConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(8000);

我不知道在哪里设置时间???

尝试解决方法2:

参考博客2

原HttpUtil

public class HttpUtil {
    public static void sendOkHttpRequest(String address, okhttp3.Callback callback)
    {
        OkHttpClient client = new OkHttpClient();
        //传入请求地址
        Request request = new Request.Builder().url(address).build();

        //注册一个回调来处理服务器响应
        client.newCall(request).enqueue(callback);
    }
}

现在

public class HttpUtil {
    public static void sendOkHttpRequest(String address, okhttp3.Callback callback)
    {
        //OkHttpClient client = new OkHttpClient();
        //传入请求地址
        Request request = new Request.Builder().url(address).build();

        OkHttpClient client = new OkHttpClient().newBuilder().connectTimeout(60000, TimeUnit.MILLISECONDS)
                .readTimeout(500, TimeUnit.MILLISECONDS)
                .build();

        //注册一个回调来处理服务器响应
        client.newCall(request).enqueue(callback);
    }
}

结果:仍报相同错误

没有解决!!!!!!!!!!!!!!

还得继续弄

我好像也没改啥,中间有些名字写错了,然后给改了改,然后就好了?????

27.JSON和Gson

  • JSON

JSON是javascript对象的一种形态,是一种轻量级的数据交换格式。一般用来在java ee后台服务和Android或者IOS,H5之间进行通信的一种数据传递的格式。

JSON基本格式:

{"name":"zhangsan","age":23,"list":[{"score":2},{"score":3},{"score":4}]}

  • Gson

是谷歌推出的一个用于生成和解析Json数据格式的工具。

在使用gson之前需要先导入依赖。

参考

28.怎么找到最新的依赖包dependencies

  1. File-project structure-Dependencies-app-+(Add dependencies)-Library dependency,如下图
image-20201106152608802
  1. 示例搜索drawerlayout依赖包

    step1:输入androidx.drawerlayout* 然后search

image-20201106152910553

step2

点击??按钮

就可以了

29.怎么修改app的图标和名称

修改app名称

打开res/values/strings.xml



    app名称

把【app名称】改成你想要的名字就可以了



    微信

它是通过AndroidManifest.xml中的label链接到该app名称的


....

修改app图标

由于手机主题的原因,有的时候这个手机的图标全是圆形的,有的时候这个手机的图标全是方形的,不同手机的分辨率也是不同的,所以我们需要考虑不同情况。

  • 打开AndroidManifest.xml,有android:icon和android:roundIcon。

    android:icon=@mipmap/ic_launcher

    @mipmap文件夹下放着方形的ic_launcher图片,这里图片名一定不能带后缀

    不能写成android:icon=@mipmap/ic_launcher.png

    android:roundIcon=@mipmap/ic_launcher_round链接圆形的icon图片

<?xml version="1.0" encoding="utf-8"?>


    

    
       ....
    


image-20201106155019112

  • 在project目录下我们会看到很多的mipmap子目录,我们把不同大小的图标文件放到对应的mipmap目录下。

mipmap仅仅是用来放启动器图标,其他绘制图片还是要放到drawbale中去的

android会根据手机的屏幕分辨率自动选择对应的mipmap目录下的图标文件,这样可以避免图标失真。所以我们最好在每个mipmap目录下都放置适合的位图。

在App中,无论你将图片放在drawable还是mipmap目录,系统只会加载对应density中的图片,例如xxhdpi的设备,只会加载drawable-xxhdpi或者mipmap-xxhdpi中的资源。
而在Launcher中,如果使用mipmap,那么Launcher会自动加载更加合适的密度的资源。

或者说,mipmap会自动选择更加合适的图片仅在launcher中有效。

img

关于drawable和mipmap的好文

30.P317使用HTTP协议访问网络时报“java.net.SocketTimeoutException: connect timed out”错误

解决:连接VPN,切换网络

31.我在运行展示网页的app时网页界面显示报错net::ERR_NAME_NOT_RESOLVED

image-20201113092254402

日志image-20201113092544537

问题描述:我在做P313的项目时,以前可以显示百度页面的,今天早上过来运行程序,就显示了这个界面

解决:看日志,显示disconnect managed GoogleApiClient.肯定是连不上谷歌。模拟器浏览器是谷歌浏览器,所以连接VPN,切换网络。??

32. No version of NDK matched the requested version 20.0.5594570

问题描述:我在打开E-ConceptV2运行时它提示我intall NDK。我安装完NDK,它又提示说 No version of NDK matched the requested version 20.0.5594570

解决:打开SDK Manager-SDK tools,选中右下角的show details

image-20201118091403286

选择NDK 20.0.5594570版本安装即可。

33.make project、clean project、rebuild project、build APK、generate signed apk

  • make project

编译project下所有Module,一般是自上次编译后project下有更新的文件,不生成apk

  • Make Selected Modules

编译指定的Module,一般是自上次编译后Module下有更新的文件,不生成apk。

  • Clean project

删除之前编译后的编译文件,并重新编译整个Project,比较花费时间,不生成apk。

  • rebuild project

先执行Clean操作,删除之前编译的编译文件和可执行文件,然后重新编译新的编译文件,不生成apk,这里效果其实跟Clean Project是一致的

  • build APK

前面4个选项都是编译,没有生成apk文件,如果想生成apk,需要点击build apk.

  • Generate Signed APK

生成有签名的apk。

34.Android Studio Build乱码

参考

1.双击shift,输入Edit Custom VM Options,点击第一个

2.在打开的文件中输入-Dfile.encoding=UTF-8

3.重启Android Studio