如何选择compileSdkVersion, minSdkVersion 和 targetSdkVersion
- compileSdkVersion
- 在编译阶段,使用哪个版本的Android SDK进行编译
- 强烈推荐总是使用最新的 SDK 进行编译。这样在编译检查阶段会得到很多好处,包括新旧API的替换等
- minSdkVersion
- 应用可以运行的最低要求,商店会根据这个版本来判断可以使用的设备
- 一些依赖库有自己的最低版本号,在实际开发中,我们可以根据各种依赖库的最高版本来选择这个值
- 我们可以通过当前Android版本分布来决定我们提升版本的同时,需要抛弃多少用户
- targetSdkVersion
- 负责向前兼容的主要依据
- 低版本的targetSdkVersion的应用,不会包含高版本的新功能。
- 三者的关系
minSdkVersion <= targetSdkVersion <= compileSdkVersion
如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion - Ian Lake
如何打JAR包
在相应项目的Build.gradle中添加以下代码
task makeJar(type: Copy) {
delete 'build/libs/mysdk.jar' //删除之前的jar
from('build/intermediates/bundles/release/') //打包到指定目录
into('build/libs/')
include('classes.jar')
def a = "mysdk-"+android.defaultConfig.versionName + ".jar"; //定义名称变量
rename('classes.jar',a); //重命名
}
makeJar.dependsOn(build)
在Android Studio 2.3中,Release目录被替换成了default。使用的时候注意替换相应路径。
tools.jar 没有找到
- 在系统路径中设置JAVA_HOME到JDK根目录
JAR和AAR的区别
- .jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
- .aar:包含所有资源,class以及res资源文件全部包含
MissingTranslation 错误
// 方案1:在对应strings中加入 translatable="false"
<string name="hello_world" translatable="false">你好</string>
// 方案2: 直接设定对应string.xml文件内的resources的attribute
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation">
<string name="weibo_oauth_regiseter">应用授权</string>
<string name="website">http://www.mob.com</string>
</resources>
// 方案3(推荐):修改Gradle,在lint阶段忽视掉这个错误
lintOptions {
disable 'MissingTranslation'
}
Dex 64K 限制
- 请务必检查是否依赖了许多不需要的第三方库。很多情况下,我们并不需要对Dex进行分包。
- 对dex分包。原本的class.dex除外。还会生成class2.dex。
- 在Gradle-android-defaultconfig 中设置 multiDexEnabled true 开启功能
- 改用 MultiDexApplication 或在自己的Application 中替换 attachBaseContext() 方法并调用 MultiDex.install(this) 来启用 Dalvik 可执行文件分包
编译阶段内存溢出
// 修改Gradle设置JVM最大堆大小
dexOptions {
javaMaxHeapSize "4g"
}
NDK找不到
Caused by: java.lang.RuntimeException: Unable to start activity
ComponentInfo{cn.xxx.xx/com.xxx.xxx.xxxActivity}:
java.lang.IllegalArgumentException: Unable to find native library main using classloader
确保所有架构的NDK目录都包含完整的.so文件列表