Android Studio

Android 项目优化(五):应用启动优化

房东的猫 提交于 2020-05-01 04:39:49
介绍了前面的优化的方案后,这里我们在针对应用的启动优化做一下讲解和说明。 一、App启动概述 一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降,或者卸载放弃该应用程序。 应用程序启动有主要分为两种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动。 冷启动:冷启动表示用户首次打开应用,这时进程还没创建,包含了Application创建的过程。冷启动时间指从第一次用户点击Launcher中的应用图标开始,到首页内容全部展示出来。 热启动:热启动表示用户在首页按了返回,首页Activity已经Destroy,不过Application仍在内存中存在,对应的进程并没有被杀掉,不包含Application创建过程。热启动时间指在Application仍然存在的情况下,从用户点击桌面图标,到首页内容全部展示出来。 注:冷启动、热启动不是官方的定义,而是我们基于用户的角度考虑的定义。 在冷启动开始时,系统有三个任务。这些任务是: 加载并启动应用程序。 启动后立即显示应用程序空白的启动窗口。 创建应用程序进程。 一旦系统创建应用程序进程,应用程序进程就会负责下一阶段。这些阶段是: 创建App对象 启动主线程(main thread) 创建应用入口的Activity对象 填充加载布局Views

【我的Android进阶之旅】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题

巧了我就是萌 提交于 2020-04-30 12:55:21
文章目录 Android 设备的CPU类型(通常称为"ABIs") 一、 问题描述 二、解决方法 2.1、解决之前的截图: 2.2、解决后的截图: 2.3、解决方法: 2.4、建议 三、扩展知识 3.1App中可能出错的地方 3.2 其他地方也可能出错 3.2.1 混合使用不同C++运行时编译的.so文件 3.2.2 没有为每个支持的CPU架构提供对应的.so文件 3.2.3 只提供armeabi架构的.so文件而忽略其他ABIs的 四、关于google强制64位架构的规定 4.1 是否包含 64 位? 4.2 判断是否支持 64 位架构 4.2.1. AS 的 APK 分析器 4.2.2 使用 zipinfo 命令进行分析 4.3 在 64 位设备上测试应用 五、更多参考 Android 设备的CPU类型(通常称为"ABIs") armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年12月以后的生产的大部分Android设备都使用它. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。 armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。 x86: 平板、模拟器用得比较多。 x86_64: 64位的平板。 更多可以查看链接 https://developer.android.google.cn/ndk

Ahjesus

核能气质少年 提交于 2020-04-30 11:35:38
有个天坑,我带领大家避开 Mac上折腾了一星期,不成功,放弃了 过了几个星期不死心,又去官方看了下发现更新了SDK版本,在试一下 鬼使神差的用了台式机来测试集成,下载了官方DEMO,编译不成功 新建一个empty项目,把官方demo移植过来,修改命名空间也就是package,.net搞多了就这么叫了 编译-成功, 运行-内核加载成功 好嘛,看来大功告成了, 换mac来 WTF.... 不能成功加载内核 仔细对比了所有文件,没问题 不死心,SDK对比 没问题 SDK Tools对比, 嗯.......... 天坑来了 Intel x86 Emulator Accelerator HAXM 卸载了试试 就是这个J8玩意儿造成的 编译,运行,内核成功加载了 最后吐槽下X5,文档不全,demo不详细,联系人联系不上,想尽办法弄到技术的qq了,加qq还要发短信验证,申请好友,然后就没有然后了 又想办法弄到了官方的讨论群,然并卵,依然不会加你 来源: oschina 链接: https://my.oschina.net/u/4394698/blog/4258889

Mac上flutter的环境搭建

会有一股神秘感。 提交于 2020-04-30 09:09:32
一、安装flutter SDK 1、按照官网说明,获取flutter SDK 如图下载其最新可用的安装包 https://flutter.dev/docs/get-started/install/macos# 2、下载后,将安装包解压到你要安装的目录,如图,我放在了这里 3、添加flutter相关工具到path 打开终端输入命令行 vim ~/.bash_profile 如上图,输入a,将打开编辑模式,增加一行 export PATH=`pwd`/flutter/bin:$PATH `pwd`是你flutter的安装目录,同时将环境变量添加到文件中 export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 输入完成,按esc,然后输入:wq退出编辑,在终端输入 source ~/.bash_profile 这个意思是让配置文件在修改后立即生效 二、检查开发环境 1、flutter需要依赖xcode和Android Studio的支持,终端运行flutter doctor 执行命令查看安装情况 flutter doctor 2、一般报错的话,就是xcode或者Android Studio过低,或者缺少Android SDK等

01 android ndk入门实例之android.mk编译

馋奶兔 提交于 2020-04-28 22:15:49
前言 1 环境 android studio2.3 , window系统 2 ndk https://dl.google.com/android/repository/android-ndk-r16-windows-x86_64.zip 3 采用android.mk编译方式 正文 1 正常新建一个android项目 2 右键项目选择Open Moduls Settings   1)设定好ndk的路径    2)指定开启ndk 3 android新加如下文件 具体代码如下 NdkJniUtils.java package com.jni.utils; /** * Created by user on 2017/11/22. */ public class NdkJniUtils { static { System.loadLibrary( "hello-jni" ); } public static native String stringFromJni(); }  hello-jni.c #include < string .h> #include <jni.h> jstring Java_com_jni_utils_NdkJniUtils_stringFromJni( JNIEnv * env,jobject thiz ) { return (*env)-

