我使用eclipse进行谷歌Android开发.
我创建了一个库项目([x] Is Library在Android设置中),其中包含一个外部jar文件(Referenced Libraries).此库项目在另一个项目(将使用库项目的实际项目)中引用.这是通过在Android设置下添加项目来完成的.
源编译,但如果我想在设备上执行它,我得到一个类的NoClassDefFoundError,该类位于库项目中包含的jar文件中.
编辑:将jar文件添加到导出的条目中([x] my.jar在Order and Export库项目的-Tab上)
是否有一种干净的方式让这个工作?
添加依赖项有哪些优点/缺点build.gradle,而不是将它们添加为依赖库?
dependencies {
compile project(':library')
...
compile 'com.stackoverflow.android:some-great-library:1.0'
...
}
Run Code Online (Sandbox Code Playgroud)
在开发Android项目的过程中,我经常遇到一些很棒的库,它们都是我一直在寻找的精确解决方案.然而,正如我所需要的只是这些特定图书馆所提供的一小部分,我担心如果添加它们就像Gradle dependencies是一种过度杀伤力.
是否添加依赖项:
以明显的速度减慢编译时间?
增加release-apk和debug-apk的大小,增加依赖的大小?
dependencies android gradle android-library android-gradle-plugin
TL\'DR:在此 Android Kotlin 库中,我从 Gradle 5.6.4 更新到 6.6.1(提交d5d8d2)。现在我无法再依赖 aar 来构建项目了。
我构建aar并将其部署到mavenLocal ...
\n$ ./gradlew clean :roadsigns:assemble\n$ ./gradlew publishToMavenLocal\nRun Code Online (Sandbox Code Playgroud)\n...然后在示例 Androidapp模块中引用已部署的库工件。mavenLocal()首先,我在根build.gradle文件中添加:
allprojects {\n repositories {\n google()\n mavenCentral()\n jcenter()\n mavenLocal() // <-- Add this\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我mavenLocal()直接引用依赖项:
dependencies {\n implementation\n // implementation project(":roadsigns")\n implementation "info.metadude.kotlin.library.roadsigns:roadsigns:$version"\n implementation Libs.kotlinStdlib\n // ...\nRun Code Online (Sandbox Code Playgroud)\n当我构建示例应用程序时,我收到以下构建错误:
\n$ ./gradlew …Run Code Online (Sandbox Code Playgroud) 我有一个android库项目和可重用的可绘制资源.
让我们说包名是:com.vijay.mylib;
然后我有一个主项目,它使用上面的库项目.
让我们说它的包名是:com.vijay.myproject.
考虑到我已正确链接库项目与我的主项目.
在我的主项目中,我有一个名为main.xml的布局.我想在main.xml中使用一些可绘制的rom库项目.我怎么能在xml中做到这一点?
以"@ drawable/myImage"这样的正常方式引用对我来说不起作用.引用选择器窗口仅显示主项目中的drawables.不是来自图书馆项目.
(注意:两个项目都有不同的R.java包.它有什么用呢?)
我正在尝试为我的项目设置ActionBarSherlock和ViewPagerIndicator库,但我似乎遇到了一些问题.我早些时候给Jake Wharton(开发人员)发了几条消息,得到了一些回复,却无法到达任何地方 - 我认为他忙于其他一些事情.
我的问题是,对于VPI和ABS

两个库都没有任何错误地打开,我正在使用所有的编译器版本1.6.
有趣的是,如果我加载提供的样本 - 它们工作正常并链接到他的库; 但是当我把库添加到我的项目时 - 上面发生了.
eclipse android android-library android-viewpager actionbarsherlock
一个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
我有一个使用一些库的应用程序.
问题是当我尝试导出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库并提供最终版本.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库,它有一个assets带图像的文件夹.当我在另一个项目中使用它时,资产不会被复制.
其他人有这个问题吗?
我正在制作一个安卓库.在我的库中,我想允许用户在后台或主线程中执行特定任务.
我想做这样的事情.
第一种情景
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()它时将在主线程上运行.否则相同的代码应该在后台运行.我不想写重复的代码.
您可以参考现有的库.
所以两个库具有相同的功能,并且还有更多的库可以做同样的事情,我想做同样的事情.
如果有人为我提供一个小例子,那就太好了.