android studio 真机调试(vivo为例)

 android  android studio 真机调试(vivo为例)已关闭评论
7月 252021
 

开启开发者人员选项和USB调试步骤:

  1. 设置–》更多设置–》关于手机–》连续点击版本号即可打开开发者模式–》
  2. 返回设置–》系统和更新–》开发人员选项 –》打开开发人员选项 -》打开USB调试

然后在打开android studio, 数据线连接手机和电脑,android studio将自动检测手机,点三角按钮run。

 

可能问题(以vivo为例,因为比较特殊):

  1. 安装过程vivo要输入账号密码, 并允许开启未知来源安装。
  2. 安装过程一直提示 “安装失败”, 解决方法: 在工程的gradle.properties中加上 android.injected.testOnly=false

 

DONE!!

Connect to maven.google.com:443 [maven.google.com/172.217.27.142] failed: connect timed out 解决 [Solved]

 android  Connect to maven.google.com:443 [maven.google.com/172.217.27.142] failed: connect timed out 解决 [Solved]已关闭评论
6月 252021
 

android studio编译项目时一直卡在下面的提示:

“Connect to maven.google.com:443 [maven.google.com/172.217.27.142] failed: connect timed out ”, 可以使用下面的方式解决(Solved),

直接修改build.gradle文件中Google的maven地址(添加黑体字的行):

repositories {
    maven{ url 'https://maven.aliyun.com/repository/google'}
    maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
    maven{ url 'https://maven.aliyun.com/repository/public'}
    maven{ url 'https://maven.aliyun.com/repository/jcenter'}
    maven {url 'https://dl.google.com/dl/android/maven2/'}
    jcenter() ...... 
} DONE!

 

Android Button设置Background背景图片无效的处理方法

 android  Android Button设置Background背景图片无效的处理方法已关闭评论
4月 262021
 

测试在 activity_main.xml给button加背景图片

<Button
    android:id="@+id/titleEdit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:background="@drawable/edit_bg"
    android:text="Edit"
    android:textColor="#fff" />

发现模拟器里不起作用,奇怪了, 后来查了网上资料,发现需要修改下面的文件才可以。
在res/values/themes.xml 中:
将 
<style name="Theme.UICustomViews" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
修改为:
<style name="Theme.UICustomViews" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">

一次java war包在tomcat启动后服务乱码问题解决

 java, tomcat  一次java war包在tomcat启动后服务乱码问题解决已关闭评论
3月 312021
 

一个运行于tomcat下的war包,忽然服务出现了乱码,问题排查如下:

  • 检查点一:
  • 1. 检查tomcat 的config目录下server.xml 文件:

<Connector ……
redirectPort=”443″ URIEncoding=”UTF-8″ />, 发现问题不在这里

 

  • 检查点二:
  • 2.1. 命令行下执行: ps -ef | grep java  获取java运行所在的pid为6724

[[email protected]]# ps -ef | grep java
root 6724 1 3 14:30 pts/0 00:01:04 /usr/local/jdk/bin/java –

  • 2.2. 查看问题机器的jvm的编码格式

[[email protected]]# jinfo 6724 |grep enc
sun.jnu.encoding = ANSI_X3.4-1968
file.encoding.pkg = sun.io
sun.io.unicode.encoding = UnicodeLittle
file.encoding = ANSI_X3.4-1968

果然问题出在这里。 可以在tomcat的bin目录下的catalina.sh,添加给 JAVA_OPTS 的多添加两个参数

-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8

重启tomcat,DONE!

 

 

 

macOS 10.15 系统任何来源已打开,软件显示损坏解决方案(转)

 mac  macOS 10.15 系统任何来源已打开,软件显示损坏解决方案(转)已关闭评论
3月 262021
 

更新 macOS 10.15 Catalina 系统后,许多在 10.14 上可以使用的 App 都会提示【 xxx 已损坏,无法打开,你应该将它移到废纸篓解决办法 】,哪怕你在【安全与隐私 > 通用】中已经开启了【任何来源】,但还是会出现这样提示,接下来小编为大家带来详细的修复的方法,感兴趣的朋友快跟着小编一起来看看吧!

准备工作:检查是否已开启【任何来源】,已开启的请忽略准备工作

先打开系统偏好设置,检查 【安全与隐私】 -> 【通用选项卡】下是否已经启用了任何来源选项:

如果没有打开【任何来源】选项,请参考教程:https://www.kkmac.com/help-mac-888.html

重要提示:首先你要先打开【任何来源】选项,再进行接下来的操作!

现在教程正式开始:

1、打开 「Launchpad」 – 「实用工具」 – 「终端」;

