Topwo博客
首页
博客
项目
Android
使用getIdentifier()方法根据资源名来获取资源id
Android
2021-09-27
### 参考文档 1).Android开发之——使用getIdentifier()方法根据资源名来获取资源id [https://www.it610.com/article/1289900137979650048.htm](https://www.it610.com/article/1289900137979650048.htm) 2).解决SDK中getIdentifier的痛点 [https://www.jianshu.com/p/ddf9f44125d7](https://www.jianshu.com/p/ddf9f44125d7)
阅读原文>>
getCacheDir、getFilesDir、getExternalFilesDir、getExternalCacheDir的作用
Android
2021-09-27
etCacheDir()方法用于获取/data/data//cache目录 getFilesDir()方法用于获取/data/data//files目录 应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。 大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。 这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。 如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢? 通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据 通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
阅读原文>>
android eclipse设置及修改生成apk的签名文件
Android
2021-09-27
### 问题: 平时在使用eclipse进行android project开发时,由于每个项目组都有自身的签名, 但默认Eclipse ADT调试运行使用的是临时生成的Debug专用证书,默认为C:\Users\XXX\.android\debug.keystore。 于是每次调试程序必须使用ADT的Export Signed Application Package打带正式签名的包,或者另写重新签名脚本,比较麻烦。 后来发现ADT允许自定义调试用证书,在Window->Preferences->Android->Build->Custom debug keystore这里, 试了一下选择正式证书后提示:”Keystore was tampered with, or password was incorrect” 其实这个界面并没有提供输入Keystore密码,选择别名之类的地方,所以就感到非常奇怪了,查了一下官方文档发现,即使是自定义的调试证书,也需要保证和默认证书一样的密码,别名alias和别名密码。 文档中提到的默认证书信息如下:
阅读原文>>
全网最牛的安卓apk重签名
Android
2021-09-27
### 第1步、先删除包里面旧的签名 ```shell zip -d input.apk 'META-INF/*.SF' 'META-INF/*.RSA' ``` ### 第2步、再用新的签名文件签名 ```shell jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore ${keystorePath} -storepass ${storepass} -keypass ${aliaspass} -signedjar ${output_apk} ${input_apk} ${alias} ```
阅读原文>>
查看apk包的签名md5、sha1
Android
2021-09-27
### 方法一: ```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 ```
阅读原文>>
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> ```
阅读原文>>
首页
上一页
12
下一页
尾页
文章推荐
使用getIdentifier()方法根据资源名来获取资源id
2021-09-27
getCacheDir、getFilesDir、getExternalFilesDir、getExternalCacheDir的作用
2021-09-27
android eclipse设置及修改生成apk的签名文件
2021-09-27
全网最牛的安卓apk重签名
2021-09-27
查看apk包的签名md5、sha1
2021-09-27