我创建了库项目并使用了一些依赖项。然后我构建“aar”文件并将其作为新模块导入到新项目中。问题是aar项目的依赖项没有导入到新项目环境中?你有什么主意吗?



我正在创建一个aar库,我需要获得文件aar packagename的标志aar。
我正在尝试下面的代码,但getPackageName()方法没有返回aar packagename
Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs){
Log.i("MyApp", "Signature hashcode : " + sig.hashCode());
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个最初使用 Java 编码的 Android 库,它输出一个.aar我在一些项目中使用的文件。
当我将此库包含在项目(使用 Kotlin 创建的 Android 项目)中并且决定调试该项目中的代码时,当调试器到达包含库的类的行时,它会成功进入该类,并且我可以看到源代码当我调试该类的代码时。我可以在库的类中继续逐行调试,一切都按预期工作。
然而,我最近决定将此库转换为 Kotlin,但现在,当调试器到达该库的类之一并且我进入该类继续在那里调试时,我无法再看到整个源代码。我只能看到方法签名,但看不到方法定义。我只看到类似的东西:
public class ClassA {
public fun function1(): kotlin.Unit
public fun function2(): kotlin.Unit
public fun function3(): kotlin.Unit
}
Run Code Online (Sandbox Code Playgroud)
我没有在库的项目设置中做任何其他事情。我只是将文件从 转换.java为.kt.
到目前为止,我尝试过以下一些方法来解决此问题:
build.gradle库中文件的依赖项列表中。任何人都知道为什么会发生这种情况?
我有一个包含多个模块的 Android 项目。它还有一个由多个模块组成的库,作为 git 子模块。该库是它自己的独立项目,带有用于测试的应用程序模块。
- Project
- app
- module1
- module2
- library (git submodule)
- app (sample app module for testing library)
- module1
- module2 (depends on aar)
Run Code Online (Sandbox Code Playgroud)
更新到 Gradle 6.2.1,我遇到构建错误:
构建 AAR 时不支持直接本地 .aar 文件依赖项。生成的 AAR 将被破坏,因为任何本地 .aar 文件依赖项中的类和 Android 资源都不会打包在生成的 AAR 中。在这种情况下,以前版本的 Android Gradle 插件也会产生损坏的 AAR(尽管不会抛出此错误)。:module2 项目的以下直接本地 .aar 文件依赖项导致了此错误: .../master/module2/libs/my_dependency.aar
现在,如果我通过将 aar 作为模块导入来在库项目中修复此问题,则示例应用程序可以正常工作。但是,如果我在主项目中使用相同的库分支,则会收到有关 aar 模块没有 AndroidManifest.xml 或未定义compileSdkVersion 的错误。如果我修复这两个错误,那么仍然存在类未找到错误。
git 子模块是否支持这种类型的 aar 模块?此外,aar 依赖项使用 gradle 5.4.1 可以正常工作。
我正在尝试将文档包含到 Maven 发布中。该出版物本身运作良好。我还可以使用以下设置将源和 javadoc 发布到 gitlab 包。我可以下载并打开包含这些类的注释/文档的javadoc.jar 和sources.jar。然而,当我将该库作为我的 android 应用程序的依赖项作为 gradle 依赖项包含在内时,我无法使用 F1 或打开该类时看到我的接口/类上的注释。
任何帮助,将不胜感激。
使用 kotlin DSL
id("maven-publish")
id("org.jetbrains.dokka")
Run Code Online (Sandbox Code Playgroud)
tasks {
dokka {
outputFormat = "javadoc"
outputDirectory = "$buildDir/javadoc"
moduleName = rootProject.name
}
}
val dokkaJar by tasks.creating(Jar::class) {
group = JavaBasePlugin.DOCUMENTATION_GROUP
description = "Assembles Kotlin docs with Dokka"
archiveClassifier.set("javadoc")
from(tasks.dokka)
dependsOn(tasks.dokka)
}
val sourcesJar by tasks.registering(Jar::class) {
archiveClassifier.set("sources")
from(android.sourceSets.getByName("main").java.srcDirs)
}
artifacts {
archives(sourcesJar)
archives(dokkaJar)
}
Run Code Online (Sandbox Code Playgroud)
afterEvaluate {
publishing {
publications {
create<MavenPublication>("snapshot_aar") {
groupId = libGroupId
artifactId = …Run Code Online (Sandbox Code Playgroud) 我想将 android 库构建为 AAR 文件,其中包含输出 AAR 文件中的依赖项。它使用另一个 AAR 文件作为 libs 文件夹中的依赖项。
构建库显示此错误:
Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR.
我的 proguard-rules.pro 文件是
-dontwarn javax.annotation.Nullable
-dontwarn com.facetec.sdk.**
-keep class com.facetec.sdk.** { *; }
Run Code Online (Sandbox Code Playgroud)
我还尝试使用https://github.com/kezong/fat-aar-android库并导入facetec-sdk模块作为嵌入项目,但构建命令显示 lint 错误
我们的 Android 项目是一个 monorepo,包含几个应用程序模块,甚至更多的库模块。其中一个库应该可供其他开发人员访问,因此我们决定将其部署在 MavenCentral 上。我们称之为图书馆吧L。然而,该库还包含 monorepo 内对另一个模块的依赖关系(我们称之为 module m)。为了测试L其他开发人员是否可以正确访问该库,我们创建了一个演示Android项目。但是,当尝试包含发布库的依赖项时L,通常一切都很好,只是m在演示 Android 项目中无法解析该模块。
可以理解的是,该模块m无法解析,因为它既不能在 MavenCentral 上使用,也不能作为 AAR 文件使用。我们无法发布该模块m,因为它不应该可供其他人获取,但将其作为 AAR 文件包含也不起作用。终端抛出错误:
构建 AAR 时不支持直接本地 .aar 文件依赖项。生成的 AAR 将被破坏,因为任何本地 .aar 文件依赖项中的类和 Android 资源都不会打包在生成的 AAR 中。在这种情况下,以前版本的 Android Gradle 插件也会产生损坏的 AAR(尽管不会抛出此错误)。
所以问题来了 - 一个包含无法公开的子模块的项目如何发布到存储库mavenCentral?
我们正在寻找的主要目标是通过提供 .aar 文件并为其提供客户端来创建 React Native 应用程序的 SDK,以便我们的应用程序可以以最少的配置集成到客户端(本机)应用程序中,并且无需实际交换代码两端(不包括一些充当客户端和我们的应用程序之间通信颂歌的自定义文件)。
我已经阅读了以下文章以实现相同的目标:-
https://medium.com/@gauravasrivastava89/sdk-development-with-react-native-part-1-46580839eae9
虽然遵循同一个 iam 的步骤,但无法跳过我必须安装 maven-publish 的步骤,因为我找不到它,或者它可能已被废弃。 Maven 发布的图像
我需要帮助重新分级以下 2 个用例。
1.是否有更简单的方法来生成 .aar 文件,而无需客户端代码库,或者如果需要更新的库和方法。
2.如果有任何其他方法可以实现共享sdk并包含给客户而不暴露代码的目标,那将非常有帮助。
我有一个多模块项目,我需要为我的 aar 创建一个模块。
这是 gradle 文件:
configurations.maybeCreate("default")
artifacts.add("default", file('my-aar-1.0.0.aar'))
Run Code Online (Sandbox Code Playgroud)
还有另一个模块可以实现这个工件。当我./gradlew build直接从 android studio 运行时工作正常,但在我的 CI 脚本中我遇到了这个错误:
Install Android SDK Platform-Tools (revision: 34.0.5) finished.
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':features:app:buildProdBetaPreBundle'.
> Could not resolve all task dependencies for configuration
':features:app:prodBetaRuntimeClasspath'.
> Could not resolve project :myaar.
Required by:
project :app > project :module:secondmodule
> No matching configuration of project :myaar was found. The consumer was configured to …Run Code Online (Sandbox Code Playgroud) 我有一个android的.aar文件.我试图在我的xamarin.android应用程序中使用它.我按照链接中给出的步骤进行了操作https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/
但是当我尝试构建我的库时,我遇到了错误
"没有实现接口成员'IComparable.CompareTo(Object)'"
我找到了一些解决方案,其中提到在metadata.xml中我们需要添加一些属性.所以我在那里添加了以下行
path="/api/package[@name='com.logicjunction.ljindoorandroidsdk']/class[@name='FloorPlanBeaconsMapping']/implements[@name='java.lang.Comparable']"
Run Code Online (Sandbox Code Playgroud)
名称= "类型"> java.lang.Comparable的>
但仍然得到同样的错误.我怎么解决这个问题?
aar ×10
android ×9
gradle ×4
gitlab ×2
sdk ×2
git ×1
java ×1
kotlin ×1
maven ×1
multi-module ×1
package-name ×1
publish ×1
react-native ×1
xamarin ×1