【问题标题】:Understanding tools:overrideLibrary on Android了解工具:Android上的overrideLibrary
【发布时间】:2017-02-04 18:04:55
【问题描述】:

我的主应用带有minSdk="14",而适用于Android v. 4.16.1 的Facebook SDK 带有minSdk="15"

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example.dmitriev_m.sample_android"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.facebook.android:facebook-android-sdk:4.16.1'
    compile 'com.android.support:appcompat-v7:25.1.0'
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.dmitriev_m.sample_android">

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="25"
        tools:overrideLibrary="com.facebook, android.support.customtabs" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这是documentation 所说的关于合并AndroidManifest.xml 文件的内容:

默认情况下,当导入具有 minSdkVersion 值的库时 高于主清单文件,发生错误和库 无法导入。为了让合并工具忽略这个冲突, 导入库,同时保持应用的较低 minSdkVersion 值, 将 overrideLibrary 属性添加到标签。属性 value 可以是一个或多个库包名(逗号分隔), 指示可以覆盖主清单的库 minSdkVersion.

但我合并的清单看起来像是 Facebook SDK 的应用程序覆盖清单文件(最小 SDK 为 14):

运行此应用程序是否安全?我的意思是当 Facebook SDK 从 Android API 15 调用方法时,应用程序应该崩溃,不是吗?

【问题讨论】:

    标签: android android-manifest


    【解决方案1】:

    是的,如果库调用 API 15 函数并且设备只有 API 14,它将崩溃。如果设备是 API15 或更高版本,它仍然可以工作。

    不过,在这种情况下,我不会担心。 14 是 Anroid 3.x。只有极少数的 3.x 设备——Android 平板电脑直到 4.0 发布后才起飞。正在使用的 3.x 型号的百分比不到所有设备的 0.1%。如果他们不工作,真的值得花时间和精力来支持他们吗?老实说,我只是将您的 minsdk 提高到 15 或更高。 (将其提高到 19 只会消除 10% 的全球市场,这将严重偏向亚洲、非洲和南美洲的低收入国家。如果您的主要目标是美国和欧盟,那么支持成本可能不值得那个)。

    【讨论】:

    猜你喜欢
    • 2020-04-19
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2014-03-16
    • 1970-01-01
    相关资源
    最近更新 更多