1:编译签名apk后如何输出日志

2:低版本手机上无法安装apk

Android打包生成DEX文件过程中, 单个DEX文件可被引用的方法总数被限制为65536,超出会导致应用无法安装。

  • 需要在app.gradle中进行引用Multidex支持库,将一个dex拆分为多个:

1> defaultConfig {
...
...

// Enabling multidex support.
multiDexEnabled true
}
...
}

dependencies { compile 'com.android.support:multidex:1.0.0' }

application中重写以下方法:

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base); MultiDex.install(this);
}

  • 直接在Application -- onCreate方法中添加

   MultiDex.install(this);

3:Android 9.0设备访问页面报  net::ERR_CLEARTEXT_NOT_PERMITTED 

9.0新加的限制,对未加密url直接放弃请求 (http的url均不可以),如想正常访问需在Application中添加红框中的内容

4:Android Studio/Idea AAPT2 错误

AAPT 全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。在 Android SDK 目录下可以找到它。

1 > com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error

2 > 在高版本中禁用AAPT2配置作废,报错信息如下 :

The option 'android.enableAapt2' is deprecated and should not be used anymore.

Use 'android.enableAapt2=true' to remove this warning. It will be removed at the end of 2018..

出现以上2种问题的公共解决方式为以下第二和第三条

  •  在 gradle.properties 文件中,增加 “android.enableAapt2=false”,禁用AAPT2 (仅在错误1中可用)
  • 构建 App 的时候,打开 Build 窗口,点击 “Toggle View” 切换到文本输出,根据gradle 的执行输出查看排除问题进行解决
  • 查看程序目录/gradle目录是否存在中文,如果有则根据本章5的步骤进行修改

 5:更改gradle缓存目录

在这里说下我更改缓存目录的原因,因为我用户名称之前是中文的(实属脑残党)所以用新版Android Studio时AAPT2检测异常,又无法禁用,网上有好几种方式更改后不觉得有用,所以只能永久的更改目录啦。

把C:\Users\xx\.gradle目录删除掉,然后在其他盘新建目录(换盘符是因为.gradle文件夹的内容会不断增加,切记不要有中文,不然换盘符没意义)

设置系统变量:GRADLE_USER_HOME,变量值为自己新建的.gradle目录

为什么要配置变量呢,因为在gradle-wrapper.properties文件中有配置此路径,至于能不能直接在这里更改路径应该也可以,自己试下吧

系统变量配置成功后,根据下图内容进行选择后重新build下即可,如果出现异常:Unexpected lock protocol found in lock file. Expected 3, found 0.可能是有缓存之类的没清除,按照图2清除掉缓存即可。可以查看原目录下是否有生成.gradle,有Bug的话请留言赐教 ^ ^      

6:安卓通知栏使用

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);Notification builder = new NotificationCompat.Builder(IntentActivity.this)        .setContentTitle("通知信息")        .setContentText("通知内容")        .setWhen(System.currentTimeMillis())        .setSmallIcon(R.mipmap.ic_cool)        .build();manager.notify(1,builder);

Notification必须包含标题,标题内容,小图标三个属性,否则会发生异常,通知栏中将不显示通知内容

7:java.lang.RuntimeException: Unable to instantiate service xx.MyServiceActivity$MyService: java.lang.InstantiationException: class xx.MyServiceActivity$MyService has no zero argument constructor

项目中的服务是内部类,然后创建时报错,根据错误提示在MyService中添加了无参的构造函数,依然报错.....

然后将内部MyService类声明成静态类后,完美解决。

8:service

如果startService()、 bindService()一起被调用的话,onCreate()方法只在startService()时调用一次;销毁服务时需要调用unBindService()和stopService(),否则服务还存在。

当使用startService()启动服务时,当前Activity被销毁,那服务依然存在;当使用bindService()启动服务时,Activity销毁则服务也被销毁。

9:scrollView + listView动态布局

当listView列表中的控件有Button的时候,会导致listView.setOnItemClickListener()事件无效

解决方式:

1> 将列表中的Button控件换成TextView

2> 将listView布局替换成LinearLayout

10:vivo x9安装apk报 -- 解析包错误

解决方式:

转载自:https://blog.csdn.net/xudailong_blog/article/details/85013539

11:在Android studio目录下更改gradle build tools 版本

按照标识的目录找到build.gradle.ftl文件,编辑修改并保存,build tools版本默认为Android Studio Ide的版本号

gradle-projects目录下是各种项目模板配置文件,默认新建的是NewAndroidProject项目

12:Android ANR文件生成类型

