Articles of android library

如何在另一个库中包含Android库模块?

我正在构build一个Android库,打包成一个aar并分发给第三方开发者。 结构非常简单: 项目— libraryA — libraryB libraryA需要libraryB,这就是为什么在它的gradle文件中有这个: compile project(':libraryB') 和settings.gradle有 include ':libraryB', ':libraryA' 但是,如果我把这个项目build成一个aar,它只包含libraryA。 我错过了什么? 我读了这个回应: Android Studio如何从多个库项目打包单个AAR? 这是不可能的? 我会假设把你的代码分成多个模块是不是不好的做法?

Android库 – 使用Gradle将多个变体发布到本地Maven仓库

我正在使用Android Gradle插件0.13.2,Android Studio 0.8.11,Gradle 2.1和maven插件。 我想用一个命令(任务)将我的Android库的多个变体(flavor + build type)安装到本地Maven仓库。 目前,Android Gradle插件0.13.2允许我将publishNonDefault标志设置为发布所有变体,但是正如文档所述,它将使用与Maven Repository不兼容的分类器发布变体。 我现在的解决方法是使用defaultPublishConfig“myVariant”并更改我拥有的每个变体。 apply plugin: 'com.android.library' apply plugin: 'maven' android { defaultPublishConfig "myVariant" . . . } task installArchives(type: Upload) { repositories.mavenInstaller { configuration = configurations.getByName(Dependency.DEFAULT_CONFIGURATION) pom.groupId = "com.company" pom.artifactId = "mylibrary" pom.version = "1.0.0-myVariant" } } 我希望有一个任务能够将所有变体正确地发布到本地Maven仓库。

如何从应用程序的AndroidManifest.xml中的库项目中引用一个图标

我正在尝试从库项目派生的所有应用程序使用相同的应用程序图标。 我认为这将会像实现在这个线程中提供的build议一样简单,但不幸的是它不工作。 我所做的是添加到应用程序的AndroidManifest.xml的<manifest>标签下面一行: xmlns:mylib="http://schemas.android.com/apk/res/com.example.baseapp" 和同一个AndroidManifest.xml文件中的几行一样,将典型的@drawable/icon更改为: <application android:icon="@mylib:drawable/icon"> 但它不工作! 相反,Eclipse告诉我: 错误:错误:找不到与给定名称相匹配的资源(位于'icon',值为'@omlib:drawable / icon')。 显然,从布局XML和清单XML引用drawables是不一样的。 如何从应用程序的AndroidManifest.xml中的库项目引用图标?

升级到Proguard 4.8后,导出应用程序失败

我刚刚将我的Android SDK,ADT和Proguard升级到了最新,最好的版本。 我的项目编译生成并在debugging模式下运行良好,但只要我尝试导出它的签名版本APK,我收到导出向导错误没有任何错误日志消息在Eclipse控制台上!* 如果我尝试通过Window->Show View->Error Log来查看错误日志,我所看到的更多的是相同的: 我不知道该怎么做,因为无论Eclipse还是Proguard都不会给出任何有关问题的提示 。 我的项目导出很好,直到最近的升级。 没有build立警告。 没有皮棉警告! 我在${sdk.dir}\tools\proguard\proguard-android.txt使用Android的标准configuration文件: -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose -dontoptimize -dontpreverify -keepattributes *Annotation* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgent […]

更新到ADT 14后,“转换为Dalvik格式失败,出现错误1”

在更新到最新的开发工具ADT 14之后,包含库项目的我的Android项目将不再运行产生错误: Dx UNEXPECTED TOP-LEVEL EXCEPTION: … already added: … … Conversion to Dalvik format failed with error 1 其他线程描述这个问题的解决scheme,包括删除和重新添加项目不起作用。

Android库项目 – 定义类