2.将下面这段代码复制,在终端窗口粘贴。

sudo xattr -d com.apple.quarantine 

注意 代码的 quarantine 后面有个空格,要一起复制进终端

打开 Finder(访达),点击左侧的应用程序,将应用拖进终端中按下回车

然后按键盘的回车键(return),输入密码,再按回车键,完成。

回车后会看见个 password 后面还有个钥匙图标,在钥匙图标后面输入你自己电脑解锁密码

输入的时候不显示你输入的密码,感觉就是输入不了东西一样,也不用管,凭感觉输入完正确解锁密码后按回车键。

好了再看一下是不是可以打开 APP 了!

最后补充

如果以上方法都不能解决,就只能关闭 SIP 系统完整性保护了!!!

详细请参考:https://www.kkmac.com/macos-gb-sip.html

 

转自: https://www.kkmac.com/mac-81112.html

macOS安装过程中“应用副本已损坏,不能用来安装macOS….”的解决方案

 mac, macpro  macOS安装过程中“应用副本已损坏,不能用来安装macOS….”的解决方案已关闭评论
2月 262021
 

今天在给一个旧mac安装os时,使用u 盘启动安装时提示下面错误“应用副本已损坏,不能用来安装macOS….“ , 后来网上查到: 大部分原因是由于系统版本证书过期所致。我们可以这样操作,解决上述问题。

先点击“好”关闭窗口,我们先关闭网络,关闭网络,关闭网络(断开wifi,拔网线等),在准备安装界面中点击工具栏“实用工具”—“终端”,进入终端

进入终端后,我们输入以下命令行“date 062614102014.30”,注意,date后面是空格,输完之后按回车确定。(其他版本日期参照教程结尾)

命令行输完之后,关闭窗口,退出终端。

退出之后,我们点击“安装macOS”,看一下能否进下一步。

我们顺利得进入了安装界面。

其他事项

一、在桌面环境升级系统时,同样先关闭网络,打开“终端”,输入日期前加入”sudo”,例如“sudo date 062614102014.30”(不包括引号),按回车,关闭终端之后再执行升级操作。

二、如果上面的命令行不起作用。我们可以更改成其他日期再试一遍

date 0201010116(OS X El Capitan 10.11.6适用)

date 010514102017.30(macOS Sierra 10.12适用)

date 062614102014.30 (10.13、10.14适用)

date 121212122019 (10.15)

date 032208102015.20

date 112202022015

date 122014102015.30(10.10可用)

mac磁盘工具格式化时u盘时卡死问题解决方式

 mac, macpro  mac磁盘工具格式化时u盘时卡死问题解决方式已关闭评论
2月 262021
 

