| |
|
开发:
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.?AndroidStudio1.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.?iOS1.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.?Eclipse1.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(); 2.5.2.?DATA_DIR等内置属性未定义在一些例子中,出现诸如DATA_DIR、PACKAGE_NAME等属性,其实它们不能用,通过看代码,猜测可能是因为logback获取应用Context的方法有误。所以需要在程序里加载配置前,设置自定义属性,然后在logback.xml中引用。 2.6.?Hybrid2.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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/25 7:42:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |