Topwo博客
首页
博客
项目
Android
The number of method references in a .dex file cannot exceed 64K
Android
2021-09-27
### 原因:.dex文件中的方法引用数不能超过64K。 ### 解决方法: 如果您的 minSdkVersion 设为 21 或更高版本,系统会默认启用 MultiDex,并且您不需要 MultiDex 库。 如果您的 minSdkVersion 设为 20 或更低版本,您必须使用 MultiDex 库并对应用项目进行以下修改: 在android/app/build.gradle中添加 ```groovy implementation 'com.android.support:multidex:1.0.3' ``` defaultConfig中添加 ```groovy
阅读原文>>
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" } ```
阅读原文>>
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
阅读原文>>
Android写文件到SD卡
Android
2021-09-27
考虑到SD卡可能没有被mount,或者其他各种情况,操作SD卡上的文件总需要各种状态的判断。主要是使用Environment类里的一些接口进行判断: ```java private void writeFileToSD() { String sdStatus = Environment.getExternalStorageState(); if(!sdStatus.equals(Environment.MEDIA_MOUNTED)) { Log.d("TestFile", "SD card is not avaiable/writeable right now."); return; } try { String pathName="/sdcard/test/";
阅读原文>>
Unable to merge dex问题解决记录
Android
2021-09-26
### 一、在Android Studio中 双击(Run with –stacktrace)找到是哪个class文件冲突,再通过下面的脚本找到对应的jar包。 ### 二、在Eclipse中 直接通过下面这个shell脚本找出冲突的class。 #### 附脚本: ```shell #!/bin/sh if [[ $# -eq 0 ]]; then echo "用法1:sh find_class.sh [jar包目录]\n用法2:sh find_class.sh [jar包目录] [要搜索的class]"
阅读原文>>
查看apk包的签名md5、sha1
Android
2021-09-26
### 方法一: ```shell keytool -list -printcert -jarfile android.apk ``` ### 方法二: ```shell jar tf android.apk |findstr RSA jar xf android.apk META-INF/CERT.RSA keytool -printcert -file META-INF/CERT.RSA ```
阅读原文>>
首页
上一页
12
下一页
尾页
文章推荐
The number of method references in a .dex file cannot exceed 64K
2021-09-27
Android Studio打包后.so文件被改动
2021-09-27
Can't create handler inside thread that has not called Looper.prepare()解决办法
2021-09-27
NDK提供的共享库(Prebuilt)
2021-09-27
java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/client/***
2021-09-27