有条件地包含 AAR 文件
Including an AAR file conditionally
我正在使用 Estimote SDK,它作为 AAR 文件包含在我的项目中。
我想在支持蓝牙 LE 的设备上使用 SDK,但也想让没有支持的硬件的用户安装。
Estimote SDK 清单包括:
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
这会阻止应用程序安装在很多设备上。
我可以否决 android:minSdkVersion:
<uses-sdk android:minSdkVersion="18" />
和
<uses-sdk tools:overrideLibrary="com.estimote.sdk" />
但我不知道如何否决例如bluetooth_le 指令。
我尝试解压缩 'aar',更改清单并重新打包为扩展名为 .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)
甚至认为文件就在那里。如有任何帮助,我们将不胜感激!
您应该考虑创建 2 种风格的 apk,一种支持 BLE 并包含您要使用的 SDK,另一种不支持 BLE。
如果您为您的应用创建了两种风格,我们称它们为 "ble" 和 "normal",然后您可以使用 bleCompile 'yourDependency'
和 [=11 声明一些特定于风格的依赖项=] 在你的 Gradle 构建文件中。
@卢克
我是 Estimote Android SDK 的作者。
我们将在下一个 SDK 版本中将 <uses-feature android:name="android.hardware.bluetooth_le">
更改为 required=false
。
我正在使用 Estimote SDK,它作为 AAR 文件包含在我的项目中。 我想在支持蓝牙 LE 的设备上使用 SDK,但也想让没有支持的硬件的用户安装。
Estimote SDK 清单包括:
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
这会阻止应用程序安装在很多设备上。
我可以否决 android:minSdkVersion:
<uses-sdk android:minSdkVersion="18" />
和
<uses-sdk tools:overrideLibrary="com.estimote.sdk" />
但我不知道如何否决例如bluetooth_le 指令。 我尝试解压缩 'aar',更改清单并重新打包为扩展名为 .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)
甚至认为文件就在那里。如有任何帮助,我们将不胜感激!
您应该考虑创建 2 种风格的 apk,一种支持 BLE 并包含您要使用的 SDK,另一种不支持 BLE。
如果您为您的应用创建了两种风格,我们称它们为 "ble" 和 "normal",然后您可以使用 bleCompile 'yourDependency'
和 [=11 声明一些特定于风格的依赖项=] 在你的 Gradle 构建文件中。
@卢克
我是 Estimote Android SDK 的作者。
我们将在下一个 SDK 版本中将 <uses-feature android:name="android.hardware.bluetooth_le">
更改为 required=false
。