Makin共享库可选

时间:2018-02-08 14:21:04

标签: android gradle optional zebra

我正在编写扫描仪,我想为两个型号使用相同的应用程序 - 第一个使用共享库,仅在第一个模型(Zebra设备)上可用。
- 第二个应该只使用相机,而不是Zebra设备

尝试在非Zebra设备上安装apk时 INSTALL_FAILED_MISSING_SHARED_LIBRARY

我的build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Play Services for Barcode API
    compile 'com.google.android.gms:play-services-vision:9.4.0+'

    // Misc
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    // Zebra EMDK
    provided fileTree(include: ['com.symbol.emdk.jar'], dir: 'C:\\Users\\user\\AppData\\Local\\Android\\sdk\\add-ons\\addon-symbol_emdk-symbol-19\\libs')
    compile fileTree(exclude: ['com.symbol.emdk.jar'], dir: 'libs')
}

在我的清单中,我有<uses-permission android:name="com.symbol.emdk.permission.EMDK" />

我尝试了星云插件(https://github.com/nebula-plugins/gradle-extra-configurations-plugin)并在我的build.gradle&#34;可选&#34;中制作了两个Zebra条目。但我还是无法安装apk。 如何使Zebra库可选?
非常感谢您的任何提示!

2 个答案:

答案 0 :(得分:1)

正如克里斯蒂安所说,你需要指明<uses-library android:name="com.symbol.emdk" android:required="false"/>。您还需要检测您的应用运行的设备类型。我有一个类似的应用程序使用EMDK并适用于Zebra和非Zebra设备:https://github.com/darryncampbell/WakeLock_WifiLock_Exerciser。如果它有帮助,请看一下。

答案 1 :(得分:0)

通过在清单中设置<uses-library android:name="com.symbol.emdk" android:required="false"/>代替<uses-permission android:name="com.symbol.emdk.permission.EMDK" />并使用星云轻松修复。