IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【杂记】全栈开发中碰到的一些问题及解决方法 -> 正文阅读

[移动开发]【杂记】全栈开发中碰到的一些问题及解决方法

1.?环境问题

1.1.?AndroidStudio

1.1.1.?加入jar、aar的方法:

a)在app下创建目录libs

b)在app\build.grale中增加implementation fileTree(dir: 'libs', include : ['*.jar','*.aar'])

c)将jar、aar文件拷贝到下面;

d)如果AndroidStudio不能识别,则点击菜单File->Invalidate caches/Restart,然后等等重启即可;

1.1.2.?模拟器路径权限

如果手动在AndroidStudio的Device File Explore中创建路径、文件,会导致在app中无权限访问,必须在App中自己创建。

1.1.3.?gradle安装

a.?解压到指定路径;

b.?配置GRADLE_HOME指向该路径;

c.?在路径下创建user目录,配置GRADLE_USER_HOME为%GRADLE_HOME%\user,用于存放临时文件;

d.?将%GRADLE_HOME%\bin加入PATH变量

e.?AndroidStudio的File->Settings中搜索Gradle,设置Gradle路径及GradleUser路径;

f.?如果升级gradle,建议下载后,仍然解压到相同路径,这样所有应用的设置不用变动。

1.1.4.?gradle问题:

工程目录下build.gradle中指定的是AndroidStudio的gradle的版本,可能是适配器,尽量不要改,或者改成AndroidStudio的版本;

gradle\wrapper\gradle-wrapper.properties指定gradle版本,路径可以写成本地下载的zip文件,比如file\:///本地路径,所以这个目录下gradle的zip文件不可以删除。这样可以避免不同的工程都下载一遍。

1.1.5.?kotlin、gradle插件被禁用

这两个插件是不可以禁用的,如果禁用,AndroidStudio启动会异常。

这时可以在disabled_plugins.txt中删除相应记录即可,位置如下:

C:\Users\用户名\AppData\Roaming\Google\AndroidStudio4.1\disabled_plugins.txt

1.1.6.?打开logcat查看日志

菜单View-Tool Windows中,打开logcat查看日志。

还有其他一些功能也在此目录下;

1.1.7.?删除多余import

菜单?Code-Optimize Imports可以自动删除所有多余的import;

1.1.8.?修改checkstyle规则

在Settings-Inspections中搜索提示的关键词,找到规则,然后勾选或勾除

1.1.9.?修改工程名称

比如将样例工程修改成最终的工程名称,按以下步骤即可完成:

1.关闭Android Studio;

2.修改项目文件夹的名字;

3.修改OldProjectName.iml文件(在项目的根目录的.idea目录下)的名称为新项名称,即OldProjectName.iml修改为NewProjectName.iml;

4.修改.idea/workspace.xml中相应的名称;

5.修改app/build.gradle中的applicationId;

6.然后把该文件中的external.linked.project.id的值也设置为新项目的名称,即 external.linked.project.id=”NewProjectName”;

7.再次打开AndroidStudio即可。

1.2.?模拟器

1.2.1.?模拟器IP及外部访问

在模拟器内部,宿主机器IP为10.0.0.2,模拟器自身IP为10.0.2.15/127.0.0.1/localhost

如果需要在宿主机中直接访问模拟器内部的TCP端口,需要先做映射。

adb forward tcp:8081?tcp:8080

这样就可以访问?http://localhost:8081/xxxxx,请求会被转到虚拟机的8080端口

1.2.2.?进入模拟器命令行

adb -s emulator-5554 shell

1.3.?网络

1.3.1.?手机与PC之间网络不通

一般是路由器设置有问题,可能在路由器无线设置中开启了AP隔离,使得同一路由器下各个节点之间不可互通。

1.3.2.?PC不能ping手机

网络防火墙默认是不会禁用出站请求的,但是如果安装了360,在360的安全防护中心->入口防护体系中,如果选择了局域网防护,则PC无法联通手机。

1.3.3.?同局域网下手机访问PC

首先,PC上需启动web服务;

其次,要在系统防火墙高级设置中,添加入站规则开放相应的端口,比如TCP的8080端口;

最后,如果安装了360,需要在安全防护中心->系统防护体系中,关闭网络安全防火。

1.4.?小米手机

1.4.1.?小米手机,无法打开usb安装

插入一张Sim卡,没用的Sim卡也可以,然后再在设置中设置USB调试

1.4.2.?真机进入开发者模式

不同型号得手机,包括华为、小米等,都是在设置的安卓版本上多次点击,即可进入开发者模式。进入开发者模式后,才可以打开USB调试。

1.5.?华为或荣耀手机

1.5.1.?打开debug级别日志

华为手机默认日志级别是info,无论AndroidStudio中设置的是什么,如果要打开debug级别,按以下步骤设置。

1.拨号界面拨号*#*#2846579#*#*可以看到工程菜单;

2.选择后台设置进入;

3.打开?LOG设置,选择?AP日志;

