Topwo博客
首页
博客
项目
Android Studio打包后.so文件被改动
Android
2021-09-27
### 问题描述: 在接入SDK时,编译无错,但是运行闪退。解压生成的apk文件发现,原jniLibs目录下的.so文件被复制到了apk中,但是文件md5值发生改变,大小差距悬殊。 ### 原因: Android Studio 2.3及之后的版本中,默认会对所有的.so文件进行压缩。 例如在接入中国移动支付SDK时,多个so被压缩,其中libmg20pbase.so原来接近700K的体积,被压缩到了70K,.so文件不完整,导致找不到对应的方法而闪退。 ### 解决方法: 在build.gradle文件android{}节点中添加 ```groovy packagingOptions { doNotStrip "*/armeabi/*.so" } ```
阅读原文>>
js中数组拷贝不改变原数组的方法
JavaScript
2021-09-27
### 背景:需要一个和原数组相等的数组,并且操作该数组时不影响原数组,方法:深拷贝。 ```javascript var a = [1, 2, 3]; // 此时需要b等于a,但是改变b时,不影响a //方法一,slice() var b1 = a.slice(); //方法二,concat() var b2 = [].concat(a);
阅读原文>>
python获取执行脚本的所在目录总结
Python
2021-09-27
os.getcwd()、sys.path[0] (sys.argv[0])、file的区别是这样的: 假设目录结构是: C:test |-getpath |-path.py |-sub |-sub_path.py 然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是: `os.getcwd()`“C:\test”,取的是起始执行目录
阅读原文>>
mysql数据库的高级操作
Mysql
2021-09-27
### 数据的备份 MySQL提供了一个mysqldump命令,它可以实现数据的备份 1、备份单个数据库 ```sql mysqldump -uusername -ppassword dbname [tbname1 [tbname2…]]>filename.sql ``` 2、备份多个数据库 ```sql mysqldump –uusername –ppassword -–database dbname1 [dbname2 dbname3…]>filename.sql ```
阅读原文>>
Can't create handler inside thread that has not called Looper.prepare()解决办法
Android
2021-09-27
```java private Handler mHandler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case ID_USER: // 获取传递的数据 // Bundle data = msg.getData(); // int count = data.getInt("COUNT"); // 处理UI更新等操作 }
阅读原文>>
NDK提供的共享库(Prebuilt)
Android
2021-09-27
Android NDK r5 开始支持预编译库(动态库和静态库),即程序能使用库的预编译版本。 该特性可用于以下两方面: 1)向第三方NDK开发人员发布你的共享库而不用提供源码。 2)使用一个提前编译好的库(预编译库)来加速编译过程。 本文说明该特性如何工作。 ### I. 声明一个预编译库的模块 对于Android编译工具而言,每个预编译库必须声明为一个独立的模块。这里举一个例子,假设 libfoo.so 文件与 Android.mk 位于同一个目录:
阅读原文>>
java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/client/***
Android
2021-09-27
在Android 9.0 / P 手机上,闪退,运行APP报错java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/*** #### 问题分析: 出现此问题主要是 apache 的 http 库在android 9.0删除导致的,出现此问题应该是使用了 apache 的http库。 #### 修改建议: 尽量不要再使用httpClient来访问网络,替换成HttpURLConnection或者OKHttp。最后再说明一下:尽量不要使用过时的库进行开发。 在AndroidManifest.xml文件的application标签里面加入 ```xml <uses-library android:name="org.apache.http.legacy" android:required="false" ></uses-library> ```
阅读原文>>
Android 8 http明文问题:Cleartext HTTP traffic not permitted #AndroidPie
Android
2021-09-27
从Android 9(API级别28)开始,默认情况下禁用明文支持。 ### 方法1 在AndroiManifest.xml中使用useCleartextTraffic值“ true” 已从Android 6.0中添加了useCleartextTraffic属性。对于Android Pie,此属性的默认值为“ false”,因此我们需要重新配置此属性,以便可以使用明文。 ```xml <application android: usesCleartextTraffic = “true” … ```
阅读原文>>
NDK toolchain对应ABI
Android
2021-09-27
### Android NDK: This NDK supports the following toolchains and target ABIs: Android NDK: aarch64-linux-android-4.9: arm64-v8a Android NDK: aarch64-linux-android-clang3.4: arm64-v8a Android NDK: aarch64-linux-android-clang3.5: arm64-v8a Android NDK: arm-linux-androideabi-4.6: armeabi armeabi-v7a armeabi-v7a-hard Android NDK: arm-linux-androideabi-4.8: armeabi armeabi-v7a armeabi-v7a-hard Android NDK: arm-linux-androideabi-4.9: armeabi armeabi-v7a armeabi-v7a-hard Android NDK: arm-linux-androideabi-clang3.4: armeabi armeabi-v7a armeabi-v7a-hard Android NDK: arm-linux-androideabi-clang3.5: armeabi armeabi-v7a armeabi-v7a-hard Android NDK: mips64el-linux-android-4.9: mips64
阅读原文>>
#if, #elif, #else, #endif 使用
C/C++
2021-09-27
有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。 ### (一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有: #### 1、#if, #elif, #else, #endif ```c #if 条件 1 代码段 1 #elif 条件 2 代码段 2 ...
阅读原文>>
首页
上一页
27
下一页
尾页
文章推荐
Android Studio打包后.so文件被改动
2021-09-27
js中数组拷贝不改变原数组的方法
2021-09-27
python获取执行脚本的所在目录总结
2021-09-27
mysql数据库的高级操作
2021-09-27
Can't create handler inside thread that has not called Looper.prepare()解决办法
2021-09-27