解决"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-andr...

ぐ巨炮叔叔 提交于 2020-04-28 21:38:06
今天安装了Android Studio 3.2,打开一个旧工程,编译提示"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android" 网上也有解决办法,就是下载旧版的NDK,将其中的toolchain复制到新版的NDK中 但是感觉这种方式,不是解决的正道。 经过对新版NDK的研究,发现NDK的更新记录里有一段话 This version of the NDK is incompatible with the Android Gradle plugin version 3.0 or older. If you see an error like `No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android`, update your project file to [use plugin version 3.1 or newer]. You will also need to upgrade to Android Studio 3.1 or newer. 也就是说新版本的NDK与3.0及以前旧版的Android Gradle

完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

杀马特。学长 韩版系。学妹 提交于 2020-04-28 21:34:37
问题描述 好久之前的一个Android项目,最近需要重构一下 因为Android Studio的开发环境以及Gradle的版本等等都进行了一定的更新,于是导入Project以后,出现了报错: No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 如图所示: 显然这个错误是由于Android3.0(当然也可能是更高的版本)开发环境的版本更新所导致的 相关背景 NDK,是Native Development Kit的缩写,这是 Android的一个工具开发包,与java语言没有直接的关系 Native就是指C、C++这些语言 使用NDK可以快速开发C、C++的动态库,并自动将这些so文件与其他内容一起打包成APK Android Studio环境下关于NDK的配置 先把目录切换为Project模式,点这个地方就行 然后选择local.properties文件,就是我标红的这个 可以看到这里记录了NDK和SDK在本地计算机上的存储路径 进一步分析 首先打开SDK manager 出现以下界面 这里可以看到我的NDK是已经下载好的 那么这个下载好的NDK的路径在哪里呢,或者说这个下载好的NDK究竟放在哪里呢,我们查找一下 如下图操作,打开project

NDK android Error:Expected caller to ensure valid ABI: MIPS

怎甘沉沦 提交于 2020-04-28 19:14:30
android studio 安装NDK之后,报错 Error:Expected caller to ensure valid ABI: MIPS 环境: android studio 2.3 gradle-3.3-all dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } 安装NDK的方式:直接在SDK tools底下安装的(LLDB、CMAKE、NDK) 先出现的问题是:Error:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 解决方法是:按照网上的方法,下载NDK r11b的版本,将里面的mips64el文件夹复制到自己的ndk-bundle/toolchains下。具体查阅百度。我上传了这个文件夹,不用去下载整个NDK了,链接如下: 链接:https://pan.baidu.com/s/1yTJw86BtAz24xGCdvCMUvg 提取码:5ebw 但是这种方法好像不太好,因为听说是因为NDK不支持mips64el这玩意了,并不是少了这个文件夹。但是其他方法我都试了,没用,这样能用就行了。。。 解决完这个问题,重新sync,报错: Error

只需5步完美解决 No toolchains found in the NDK问题

不羁岁月 提交于 2020-04-28 13:49:32
问题描述 好久之前的一个Android项目,最近需要重构一下 因为Android Studio的开发环境以及Gradle的版本等等都进行了一定的更新,于是导入Project以后,出现了报错: No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 如图所示: 显然这个错误是由于Android3.0(当然也可能是更高的版本)开发环境的版本更新所导致的 相关背景 NDK,是Native Development Kit的缩写,这是 Android的一个工具开发包,与java语言没有直接的关系 Native就是指C、C++这些语言 使用NDK可以快速开发C、C++的动态库,并自动将这些so文件与其他内容一起打包成APK Android Studio环境下关于NDK的配置 先把目录切换为Project模式,点这个地方就行 然后选择local.properties文件,就是我标红的这个 可以看到这里记录了NDK和SDK在本地计算机上的存储路径 进一步分析 首先打开SDK manager 出现以下界面 这里可以看到我的NDK是已经下载好的 那么这个下载好的NDK的路径在哪里呢,或者说这个下载好的NDK究竟放在哪里呢,我们查找一下 如下图操作,打开project

[Android教程] Cordova开发App入门(一)创建android项目

无人久伴 提交于 2020-04-28 07:42:57
  前言   Apache Cordova是一个开源的移动开发框架。允许使用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发。 应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑定去访问每个设备的功能,比如说:传感器、数据、网络状态等。   使用Apache Cordova的人群:   1.移动应用开发者,想扩展一个应用的使用平台,而不通过每个平台的语言和工具集重新实现。   2.web开发者,想包装部署自己的web App将其分发到各个应用商店门户。   3.移动应用开发者,有兴趣混合原生应用组建和一个WebView(一个特别的浏览器窗口) 可以接触设备A级PI,或者你想开发一个原生和WebView组件之间的插件接口。   —— 摘自《Cordova官网》   Cordova虽然可以用来开发APP,但cordova并不能把H5代码变成IOS或者Android的原生代码。cordova只是将我们的Html文件通过相应的API,显示在HTML Rendering Engine(即WebView)中,同时 Cordova支持丰富的插件,这些插件提供了Cordova和原生组件相互通信的接口并绑定到了标准的设备API上。这就使开发者可以通过JS去调用原生代码,比如:照相机、联系人、热更新和打开第三方APP应用等。   接下来