4.回到AndroidStudio中,改变以下日志界别,就可以看到debug了。

1.6.?iOS

1.6.1.?IPhone webserver备忘

基于SwiftNio开发webserver,SwiftNio是iOS中的netty。

https://www.5axxw.com/wiki/content/zdz096https://www.5axxw.com/wiki/content/zdz096

其他的如GCDWebServer、CocoaHttpServer都已长期无更新

1.7.?Eclipse

1.7.1.?更换报名

在包上点右键,选择Refactor,出现更名窗口,输入新的名称,一定要选择Rename subpackages,否则只会新建一个空的包

2.?开发问题

2.1.?权限

2.1.1.?应用权限设置

在AndroidMenifest.xml中设置,与application同一级别

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

同时,在application中设置android:requestLegacyExternalStorage="true"

2.2.?底层

2.2.1.?动态加载dex插件

a.?使用PathClassLoader类加载器实现动态加载dex插件;

b.?加载前需要调用dex命令将jar文件转为dex文件,dex文件可以从外部下载获得;

c.?因为ClassLoader加载的规则,不同插件不能互访,但是,插件可以访问apk中的类;

2.2.2.?实现禁止手动删除数据

实现一个删除数据的Activity,并在AndroidMenifest.xml-application-android:manageSpaceActivity引用此Acitivity,实现自定义的删除数据管理界面,在此只删除可以删除的,或者全部不删除,比如禁止删除sqlite数据库等。

Activity的定义与普通Activity毫无差异。

2.2.3.?定义安全策略

在AndroidMenifest.xml-application-android:networkSecurityConfig中可以自定义安全策略,比如预置自签名的根证书等。

2.2.4.?依赖了kotlin编写的库

比如okhttp4.x,提示Failed resolution of: Lkotlin/jvm/internal/Intrinsics,

Kotlin并无特别的优点,建议别用了。限制OkHttp4依赖Kotlin,也用不成了。

2.3.?安全

2.3.1.?可信根加解密

使用KeyStore进行加解密,KeyStore的底层用的是Tee。

它的问题是,在黑屏情况下,无法使用。

EncryptedSharedPreferences 使用的也是KeyStore。

https://source.android.google.cn/security/keystore?hl=zh-cn

2.3.2.?添加自签名根证书

使用CA机构签发证书,通常成本较高,对于一个测试应用,没必要。所以自己产生一个自签名的根证书;然后用根证书产生二级证书;最后用二级证书生成自己的用户证书。这样就形成了一个证书链。在程序中预置根证书,并信任自己的根证书即可。

怎样生成证书链,请参考此链接:

KeyTool生成证书链及使用_flyinmind的博客-CSDN博客

2.4.?JUnit测试

2.4.1.?Android中无法写文件

使用ApplicationProvider.getApplicationContext获得Context,在这个Context中取得的路径是可以读写,写入的内容会存在正式的应用中,而不是在测试的应用中

2.4.2.?测试准备与清理

在测试函数前加@Before与@After注解,可以控制放在最前面与最后面执行,利用它们做准备与清理工作

2.5.?Logback日志

2.5.1.?配置中的属性

logback读配置文件时,其中用到的属性,用${propertyName}引用。属性需要在初始化的Context中设置,比如指定根路径。此Context不能reset,否则property会丢失。

LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
lc.putProperty("loggerHome", outputDir);
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
//lc.reset(); //reset会清除property
configurator.doConfigure(cfgFile);
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);

2.5.2.?DATA_DIR等内置属性未定义

在一些例子中,出现诸如DATA_DIR、PACKAGE_NAME等属性,其实它们不能用,通过看代码,猜测可能是因为logback获取应用Context的方法有误。所以需要在程序里加载配置前,设置自定义属性,然后在logback.xml中引用。

2.6.?Hybrid

2.6.1.?框架

使用vue+vue-router+quasar开发,在浏览器中输出界面,调用底层的接口。

注意:vue要使用vue.global.prod.js版本,不能使用vue.runtime.global.prod.js

可以在https://cdn.jsdelivr.net/npm/vue@next/dist/下载,quasar从https://quasar.dev/start/umd下载,包括quasar.umd.prod.js与quasar.prod.css,这个连接中css可以与quasar.prod.css合并,其中用到的字体也需要逐个下载,放到本地,链接为https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons

2.6.2.?禁止选中文字

在游戏的场景中,经常需要拖动,容易造成文字被选中,可以通过在css中增加user-select: none;禁止选中文字

3.?常识

3.0.1.?统一信用码编码规则及校验

规则:【微科普】教你看懂统一社会信用代码_机构

Java实现:校验社会统一信用代码JAVA_王魂凤气的博客-CSDN博客_java统一社会信用代码正则表达式

3.0.2.?行政区划编号

https://www.mca.gov.cn/article/sj/xzqh/1980/202105/20210500033655.shtml

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:08:24  更:2022-09-24 21:09:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:45:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码