当我使用WorkManager的PeriodicWorkRequest时,我一直在尝试制作一个android库。它作为主机开发应用程序中的模块完美运行。但是,一旦我将其导出为 aar 文件并在另一个应用程序中使用它,我会收到以下错误,
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/Worker;
.
.
.
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.work.Worker" on path: DexPathList[[zip file "/data/app/com.example.testapp-0WusKIYjC1qsHRMASLjm1Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.testapp-0WusKIYjC1qsHRMASLjm1Q==/lib/arm64, /system/lib64, /vendor/lib64]]
Run Code Online (Sandbox Code Playgroud)
知道我该如何解决这个问题吗?
我正在使用 Spotify SDK 开发 Android 应用程序,并且正在遵循快速入门指南
但是当我导入 .aar 并同步项目时,出现以下错误
在项目“:app”中找不到路径为“:spotify-app-remote”的项目。
我正在使用com.android.library插件开发一个安卓库(打包为.aar).我使用https://facebook.github.io/react-native/docs/embedded-app-android.html中提供的说明,熟悉我的活动.
但是,当我gradlew.bat build在我的项目中运行时,生成的包./build/outputs/arr/{projectname-(debug/release)}.aar不包含bundle,index.android.bundle因此本机无法找到它.
是否还需要执行其他步骤才能使用gradle生成和打包捆绑包?
谢谢
伙计们,我正在开发一个需要外部应用程序依赖项(.aar文件)的android应用程序,该库应用程序具有其自己的文件提供程序,而我的应用程序也具有其自己的文件提供程序。
当我将库作为单独的应用程序运行时,库运行良好,但是当我将其包含在应用程序中时,相机功能将无法正常工作。我收到以下错误
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
Run Code Online (Sandbox Code Playgroud)
跟随应用程序的清单文件
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)
以下是lib模块的清单文件
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.ma.bot.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)
应用程序和lib模块具有不同的包名称,如何将这2个文件提供程序添加到应用程序中,我也尝试使用多个文件提供程序,但是在应用程序编译时出现XML解析错误。
android:authorities="${applicationId}.provider;com.ma.bot.provider"
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题。
我正在开发自己的 SDK,而这又取决于某些 3rd 方 SDK。例如 - OkHttp。
我应该将 OkHttp 添加到我的build.gradle,还是让我的 SDK 的用户包含它?在这种情况下,他们可能会“无论如何”使用它,因此可以肯定地说他们已经拥有它。
还有一点要补充 - 并非我的 SDK 的所有路径都需要“OkHttp”,因此,理论上,我的 SDK 的某些用户只能使用这些部分,而他的 APK 上没有 OkHttp。
我正在考虑的另一件事是:如果我确实将 OkHttp 嵌入到了build.gradle- 我的 SDK 的用户如何使用该 OkHttp 库,而不是使用另一个副本?
我正在开发一个工作的android库,我们正在使用maven存储库中没有的一些jar.但是,我们在法律上不允许将这些罐装入我们的库中,除了我们的库之外,消费者必须自己获取这些罐子.
我的问题是,我似乎无法要求我们的库的消费者提供这些罐子(我正在使用包含aar的测试应用程序).我试过这个类似问题的解决方案无济于事.
我已经尝试将它们设置为provided而不是compile在我的gradle文件中:
// Neither of these seem to fix the problem
compile files('libs/externalDep.jar')
provided files('libs/externalDep.jar')
Run Code Online (Sandbox Code Playgroud)
我也尝试将它们排除在包装选项中:
packagingOptions { exclude 'libs/externalDep.jar }`
Run Code Online (Sandbox Code Playgroud)
我可以通过将其添加到android我的标签中来排除它们build.gradle:
android.libraryVariants.all { variant ->
variant.outputs.each { output ->
def packageLib = output.getPackageLibrary()
packageLib.exclude('libs/externalDep.jar')
}
Run Code Online (Sandbox Code Playgroud)
他们没有被添加到aar但是构建测试应用程序给了我:
com.android.build.api.transformTransformException:
com.android.builder.packaging.DuplicateFileException:
Duplicate files copied in APK VERSION.txt
File1: path/to/jar/in/test/app/project/externalDep.jar
File2: path/to/build/intermediates/exploded-aar/.../jars/classes.jar
Run Code Online (Sandbox Code Playgroud)
为了澄清,我并不关心maven repo依赖,那些工作正常.我只是希望使用该库的人必须获得并添加我们正在使用的那些罐子.
当然,有一个不太复杂的方式来指定这个?
我决定将Android * aar库上传到Maven Central,我知道Android Studio默认使用JCenter,它比Maven Central更好。我试图在bintray上创建一个帐户,但是我已经创建了一个Trial Account。