标签: android-library

如何从图书馆开始主要活动?

我正在使用项目 A 和库项目来开发我的 Android 应用程序。这两个项目都有活动。如果我当前在项目 A 中,那么只需导入它就可以轻松地在库项目中启动一个活动。但是,如果我来自图书馆项目中的活动,我不确定如何启动项目 A 中的活动。我试图使库项目独立于项目 A 的包名称,因为我将把它用于多个应用程序。关于如何做到这一点有什么想法吗?谢谢。

android android-library

5
推荐指数
1
解决办法
4023
查看次数

如何从库项目中引用应用程序主题属性?

我正在建立一个图书馆,并希望使其尽可能通用。

所以我想将textColora 的属性设置TextView为使用我的库的应用程序指定为它的primaryColor.

使用android:textColor="?colorPrimary"似乎给了我一种随机颜色,而不是我的测试应用程序中指定的颜色。这可能是因为它试图在库文件中查找该资源 ID,R.java而不是询问应用程序?

那么是否有可能引用库范围之外的颜色呢?我知道我可以通过引入自定义属性来解决此问题,但我想避免该解决方案,因为它要求库的用户更新其应用程序主题,并且它无法开箱即用。

android android-library android-theme android-styles

5
推荐指数
1
解决办法
1497
查看次数

如何将.aar库包含到android库.aar文件中

我无法分发单个库。

我有一个Main库,它正在使用Base库。现在我只需要分发将在应用程序项目中使用的单个主库。

要在应用程序项目中使用Main库,gradle 也要求添加Base库作为依赖项。

这会有帮助吗?

1)

I think Main library should have base library in it. So when I look at the sizes:
Base library : 5 MB
Main library : 500 kb 
Run Code Online (Sandbox Code Playgroud)

要使用单个库,我认为主库的大小应该是 5.5 MB。

2)

或者在应用程序项目中使用主库是否存在任何代码问题?通过它,不需要添加 Base 库作为依赖项。

再次解释

当前情况 -

Application project
              :
              :
     (depends):----> Main Library
              :
              :
              -----> Base Library
Run Code Online (Sandbox Code Playgroud)

它应该在哪里——

Application project
              :
              :                (internally depends upon)
     (depends):---------> Main Library ------------> Base Library
Run Code Online (Sandbox Code Playgroud)

android android-library android-gradle-plugin

5
推荐指数
0
解决办法
2303
查看次数

创建具有自定义命名空间(如 android.R)的 android 资源库?

我正在开发一个 Android 项目(使用 Android Studio、Gradle),我将一些逻辑和小部件拆分为子库项目。

我发现R.string.xxx或其他R引用已合并,但如果它与应用程序模块同名,我无法获取库的资源值。(我使用了[libpacakgename].R.string.appname,但资源仍然是应用程序模块的,而不是库的。)

有没有一种方法可以使用 Android 资源这样的资源:android.R.string.xxx,或者在 xml 中myapp:string/xxx,其中“myapp”成为我的自定义命名空间或类名。

顺便说一句,我还发现有时attr id会发生冲突,导致编译失败。

java android android-library android-resources

5
推荐指数
1
解决办法
1447
查看次数

仅创建 Android 库项目

据我研究,似乎我只能Android Library Android 项目中创建一个。有什么方法可以创建一个独立的 Android 库而不将其放在应用程序内或旁边?

AAR我的场景是在这个 Android 库上工作,并在编译时创建一个库,然后我可以在单独的Android 项目中引用它。

到目前为止,我有一个项目正在运行,但它有一个应用程序和一个处于同一级别的库。我通过创建一个新项目来实现这一点,然后:

文件 -> 新建 -> 新模块 -> Android 库。

android android-library

5
推荐指数
1
解决办法
1433
查看次数

如何在应用程序中使用库的manifestPlaceholders?