mac使用磁盘工具格式化u盘时出现卡死现象,apple官网建议使用以下各个方式尝试:

  1. 您的 Mac 已经更新至最新版本(重要:建议更新前备份您的 Mac。)(个人觉得这条是比较坑的,建议先使用后面的方式最后再尝试这条
  2. 前往“访达”>“应用程序”>“实用工具”>“磁盘工具”,尝试推出“外置”U 盘,并重新插拔您的 U 盘。(如果 Mac 有多个 USB 接口,尝试更换另一个接口。)
  3. 若仍然无法识别,建议重启您的 Mac,然后在“磁盘工具”中选择该外置存储设备,确保已经成功“装载”。
  4. 尝试重置非易失的随机访问存储器(NVRAM)
  5. 尝试重置 Mac 上的系统管理器(SMC)
  6. 尝试创建新的管理员帐户,使用新建的管理员帐户登录以便查看问题是否仍然存在。
  7. 建议将您的 U 盘连接其他 Mac,以确定问题是否局限于您的 Mac。
  8. 尝试将其他外置 USB 储存设备连接您的电脑,以查看问题是否局限于您的 U 盘。

安装pyOpenSSL == 0.13.x时提示“OpenSSL/crypto/crl.c:6:23: error: static declaration of ‘X509_REVOKED_dup’ follows non-static declaration static X509_REVOKED * X509_REVOKED_dup(X509_REVOKED *orig)”解决方式

 pip  安装pyOpenSSL == 0.13.x时提示“OpenSSL/crypto/crl.c:6:23: error: static declaration of ‘X509_REVOKED_dup’ follows non-static declaration static X509_REVOKED * X509_REVOKED_dup(X509_REVOKED *orig)”解决方式已关闭评论
12月 242020
 

今天需要安装老的0.13版本的pyOpenSSL时出现下面错误“

OpenSSL/crypto/crl.c:6:23: error: static declaration of ‘X509_REVOKED_dup’ follows non-static declaration
static X509_REVOKED * X509_REVOKED_dup(X509_REVOKED *orig)”

 

结合网上资料可以使用下面的步骤即可完成安装:

1.#新建一个目录build

[[email protected]] mkdir build

[[email protected]] cd build

 

2. #然后下载pyOpenSSL==0.13的源码,解压后
[[email protected]] pip download pyOpenSSL==0.13
[[email protected]] tar xzf pyOpenSSL-0.13.tar.gz

 

3.#修改OpenSSL/crypto/crl.c文件
[[email protected]] cd pyOpenSSL-0.13

[[email protected]] vi OpenSSL/crypto/crl.c

找到这一行
static  X509_REVOKED * X509_REVOKED_dup(X509_REVOKED *orig) {

删除static,修改为:

X509_REVOKED * X509_REVOKED_dup(X509_REVOKED *orig) {

 

4.#然后再安装

[[email protected]] pip install –no-clean .

 

DONE!!!

centos 7 安装 mysql 5.7 及问题总结

 mysql  centos 7 安装 mysql 5.7 及问题总结已关闭评论
12月 242020
 

centos 7中默认没有mysql 的rpm安装包,需要自己添加

在 https://dev.mysql.com/downloads/repo/yum/ 找到 yum 源 rpm 最新的安装包。

我们只下载mysql 5.7的

# 下载
shell> wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装 mysql 源
shell> yum localinstall mysql57-community-release-el7-11.noarch.rpm  # 或者 使用 rpm -ivh mysql57-community-release-el7-11.noarch.rpm

#安装mysql

shell> yum install -y mysql-community-server

#启动mysql

shell> systemctl start mysqld

#查看状态

shell> systemctl status mysqld

#设置开机启动
shell> systemctl enable mysqld
# 重载所有修改过的配置文件
shell> systemctl daemon-reload

#修改root本地账户密码
#mysql安装完成之后,生成的默认密码在 /var/log/mysqld.log 文件中。使用 grep 命令找到日志中的密码。
#shell> grep ‘temporary password’ /var/log/mysqld.log
#首次通过初始密码登录后,使用以下命令修改密码, 或使用 mysql_secure_installation命令也可以按提示修改
shell> mysql -uroot -p
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘NewPassword’;

##问题汇总:
1. mysql 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 错误
#解决方法,将密码强度改为LOW
#0 or LOW #1 or MEDIUM #2 or STRONG
#在mysql终端下运行:
mysql> set global validate_password_policy=0;
#默认都要求密码8位以上,可以使用下列命令修改长度为4
mysql> set global validate_password_length=4;

2. telnet mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host
#解决方法
#在mysql终端下运行:(%表示所有ip,如果要求本机适用localhost或ip地址代替)
mysql> grant all privileges on *.* to ‘root’@’%’ identified by ‘123456’;
#使授权生效
mysql> flush privileges;

3. mysql 安装后默认不支持中文,需要修改编码。
#修改 /etc/my.cnf 配置文件,在相关节点(没有则自行添加)下添加编码配置,如下:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#重启mysql服务,查询编码。可以看到已经改过来了

shell> systemctl restart mysqld
shell> mysql -uroot -p
mysql> show variables like ‘character%’;

 

 

 

Oracle Cloud free 免费云科学上网防火墙/iptable设置

 免费云  Oracle Cloud free 免费云科学上网防火墙/iptable设置已关闭评论
12月 162020
 

使用Oracle Cloud free 免费云搭建了v2ray /  shadowsockR, 在 子网 -> 安全列表 -> 入网规则 里也打开了对应的端口,但远程连接 telnet  ip + 端口 还是连接不上。

原来oracle cloud与 aws等云不同,需要关闭防火墙或iptable。

 

解决方法:

centos操作如下:

#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#关闭iptables
service iptables stop
#去掉iptables开机启动
chkconfig iptables off
oracle Linux操作如下
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
ubuntu操作如下:
#Oracle自带的Ubuntu镜像默认设置了Iptable规则,关闭它
apt-get purge netfilter-persistent
reboot
#强制删除
rm -rf /etc/iptables && reboot

mac 下 使用matplotlib画图时出现“ValueError: max() arg is an empty sequence”的解决方法

 mac, Matplotlib  mac 下 使用matplotlib画图时出现“ValueError: max() arg is an empty sequence”的解决方法已关闭评论
12月 112020
 

mac机器在使用matplotlib画图时出现下面的错误提示: “ValueError: max() arg is an empty sequence”, 出现这个问题是由于不兼容造成的, 可以使用创建子图的方式规避这个问题,添加下面的黑体字语句即可:

import matplotlib.pyplot as plt

plt.subplot(1,1,1)  # 共1行1列,这是第一张图

 

DONE!!!

mac新系统下使用pip安装模块时提示”Could not install packages due to an EnvironmentError” 问题解决

 python  mac新系统下使用pip安装模块时提示”Could not install packages due to an EnvironmentError” 问题解决已关闭评论
12月 112020
 

mac使用pip安装 pytorch时提示:” Could not install packages due to an EnvironmentError”

其实现在mac新系统不再允许直接操作根目录下文件,所以pip安装模块时经常提示这个,可以在pip安装时添加  –user  参数

比如:

pip install –user torch torchvision torchaudio

 

加 –user 的作用是显式指定安装在用户自己的工作空间而非全局的里。

DONE!

xcode debug时一直显示的是汇编/内存地址界面的解决方法

 xcode  xcode debug时一直显示的是汇编/内存地址界面的解决方法已关闭评论
11月 132020
 

今天使用xcode单步调试代码时,发现一直进入的是汇编语言界面,显示的都是地址界面,无法定位到代码行,懵逼了,后来发现有个设置打开了,估计哪天误点了,具体位置在:

 

Debug -> Debug WorkFlow ->   Always Show Disassembly      (这项不要打勾 /  uncheck)

 

DONE!

Android 编译出现 “Cannot fit requested classes in a single dex file (# methods: xxx > 65536)” 问题解析

 android  Android 编译出现 “Cannot fit requested classes in a single dex file (# methods: xxx > 65536)” 问题解析已关闭评论
7月 082020
 

测试使用google play service的location功能时编译出现:“Cannot fit requested classes in a single dex file (# methods: 71234 > 65536)”,  在官网以下地址有关于这个问题详细的说明: https://developer.android.com/studio/build/multidex#mdex-gradle

国内因为某些原因可能打不开这个url, 复制内容如下:

为方法数超过 64K 的应用启用 MultiDex

当您的应用及其引用的库包含的方法数超过 65536 时,您会遇到一个构建错误,指明您的应用已达到 Android 构建架构规定的引用限制:

trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.

较低版本的构建系统会报告一个不同的错误,但指示的是同一问题:

Conversion to Dalvik format failed:
Unable to execute dex: method ID not in [0, 0xffff]: 65536

这两种错误情况会显示一个共同的数字:65536。此数字是单个 Dalvik Executable (DEX) 字节码文件内的代码可调用的引用总数。本页介绍如何通过启用称为 MultiDex 的应用配置(该配置使您的应用能够构建和读取多个 DEX 文件)越过这一限制。

关于 64K 引用限制

Android 应用 (APK) 文件包含 Dalvik Executable (DEX) 文件形式的可执行字节码文件,这些文件包含用来运行应用的已编译代码。Dalvik Executable 规范将可在单个 DEX 文件内引用的方法总数限制为 65536,其中包括 Android 框架方法、库方法以及您自己的代码中的方法。在计算机科学领域内,术语千(简称 K)表示 1024(即 2^10)。由于 65536 等于 64 X 1024,因此这一限制称为“64K 引用限制”。

Android 5.0 之前版本的 MultiDex 支持

Android 5.0(API 级别 21)之前的平台版本使用 Dalvik 运行时执行应用代码。默认情况下,Dalvik 将应用限制为每个 APK 只能使用一个 classes.dex 字节码文件。为了绕过这一限制,您可以在项目中添加 MultiDex 支持库:

dependencies {
    def multidex_version = "2.0.1"
    implementation 'androidx.multidex:multidex:$multidex_version'
}
   

如需查看此库的当前版本,请参阅版本页面中有关 MultiDex 的信息。

如果您不使用 AndroidX,请改为添加以下支持库依赖项:

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

此库会成为应用的主要 DEX 文件的一部分,然后管理对其他 DEX 文件及其所包含代码的访问。如需了解详情,请参阅下面有关如何针对 MultiDex 配置应用的部分。

Android 5.0 及更高版本的 MultiDex 支持

Android 5.0(API 级别 21)及更高版本使用名为 ART 的运行时,它本身支持从 APK 文件加载多个 DEX 文件。ART 在应用安装时执行预编译,扫描 classesN.dex 文件,并将它们编译成单个 .oat 文件,以供 Android 设备执行。因此,如果您的 minSdkVersion 为 21 或更高的值,则默认情况下会启用 MultiDex,并且您不需要 MultiDex 支持库。

如需详细了解 Android 5.0 运行时,请阅读 ART 和 Dalvik

注意:使用 Android Studio 运行应用时,会针对您部署到的目标设备优化 build。这包括在目标设备搭载 Android 5.0 及更高版本时启用 MultiDex。由于此优化仅在使用 Android Studio 部署应用时应用,因此您可能仍需要为 MultiDex 配置发布 build,以规避 64K 限制。

规避 64K 限制

在将您的应用配置为支持使用 64K 或更多方法引用之前,您应该采取措施以减少应用代码调用的引用总数,包括由您的应用代码或包含的库定义的方法。以下策略可帮助您避免达到 DEX 引用限制:

  • 检查应用的直接依赖项和传递依赖项 – 确保您在应用中使用任何庞大依赖库所带来的好处多于为应用添加大量代码所带来的弊端。一种常见的反面模式是,仅仅为了使用几个实用方法就在应用中加入非常庞大的库。减少应用代码依赖项往往能够帮助您规避 DEX 引用限制。
  • 通过 R8 移除未使用的代码 – 启用代码缩减以针对发布 build 运行 R8。启用缩减可确保您交付的 APK 不含有未使用的代码。

使用这些技巧使您不必在应用中启用 MultiDex,同时还会减小 APK 的总体大小。

针对 MultiDex 配置应用

如果您的 minSdkVersion 设为 21 或更高的值,则默认情况下会启用 MultiDex,并且您不需要 MultiDex 支持库。

不过,如果您的 minSdkVersion 设为 20 或更低的值,则必须使用 MultiDex 支持库并对应用项目进行以下修改:

  1. 修改模块级 build.gradle 文件以启用 MultiDex,并将 MultiDex 库添加为依赖项,如下所示:
    android {
        defaultConfig {
            ...
            minSdkVersion 15
            targetSdkVersion 28
            multiDexEnabled true
        }
        ...
    }
    
    dependencies {
      implementation 'com.android.support:multidex:1.0.3'
    }
    
  2. 根据您是否替换 Application 类,执行以下某项操作:(这条我自己测试MultiDexApplication类找不到,可以不需要)
    • 如果您不替换 Application 类,请修改清单文件以设置 <application> 标记中的 android:name,如下所示:
      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.myapp">
          <application
                  android:name="android.support.multidex.MultiDexApplication" >
              ...
          </application>
      </manifest>
      
    • 如果您替换 Application 类,请对其进行更改以扩展 MultiDexApplication(如果可能),如下所示:
      public class MyApplication extends MultiDexApplication { ... }
      
    • 或者,如果您替换 Application 类,但无法更改基类,则可以改为替换 attachBaseContext() 方法并调用 MultiDex.install(this) 以启用 MultiDex:
      public class MyApplication extends SomeOtherApplication {
        @Override
        protected void attachBaseContext(Context base) {
           super.attachBaseContext(base);
           MultiDex.install(this);
        }
      }
      

      注意:在 MultiDex.install() 完成之前,不要通过反射或 JNI 执行 MultiDex.install() 或其他任何代码。MultiDex 跟踪功能不会追踪这些调用,从而导致出现 ClassNotFoundException,或因 DEX 文件之间的类分区错误而导致验证错误。

现在,当您构建应用时,Android 构建工具会根据需要构造主要 DEX 文件 (classes.dex) 和辅助 DEX 文件(classes2.dex 和 classes3.dex 等)。然后,构建系统会将所有 DEX 文件打包到 APK 中。

在运行时,MultiDex API 使用特殊的类加载器搜索适用于您的方法的所有 DEX 文件(而不是只在主 classes.dex 文件中搜索)。

MultiDex 支持库的局限性

MultiDex 支持库具有一些已知的局限性,将其纳入您的应用构建配置时,您应注意这些局限性并进行针对性的测试:

  • 启动期间在设备的数据分区上安装 DEX 文件的过程相当复杂,如果辅助 DEX 文件较大,可能会导致应用无响应 (ANR) 错误。为避免此问题,请启用代码缩减,以尽量减小 DEX 文件的大小,并移除未使用的代码部分。
  • 当搭载的版本低于 Android 5.0(API 级别 21)时,使用 MultiDex 不足以避开 linearalloc 限制(问题 78035)。此上限在 Android 4.0(API 级别 14)中有所提高,但这并未完全解决该问题。在低于 Android 4.0 的版本中,您可能会在达到 DEX 索引限制之前达到 linearalloc 限制。因此,如果您的目标 API 级别低于 14,请在这些版本的平台上进行全面测试,因为您的应用可能会在启动时或加载特定类组时出现问题。代码缩减可以减少甚至有可能消除这些问题。