标签: android-library

适用于Android的外部库项目的NoClassDefFoundError

我使用eclipse进行谷歌Android开发.

我创建了一个库项目([x] Is Library在Android设置中),其中包含一个外部jar文件(Referenced Libraries).此库项目在另一个项目(将使用库项目的实际项目)中引用.这是通过在Android设置下添加项目来完成的.

源编译,但如果我想在设备上执行它,我得到一个类的NoClassDefFoundError,该类位于库项目中包含的jar文件中.

编辑:将jar文件添加到导出的条目中([x] my.jarOrder and Export库项目的-Tab上)

是否有一种干净的方式让这个工作?

java eclipse android android-library

18
推荐指数
2
解决办法
2万
查看次数

Gradle:添加依赖项的优点/缺点

添加依赖项有哪些优点/缺点build.gradle,而不是将它们添加为依赖库?

dependencies {
    compile project(':library')
    ...
    compile 'com.stackoverflow.android:some-great-library:1.0'
    ...
}
Run Code Online (Sandbox Code Playgroud)

在开发Android项目的过程中,我经常遇到一些很棒的库,它们都是我一直在寻找的精确解决方案.然而,正如我所需要的只是这些特定图书馆所提供的一小部分,我担心如果添加它们就像Gradle dependencies是一种过度杀伤力.


根据@ CommonsWare的评论,我有更具体的问题.

是否添加依赖项:

  1. 以明显的速度减慢编译时间?

  2. 增加release-apk和debug-apk的大小,增加依赖的大小?

dependencies android gradle android-library android-gradle-plugin

18
推荐指数
2
解决办法
1855
查看次数

Android / 任务 checkDebugAarMetadata 执行失败 / 执行 CheckAarMetadataWorkAction 时发生失败

TL\'DR:此 Android Kotlin 库中,我从 Gradle 5.6.4 更新到 6.6.1(提交d5d8d2)。现在我无法再依赖 aar 来构建项目了。

\n

测试设置

\n

我构建aar并将其部署到mavenLocal ...

\n
$ ./gradlew clean :roadsigns:assemble\n$ ./gradlew publishToMavenLocal\n
Run Code Online (Sandbox Code Playgroud)\n

...然后在示例 Androidapp模块中引用已部署的库工件。mavenLocal()首先,我在根build.gradle文件中添加:

\n
allprojects {\n    repositories {\n        google()\n        mavenCentral()\n        jcenter()\n        mavenLocal() // <-- Add this\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

mavenLocal()直接引用依赖项:

\n
dependencies {\n    implementation\n    // implementation project(":roadsigns")\n    implementation "info.metadude.kotlin.library.roadsigns:roadsigns:$version"\n    implementation Libs.kotlinStdlib\n    // ...\n
Run Code Online (Sandbox Code Playgroud)\n

错误

\n

当我构建示例应用程序时,我收到以下构建错误

\n
$ ./gradlew …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library aar maven-publish

18
推荐指数
2
解决办法
4万
查看次数

如何将库项目中的drawable引用到android中的主项目布局?

我有一个android库项目和可重用的可绘制资源.
让我们说包名是:com.vijay.mylib;

然后我有一个主项目,它使用上面的库项目.
让我们说它的包名是:com.vijay.myproject.

考虑到我已正确链接库项目与我的主项目.

在我的主项目中,我有一个名为main.xml的布局.我想在main.xml中使用一些可绘制的rom库项目.我怎么能在xml中做到这一点?
以"@ drawable/myImage"这样的正常方式引用对我来说不起作用.引用选择器窗口仅显示主项目中的drawables.不是来自图书馆项目.

(注意:两个项目都有不同的R.java包.它有什么用呢?)

layout android reference drawable android-library

17
推荐指数
1
解决办法
8458
查看次数

Eclipse不会将项目识别为库(ActionBarSherlock/ViewPagerIndicator)

我正在尝试为我的项目设置ActionBarSherlockViewPagerIndicator库,但我似乎遇到了一些问题.我早些时候给Jake Wharton(开发人员)发了几条消息,得到了一些回复,却无法到达任何地方 - 我认为他忙于其他一些事情.

我的问题是,对于VPI和ABS 对于VPI和ABS

两个库都没有任何错误地打开,我正在使用所有的编译器版本1.6.

有趣的是,如果我加载提供的样本 - 它们工作正常并链接到他的库; 但是当我把库添加到我的项目时 - 上面发生了.

eclipse android android-library android-viewpager actionbarsherlock

17
推荐指数
1
解决办法
1万
查看次数

Android - 在应用项目中拥有提供商权限

一个android库项目包含一些提供程序,其权限在合同类中定义如下:

public static final String CONTENT_AUTHORITY = "my.com.library.providers.tester";
private static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);
Run Code Online (Sandbox Code Playgroud)

现在有很多应用程序项目使用这个库项目.我目前面临的问题是,对于每个应用程序项目,我需要在库项目中为每个应用程序设置一个单独的分支,以便拥有唯一的内容权限.这会产生一些版本管理问题(例如将功能/错误修复从一个分支传播到每个其他分支等).相反,我想将定义内容权限的责任委托给app项目.有没有办法实现这个目标?

java android authority android-contentprovider android-library

17
推荐指数
2
解决办法
8117
查看次数

在APK内的同一路径上复制文件

我有一个使用一些库的应用程序.

问题是当我尝试导出apk文件时,我得到了"在APK内的同一路径上复制文件".

这是日志:

org.eclipse.core.runtime.CoreException: Duplicate files at the same path inside the APK
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:284)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:295)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:232)
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:217)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: com.android.sdklib.build.DuplicateFileException: Duplicate files at the same path inside the APK
at com.android.sdklib.build.ApkBuilder$JavaAndNativeResourceFilter.checkEntry(ApkBuilder.java:123)
at com.android.sdklib.internal.build.SignedJarBuilder.writeZip(SignedJarBuilder.java:225)
at com.android.sdklib.build.ApkBuilder.addResourcesFromJar(ApkBuilder.java:563)
at com.android.ide.eclipse.adt.internal.build.BuildHelper.finalPackage(BuildHelper.java:372)
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:255)
... 4 more
Run Code Online (Sandbox Code Playgroud)

