我正在使用Estimote SDK,它作为AAR文件包含在我的项目中。 我想在支持蓝牙LE的设备上使用SDK,但也希望允许没有支持的硬件的用户安装。
Estimote SDK的清单包括:
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
这会阻止App在很多设备上安装。
我可以推翻android:minSdkVersion:
<uses-sdk android:minSdkVersion="18" />
与
<uses-sdk tools:overrideLibrary="com.estimote.sdk" />
但我不知道如何推翻,例如bluetooth_le指令。 我尝试解压缩'aar',更改Manifest并重新打包为.aar扩展名的zip,但我得到:
Error:Execution failed for task ':idoms-android:processIDomsAndroidDevDebugManifest'.
> com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: /Users/Luuk/Documents/Java/idoms-android/idoms-android/build/intermediates/exploded-aar/estimote-sdk-preview/AndroidManifest.xml (No such file or directory)
甚至认为该文件存在。任何帮助将不胜感激!
答案 0 :(得分:0)
您应该考虑创建两种版本的apk,一种支持BLE并且包含您要使用的SDK,另一种不支持BLE。
如果您创建两种版本的应用程序,让我们称它们为“ble”和“normal”,那么您可以在Gradle构建中使用bleCompile 'yourDependency'
和normalCompile 'yourDependency'
声明一些特定于特定于风格的依赖项文件。
答案 1 :(得分:0)
@Luuk
我是Estimote Android SDK的作者。
对于下一个SDK版本,我们会将<uses-feature android:name="android.hardware.bluetooth_le">
更改为required=false
。