APP出现Anr的时候默认会在/data/anr/下生成anr的日志文件traces.txt,每次生成都会替换文件内容,但因Android手机的多样性,SDK版本的更新,有些手机的anr文件会丢失,有些生成的文件名称会改变,经过测试多款手机大致分为:

1>  正常生成 /data/anr/traces.txt 文件

 每次发生anr,文件都会被替换,文件内容为最后一次出现anr时的日志

2>  生成/data/anr/traces_包名.txt文件

  根据应用包名生成anr日志文件

3> 生成/data/anr/traces_包名_年月日.txt文件

 根据应用包名和发生时间生成日志文件

4> 在/data/anr/下没有anr的日志文件

可以通过adb bugreport抓取日志,但是抓取的日志种类比较多,文件会很大,根据以下图片所说内容,并没有在当前项目路径下生成文件,应该会有默认的路径,但是没找到,后续找到会更新这里

13:命令获取文件md5值

certutil -hashfile libcomm.so MD5

14:不将第三方库打入jar包

15:获取so库路径

  Context.getApplicationInfo().nativeLibraryDir + "so库名称"

16:AndroidStudio升级到3.5最新版本

 编译报错:D:\A_work\.gradle\caches\modules-2\modules-2.lock ,打开多个as项目导致,关闭掉多余项目即可,是否还有其它原因还未证实

17:AndroidStudio LogCat窗口找不到的解决办法

按图的步骤操作即可找到,或者直接用快捷键Alt+6

18:部分真机设备连接正常不显示日志的解决办法

实测 MX6 :打开【设置】中的【开发者选项】,页面底部找到【性能优化】,打开【高级日志输出】,勾选【全部允许】即可

其他类型的设备可以自行测试,但我觉得应该不会差太多

19: Android studio编译报错“android:TextAppearance.Material.Widget.Button.Inverse not found”

更改v7版本与api一致,重新编译

20:子线程中解析Crash日志并发送导致Anr的解决方式

自定义CustomCrashHandler类实现Thread.UncaughtExceptionHandler,在uncaughtException类中开启子线程解析错误日志并发送,如果不将异常提交给默认的异常处理器 ,会导致ANR

public class CustomErrorHandler implements Thread.UncaughtExceptionHandler {    private ErrorPriCallback mErrorPriCallback;    public CustomErrorHandler() {    }    private Thread.UncaughtExceptionHandler otherHandler;    /**     * 初始化,注册Context对象, 获取系统默认的UncaughtException处理器, 设置该CrashHandler为程序的默认处理器     *     * @param errorPriCallback 异常出现后处理方式回调     */    public void init(ErrorPriCallback errorPriCallback) {        mErrorPriCallback = errorPriCallback;        otherHandler = Thread.getDefaultUncaughtExceptionHandler();//之前这里没有加,导致anr        Thread.setDefaultUncaughtExceptionHandler(this);    }    public void setHandler(Thread.UncaughtExceptionHandler handler) {        otherHandler = handler;    }    /**     * 异常发生时,系统回调的函数,我们在这里处理一些操作     */    @Override    public void uncaughtException(final Thread thread, final Throwable ex) {        // 提示用户程序即将退出        new Thread(new Runnable() {            @Override            public void run() {                PApmLog.trace("crash-----> uncaughtException ");                // 崩溃信息                mErrorPriCallback.priInfo(CRASH, thread, ex);                // 如果有其他的handler在此处理                if (otherHandler != null) {                    PApmLog.trace("crash-----> uncaughtException "+otherHandler);                    otherHandler.uncaughtException(thread, ex);                }            }        }).start();    }}

更多相关文章

  1. [PX3][Android7.1]学习笔记 --- init.rc文件格式介绍
  2. 编译TensorFlow Android(安卓)Camera Demo
  3. android文件存储的五种方式简介
  4. Android(安卓)Studio中svn的使用(全部在这里)
  5. Android调试.so库常用工具
  6. Android开发框架介绍
  7. Error:(22, 0) Could not find method android()
  8. Android(安卓)Studio 快捷键 (Mac OS X)
  9. Android(安卓)recovery 原理分析

随机推荐

  1. Android(安卓)手势识别判断,GestureDetect
  2. 【Android(安卓)Api 翻译3】android api
  3. 2010年Android随想!
  4. Android——多线程
  5. 我对学习delphiTeacher的《delphi调用及
  6. Android中的动画详解系列【4】——Activi
  7. android:layout_gravity和android:gravit
  8. Android优缺点
  9. 【源码】Android(安卓)面包屑导航效果源
  10. Android(安卓)Apk加固的初步实现思路(dex