任何人都必须解决这个问题?

非常感谢你.

编辑:解决方案

我弄清楚问题是什么.我包含了一个包含AndroidManifest.xml文件的JAR文件,该文件与我自己的项目的AndroidManifest.xml文件冲突.我的实例中的解决方案是重建JAR文件,确保它排除了自己的AndroidManifest.xml版本,然后将新版本的JAR文件重新包含到我的项目中.执行此操作后,您可能需要清理项目.

android android-library

17
推荐指数
2
解决办法
8184
查看次数

创建STANDALONE Android Studio(1.5)库项目

我需要创建一个Android库并提供最终版本.jar文件给客户端.

我是Android开发的新手(三天).我在过去的4年里一直在开发iOS.我浏览了Google的官方文档和教程,以了解该平台(我不希望显而易见的是iOS人正在编写该库).

我对Java没有任何问题,但我使用的是Android.我决定使用Android Studio,因为它是官方IDE.我使用的是1.5版.

问题:

正如我所说,我需要创建一个Android库并提供.jar文件给客户端.我希望这个Android Studio项目是一个独立的库项目,它有自己的单元测试.我不想创建一个不必要的App项目,然后添加一个Android库模块.我想创建一个单独的 App项目,其中包括此项目.jar文件,所以我可以用它到达我们客户的方式来测试它.

我已经在网上看到了很多关于如何实现这一点的选项,但是所有这些选项看起来都有点"hacky"(例如,重命名这个文件夹,更改app-project-setting并使其成为一个库项目).是否无法从Android Studio中的新项目向导创建库项目?

关于如何处理这个问题,您有什么建议?如果没有这些技巧来重新配置App项目,是否有一些优雅的解决方案?

编辑

以下是新项目向导的外观: 在此输入图像描述

在此输入图像描述

我在这里选择"添加无活动" 在此输入图像描述

android android-library android-studio

17
推荐指数
1
解决办法
4622
查看次数

Android库资源文件夹不会被复制

我正在创建一个Android库,它有一个assets带图像的文件夹.当我在另一个项目中使用它时,资产不会被复制.

其他人有这个问题吗?

android android-library

16
推荐指数
2
解决办法
2万
查看次数

如何使用android实现带有FutureTask或BackgroundTask的.get功能?

我正在制作一个安卓库.在我的库中,我想允许用户在后台或主线程中执行特定任务.

我想做这样的事情.

第一种情景

MyLibabry.with(context)
     .performSomeTask(<params>)
     .execute();
Run Code Online (Sandbox Code Playgroud)

当用户编写上述代码段时.任务应该在后台执行.所以我将使用任何监听器返回任务的结果.

现在考虑下面的代码段.

第二种情景

Result result = MyLibabry.with(context)
     .performSomeTask(<params>)
     .get();
Run Code Online (Sandbox Code Playgroud)

现在,当用户在语句末尾附加get()时.该任务应该在主线程上执行并阻止其他线程.这就是结果立即初始化的原因.

所以我的问题是我如何实现如果用户附加.get()的功能,那个线程performSomeTask()应该在主线程上运行.否则在后台.

注意:不要专注于返回结果.我将在Java Generics中实现它.我想知道的是如何使代码可重用,以便当用户只附加.get()它时将在主线程上运行.否则相同的代码应该在后台运行.我不想写重复的代码.

您可以参考现有的库.

  • AsyncTask - 用于执行后台任务的Android官方.
  • ION - 用于下载/上传文件

所以两个库具有相同的功能,并且还有更多的库可以做同样的事情,我想做同样的事情.

如果有人为我提供一个小例子,那就太好了.

java multithreading android android-library

16
推荐指数
1
解决办法
1717
查看次数