嘿! (在这里很长的职位道歉) 我正在编写几个基于相同代码的应用程序。 每个应用程序都会有所不同,有些会有新的活动,都会有不同的资源分配。 我正在尝试使用Android库项目,以便我可以将所有常用代码放在一个位置,因此只需更改一次,所有项目都将被更新。 现在,资源是一个简单的解决scheme,因为我可以在主应用程序中定义每个资源,只要命名约定保持不变,这些资源就会覆盖库项目中的资源。 现在,我的问题是,我怎样才能做到这一点,但对于类? 例如,生病有一个基础视图作为所有视图的通用代码的包装。 在这里,我开展了各种活动。 如果这三个应用程序需要启动不同的活动,因为它们将包含不同的UI和function? 我将如何去做这件事? 图书馆项目永远不会知道主项目想要使用不同的活动,因为它已经被编译。 我有几个解决scheme,我想到了,但我想知道是否有其他人有一些想法? 这对任何反馈都会有很大的帮助: 要启动的库项目中的活动存储对要加载的类的引用,这将在启动时在主应用程序中定义。 这是图书馆项目调用这个活动的时候,它可以加载它被告知的内容。 我将保留库项目活动中不会更改的所有function。 然后我扩展这个活动,并重写onCreate来做我所需要的(比如加载不同的布局,设置视图等)。 现在这有一个缺点,因为我必须在我的主应用程序中而不是在库项目中定义大部分入口点。 我希望你能跟随我的问题在这里。 请问我是否解释得不好。 谢谢, 亚当

Eclipse:覆盖project.properties中定义的库path

我使用ActionBarSherlock作为库。 我们没有将ABS纳入我们的存储库,因此参与我们项目的每个人都必须单独下载并安装它。 ActioBarSherlock是一个Android库项目,我已经通过在同一个Eclipse工作区中打开它和我的项目(它们都不被复制到工作区,它们都存在于另一个文件夹中)并通过以下方式将其添加到我的project.properties来运行它: 引用一个库项目 。 该引用path是相对的,因为每个人都可能在不同的文件夹中有ABS,所以我们在Eclipse的project.properties文件中也有不同的pathandroid.library.reference.1 。 有没有什么办法在本地覆盖库path,以便我们可以在我们的repo中有project.properties ,但是Eclipse会在本地使用其他path? 目前我必须手动修复这个path,因为不同的path,我每次从我们的回购中拉出来。 还有其他的* .properties文件,但Eclipse会忽略它们: local.properties 构build系统的可自定义的计算机特定属性。 如果您使用Ant构build项目,则包含SDK安装的path。 由于该文件的内容特定于SDK的本地安装,因此不应在源版本控制系统中维护local.properties。 如果您使用Eclipse,则不使用此文件。 ant.properties 构build系统的可定制属性。 您可以编辑此文件以覆盖Ant使用的默认构build设置,并提供密钥库和密钥别名的位置,以便构build工具可以在发布模式下构build时签署您的应用程序。 该文件是该项目的组成部分,因此将其保存在源版本控制系统中。 如果您使用Eclipse,则不使用此文件。

无法执行dex:多个dex文件定义Lcom / nineoldandroids / animation / Animator $ AnimatorListener;

我在构buildapk时反复出错。 做了基本的东西,如清理,更新和重新启动日食,但仍然没有得到解决。 这里是错误日志。 com.android.dx.util.DexException: Multiple dex files define Lcom/nineoldandroids/animation/Animator$AnimatorListener; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531) at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168) at com.android.dx.merge.DexMerger.merge(DexMerger.java:186) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300) at com.android.dx.command.dexer.Main.run(Main.java:232) at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:187) at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:813) at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:597) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:726) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:321) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:396) at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) at […]

如何设置Android库模块,并在Android Studio中被多个项目引用?

我的公司在Android Studio上制作了几个Android项目,它们都共享一些类似的代码,比如自定义视图,自定义的HTTP客户端等等。 我面临的问题是,我是Android Studio的新手,我不确定如何将这些通用代码跨越多个项目提取到单个Android库模块,这些模块将被这些项目引用。 在Eclipse中,它非常简单,只需创build一个新的Android库项目,然后将代码移到那里,然后设置Android应用程序项目来引用公共库。 Android Studio如何完成这样的重构?

如何dynamic地用Gradle从aar中排除文件?

我有Android库( aar ),包含(和构build模块时)构build本地代码: apply plugin: 'com.android.library' android { compileSdkVersion 16 buildToolsVersion "25.0.0" defaultConfig { minSdkVersion 11 targetSdkVersion 16 versionCode 1 versionName "1.0" ndk { abiFilters 'armeabi-v7a' } } externalNativeBuild { ndkBuild { path 'jni/Android.mk' } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] jni.srcDirs = ['jni'] } } packagingOptions { […]