首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    实现Android APK瘦身99.99%

    基线测定 一开始,我们用 Android Studio 生成一个缺省的 App,创建密钥库(Keystore) 并对 App 签名,然后使用命令stat -f%z $filename测定生成 APK 文件的字节数大小...框架和支持库中外部方法的引用。...在我们的 Dex 文件中,大多数方法引用属于android.support软件包,因此我们将要去除该支持库。具体做法为: 从build.gradle中彻底清除依赖块。...但是resources.arsc依然引用了如下项: 一个布局文件; 一个字符串资源; 一个调用图标。 让我们从第一项着手。...这看上去是一个小更改,但是它从resources.arsc中删除了一项,削减了 Manifest 文件中的字符数,并从“res”目录中移除了一个文件。略有裨益,我们削减了 228 个字节。

    1.9K30

    Android Studio3.1.0升级问题记录

    Android Studio3.1.0升级问题记录 每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1、Gradle 是4.1...还是乖乖的改吧,由于是我们的依赖的library中使用了compile,相当于是library依赖了一个第三方库,直接改为implementation就相当于屏蔽掉了app对library依赖的第三方库...,最好的解决办法是,library中封装一层app访问library依赖的第三方库api的方法,这样的话app是和library依赖的第三方库是没有任何关系的,这样就降低了app与library依赖的第三方库的耦合性...,这样也体现了“第三方库隔离”的原则,如果以后依赖的库变了,你只需要修改library中依赖的库及app调用的方法即可,不用动app里面的代码了~ 第三个错误如下 Duplicate zip entry...这就纳闷了,compileOnly的意思不就是编译时依赖,不打紧包中的意思吗?怎么还冲突?

    89520

    Android Gradle必备基础知识

    定制 Android插件提供了一些列的DSL来让直接从构建系统中做大部分的定制。...本地包 想要配置依赖一个外部jar包,需要在compile的配置中添加一个dependency。...注意:Gradle会直接识别所有的依赖关系。这就意味着如果一个依赖库自身又依赖别的库时,他们会被一起下下来。...不仅会移除项目中未使用的资源,而且还会移除项目所以来的类库中的资源。注意,资源清理只能在与代码清理结合使用(例如ProGuad)。这就是为什么它能移除所依赖类库的无用资源。...通常,类库中的所有资源都是使用的,只有类库中无用代码被移除后这些资源才会变成没有代码引用的无用资源。 android { ...

    88810

    Android安全攻防战,反编译与混淆技术完全解析(下)

    混淆APK 在Android Studio当中混淆APK实在是太简单了,借助SDK中自带的Proguard工具,只需要修改build.gradle中的一行配置即可。...c类中只有一个a方法,从字符串的内容我们可以看出,这个是Utils类中的methodNormal()方法。 我为什么要创建这样的一个项目呢?...对第三方库进行保留,不混淆android-support库,以及LitePal库中的代码。 下面我们就来逐一实现这些目标。...其实从主界面上我们就能看出,这个Proguard工具支持Shrinking、Optimization、Obfuscation、Preverification四项操作,在左侧的侧边栏上也能看到相应的这些选项...的类名以及从父类继承的方法名不会被混淆,NativeUtils的类名和其中的native方法名不会被混淆,Utils的methodUnsed方法不会被移除,因为我们禁用了Shrink功能,其余的代码都会被混淆

    1.7K70

    Android性能优化(十)之App瘦身攻略

    2.2.1 Android Studio Analyze APK Android Studio 2.2之后有一个功能Analyze APK,方便简单,功能还是Google自带的靠谱; 查看apk中任意文件的大小...3.2 移除无用的库、避免功能雷同的库 3.2.1 项目中基础功能的库要统一实现,避免出现多套网络请求、图片加载器等实现。...而缩减方法数,除了上面写到的普遍方法:移除无用方法、库、使用较小的SDK之外还有: 避免在内部类中访问外部类的私有方法、变量。...挡在Java内部类(包含匿名内部类)中访问外部类的私有方法、变量的时候,编译器会生成额外的方法,会增加方法数; 避免调用派生类中的未被覆写的方法,避免在派生类中调用未覆写的基类的方法;避免用派生类的对象调用派生类中未覆盖的基类的方法...4.1 移除无用的资源文件 移除无用资源文件要比移除无用代码容易,在Android Studio的任何文件中右击,选择清除无用资源即可删除没有用到的资源文件。 ?

    1.7K30

    Android Studio 3.5: 稳步推进 Project Marble 计划

    感谢大家向我们提交错误报告,并在多个社交平台上与团队进行积极互动,特别是 Android 社区中的 40 位外部贡献者,非常感谢他们一直以来的热心奉献,帮助团队提交和解决 Android Studio...尽管系统健康的许多优化项可能并不为大家所熟知,不过其中还是有几个比较明显的变更,其中包括: 自动推荐内存设置 在 Android Studio 3.5 中,IDE 会识别出一个应用项目在 RAM 容量更高的机器上何时需要更多的...从以下两张图中您可以发现,得益于输入延迟的改进,使用 XML 编辑数据绑定表达式的速度明显加快了。 ? 改进前: 在 Android Studio 3.4 中编辑代码 ?...改进后: 在 Android Studio 3.5 中编辑代码 构建速度 为了提高 Android Studio 3.5 的构建速度,我们采取了许多措施,其中最为重要的一项变更是为顶级注释处理器添加增量构建支持...Apply Changes 在 Project Marble 计划期间,我们移除了 Instant Run,然后在 Android Studio 3.5 中重新构建并实现了一个更加实用的替代方案,即 Apply

    1K30

    实用指南:如何规避Android开发中的内存泄漏陷阱?

    使用弱引用:在必要时,可以使用弱引用来持有外部类的引用,这样即使外部类被销毁,也不会阻止其被回收。...disconnect() } } 集合泄漏 集合泄漏通常是由于在集合中持有对象的引用,但在对象不再需要时未正确地从集合中移除引用而导致的。...及时移除对象引用:在对象不再需要时,及时从集合中移除对象的引用,以确保对象能够被垃圾回收。...通常可以在对象不再需要的时候,例如在Activity的onDestroy()方法中或后台任务执行完毕后,将对象从集合中移除。...Memory Profiler:Android Studio提供了内置的工具,可以帮助监测应用程序的内存使用情况,包括内存泄漏。

    45110

    Android 应用启动性能 | 延迟初始化

    您既可以指定应用启动库该如何初始化其他的库,也可以从合并后的 manifest 文件中移除其他库的 content provider。...这正是应用启动库高明的地方,它能帮您从合并的 manifest 文件中和应用启动的过程中移除隐藏的 content provider,也能帮您延迟或者更有目的地加载这些库。...其实上面的代码已经很接近了,在 build.gradle 文件中您需要同样的启动依赖和其他您想使用的库,也还是需要特殊的 "移除" provider 标签来去除每个库自动生成的 content provider...这是因为应用启动库在单个库的例子中并不会帮我们节省时间,我们只不过是转移逻辑到另一个代码路径中运行。...您能否利用应用启动库从合并的 manifest 文件中移除一些甚至所有这些 content provider,并观察它如何影响启动时间?您能否在实现这个的同时不影响运行时行为呢?

    68120

    Android:创建可穿戴应用 – 安装和依赖管理

    安装可穿戴应用 在开发时,你能够像一般移动应用一样直接把应用安装到可穿戴设备中。 使用adb install或者 Android Studio上的Play button。...当你准备好要公布时,你须要把可穿戴应用嵌入一个手机应用中。当用户从Google Play安装手机应用时,一个连接好的可穿戴设备将自己主动接收这个可穿戴应用。...对于那些仅仅出现于可穿戴设备上的通知(也就是,由可穿戴应用所发出的通知)。你仅仅需使用标准框架APIs (API Level 20)就可以,你能够移除mobile模块的依赖库。 2....假设你不使用这些API,从模块中移除这些依赖关系。 3. 可穿戴界面支持库(Wearable UI support library) 这是一个非官方的库。包括一些专门为可穿戴设备设计的界面组件。...虽然兴许可能会升级更新,但不会影响到你的应用的使用,由于这些库是被静态编译进你的应用。 要使用最新的特性,你须要使用最新的静态库并又一次编译链接。 这些库仅仅对于可穿戴设备APP可用。

    39520

    Android Studio 3.6 发布啦,快来围观

    image 3.6.1 新的更新中移除了多重预览功能已删除,4.0 版本才正式开放;此外并修复了Git版本控制身份验证问题 一、设计工具 此版本的Android Studio包括对一些设计工具的更新...搜索资源时,资源管理器现在将显示所有项目模块的结果(以前,搜索仅从所选模块返回结果)。 筛选器按钮可以查看来自本地依赖模块,外部库和 Android - 框架的资源也可以使用过滤器显示主题属性。...Kotlin支持 以前由 Java 支持的 Android Studio 支持的 NDK 功能,现在 Kotlin 也能够支持了: 从JNI声明导航到 C / C ++ 中的相应实现函数。...重新加载本机库的APK 在 IDE 外部更新项目中的 APK 时不再需要创建新项目。Android Studio会检测APK 中的更改,并提供重新导入 APK 的选项。...多显示器支持 3.6.1 新的更新中移除了多重预览功能已删除,4.0 版本才正式开放。

    9K20

    ProGuard 在 Android 上的使用姿势

    当您只从 XML 资源引用您的代码会时(通常使用底层的反射),这个情况也会发生。 在一次 Android 典型的构建过程中,AAPT(处理资源的工具)会生成一个额外的 ProGuard 规则文件。...这些警告的一个原因就是,您的构建路径中没有加入需要依赖的 JARs,如使用了 provided (仅编译时)依赖。而有时候,在 Android 上这些代码的依赖在运行时并不会被真正的调用。...让我们看一个真实的例子。 ? 一个项目依赖 OkHttp 3.8.0 构建时的消息。 OkHttp 库在 3.8.0 版本的类中添加了新的注解(javax.annotation.Nullable)。...APK Analyzer 和 ProGuard Android Studio 集成的 APK Analyzer 可以帮您看到哪些类被 ProGuard 移除了并支持为它们生成 keep 规则。...,以及其他一些普通的方法和类都不会被移除。

    2.6K40
    领券