Android Studio遇到的一些问题

如何选择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。使用的时候注意替换相应路径。

Android Studio中如何打JAR包 - 3kqing的博客


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 可执行文件分包

配置方法数超过 64K 的应用 - Android Studio User Guide


编译阶段内存溢出

// 修改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文件列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值