我正在尝试将OneSignal SDK添加到我的 Android 库项目中。因此,我在我的库中添加了必要的依赖项,build.gradle并且还manifestPlaceholders

        // One Signal:
        manifestPlaceholders = [onesignal_app_id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
                                // Project number pulled from dashboard, local value is ignored.
                                onesignal_google_project_number: "XXXXXXXXXXXX"]
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试构建一个使用我添加了 OneSignal 的库的演示应用程序时,我收到以下错误:

/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error:
    Attribute meta-data#onesignal_app_id@value at AndroidManifest.xml requires a placeholder substitution but no value for <onesignal_app_id> is provided.
/path_to_project/demoapp/demoapp/src/main/AndroidManifest.xml Error:
    Attribute meta-data#onesignal_google_project_number@value at AndroidManifest.xml requires a placeholder substitution but no value for <onesignal_google_project_number> is provided.

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.

:demoapp:processDebugManifest FAILED

FAILURE: Build failed …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-library android-gradle-plugin onesignal

5
推荐指数
1
解决办法
3246
查看次数

如何从gradle依赖中获取.AAR文件?

是否可以从以下 gradle 链接或任何 gradle 链接获取 .AAR 文件?

compile('com.mikepenz:materialdrawer:5.9.0@aar') {
    transitive = true
}
Run Code Online (Sandbox Code Playgroud)

android gradle maven android-library aar

5
推荐指数
1
解决办法
2826
查看次数

在 Android Studio 中导入源代码模块不起作用

我正在编写一个应用程序,我需要在其中导入另一个库项目。但是当我这样做时,它只是不允许导入。请参考快照。

我已经按照选择文件 -> 新建 -> 导入模块.. -> 浏览模块路径。有什么建议可能是这里的问题吗?

在此处输入图片说明

android android-library

5
推荐指数
1
解决办法
297
查看次数

如何在不使用 Gradle 复制 jar 的情况下将一个模块的源包含在另一个模块中?

我想将一个 Android 库项目拆分为模块。预期的项目结构是:

?? androidLibraryModule
?
?? kotlinLibraryModuleA
?
?? kotlinLibraryModuleB
Run Code Online (Sandbox Code Playgroud)

哪里androidLibraryModule取决于kotlinLibraryModuleAkotlinLibraryModuleB

dependencies {
    implementation project(":kotlinLibraryModuleA")
    implementation project(":kotlinLibraryModuleB")
}
Run Code Online (Sandbox Code Playgroud)

我将发布的唯一.aar内容是构建的结果,androidLibraryModule我希望它包含来自kotlinLibraryModuleA和的代码kotlinLibraryModuleA。到目前为止,我已经找到了实现这一目标的唯一途径是通过复制.jar的文件kotlinLibraryModuleA,并kotlinLibraryModuleBlibs的文件夹androidLibraryModule是这样的:

task copyJar(type: Copy) {
    from jar
    into "${project(":androidLibraryModule").projectDir.absolutePath}/libs"
}

jar.finalizedBy(copyJar)
Run Code Online (Sandbox Code Playgroud)

这个解决方案有效,但感觉有点像黑客。这是唯一的解决方案还是有更好的方法来实现这一结果?

编辑:如果androidLibraryModule是 Android 应用程序模块,则无需复制任务即可工作。

android project-structure gradle android-library kotlin

5
推荐指数
1
解决办法
74
查看次数

Android 库矢量转换为默认混淆的 png 和 Kotlin 文件

我只是用 Android Studio(AS) 创建了一个新的 android 项目。我添加了一个library module带有矢量可绘制对象和一个带有注释的 Kotlin 文件。我运行 assemble release 并生成一个aar文件。

我用 AS 反编译器打开这个 aar 发布文件,我看到矢量文件被转换为 png 以用于不同的可绘制对象,并且 Kotlin 文件被混淆了compiled code

原始xml矢量文件只能在目录中找到 drawable-anydpi-v24

如何禁用vector to pngfile obfuscation用于我的库模块?

我有默认的 build.gradle: minifyEnabled false

(我已经知道org.jetbrains.dokka所以请不要说只是使用它)

android android-library kotlin

5
推荐指数
1
解决办法
102
查看次数