配置应用名
很简单,我们直接打开 android/app/src/main/res/values/strings.xml,即可看到配置中的 app_name,修改为你想要的即可。
配置图标
也很简单,在 android\app\src\main\res\mipmap-xxxxxx 中直接覆盖图标就可以,注意图标的大小。
打包 APK
1、在项目根目录执行 keytool -genkeypair -v -keystore release.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 生成密钥文件 release.keystore
2、把 release.keystore 文件放到你工程中的 android/app 文件夹下。
3、配置 android/app/build.gradle
1 | android{ |
去除无用的语言资源
通过配置 android/defaultConfig/resConfigs 可以选择只打包哪几种语言,进而去掉各种 aar 包中全世界的语言,尤其是 support 包中的。
选择保留什么语言要根据产品的用户和市场来定,如果只选择默认英语和中文语言,配置如下:
1 | defaultConfig { |
配置 PackagingOptions
打开 android/app/build.gradle 文件,添加如下配置:
1 | packagingOptions { |
- pickFirsts: 当出现重复文件,会使用第一个匹配的文件打包进入 apk
- merges: 当出现重复文件,合并重复的文件打入 apk
- excludes: 打包的时候排除匹配的文件
参考链接
- PackagingOptions
- More than one file was found with OS independent path
- More than one file was found with OS independent path ‘META-INF/LICENSE’
配置 splits
查看手机 CPU 信息:
adb shell->cd /proc->cat cpuinfo
默认情况下,生成的 APK 会同时包含针对于 x86 和 ARMv7a 两种 CPU 架构的原生代码。这样可以让我们更方便的向其他人分享这个 APK,因为它几乎可以运行在所有的 Android 设备上。但是,这会导致所有设备上都有一些根本不会运行的代码,白白占据了空间。目前安卓设备绝大多数是 ARM 架构,因此对于大部分应用来说可以考虑去掉 x86 架构的支持。
你可以在 android/app/build.gradle 中修改如下代码:
1 | - include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" |
abi: Application Binary Interface,针对不同的
CPU架构生成APK以减小APK文件的大小mips/mips64:极少用于手机,出发点是高性能,主要用于路由器、猫。armeabi:老版本ARMv5,不支持硬件辅助浮点运算,支持所有的ARM设备。x86/x86_64:x86架构的手机的市场占有率很低,约为 1%左右。而且x86架构都包含ARM模拟层,兼容ARM类型的ABI。注意,模拟器为x86架构。arm64-v8a:64 位ARM架构。可用 32 位模式运行armeabi-v7a和armeabi。(所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced SIMD技术等特性,研发成的)armeabi-v7a:主流版本AMRv7,2011 年 15 月以后的生产的大部分 Android 设备都使用它。
density: 针对不同的分辨率生成
APK以减小APK文件的大小
Failed to read PNG signature: file does not start with PNG signature
有时从网上下载的 Demo 资源文件不规范,会出现直接将 jpg 文件改为 png 后缀名的情况,gradle 打包检查时报错编译通不过的。我们通过 aaptOptions.cruncherEnabled=false 来禁止 Gradle 检查 png 的合法性:
1 | android { |
配置 dexOptions.javaMaxHeapSize
android studio 需要较大的内存才能正常编译项目,主要解决这个警告:com.android.build.api.transform.TransformException
在 android\gradle.properties 中加入以下配置:
1 | + dexOptions.javaMaxHeapSize = 2g |
gradle 优化配置
在 android\gradle.properties 中加入以下配置:
1 | # 让gradle使用单独的守护进程 |
配置方法数超过 64K 的应用
随着 Android 平台的持续成长,Android 应用的大小也在增加。当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限。会报告这一错误:
The number of method references in a .dex file cannot exceed 64K.
解决办法是配置您的应用进行 Dalvik 可执行文件分包,在 android/app/build.gradle 中做下面的配置:
1 | defaultConfig { |
BuildConfig
在 react-native 中,我们可以借助 react-native-config-reader 来方便地读取这些属性
BuildConfig 是程序编译后,根据 buildType 生成在 app\build\generated\source\buildConfig\debug(release)\ 包名下的一个 java 文件。默认有一下属性:
- DEBUG:是否是调试版本
- APPLICATION_ID:当前应用的包名
- FLAVOR:产品(渠道包的名称)
- BUILD_TYPE:当前的编译类型(release/debug)
- VERSION_CODE:版本号(数字)
- VERSION_NAME:版本号
自定义 BuildConfig
1 | defaultConfig { |
在子模块中取主项目的 BuildConfig
1 | ... |
解决在 Android P 上的提醒弹窗 (Detected problems with API compatibility(visit g.co/dev/appcompat for more info)
在 MainActivity.java 中添加 closeAndroidPDialog 方法并在 onCreate 方法中调用
1 | import android.os.Bundle; |
闪屏图尺寸
- mdpi:320x480
- hdpi:480x800
- xhdpi:720x1280
- xxhdpi:1080x1920
- xxxhdpi:2160x3840








