我正在使用项目 A 和库项目来开发我的 Android 应用程序。这两个项目都有活动。如果我当前在项目 A 中,那么只需导入它就可以轻松地在库项目中启动一个活动。但是,如果我来自图书馆项目中的活动,我不确定如何启动项目 A 中的活动。我试图使库项目独立于项目 A 的包名称,因为我将把它用于多个应用程序。关于如何做到这一点有什么想法吗?谢谢。
我正在建立一个图书馆,并希望使其尽可能通用。
所以我想将textColora 的属性设置TextView为使用我的库的应用程序指定为它的primaryColor.
使用android:textColor="?colorPrimary"似乎给了我一种随机颜色,而不是我的测试应用程序中指定的颜色。这可能是因为它试图在库文件中查找该资源 ID,R.java而不是询问应用程序?
那么是否有可能引用库范围之外的颜色呢?我知道我可以通过引入自定义属性来解决此问题,但我想避免该解决方案,因为它要求库的用户更新其应用程序主题,并且它无法开箱即用。
我无法分发单个库。
我有一个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 Studio、Gradle),我将一些逻辑和小部件拆分为子库项目。
我发现R.string.xxx或其他R引用已合并,但如果它与应用程序模块同名,我无法获取库的资源值。(我使用了[libpacakgename].R.string.appname,但资源仍然是应用程序模块的,而不是库的。)
有没有一种方法可以使用 Android 资源这样的资源:android.R.string.xxx,或者在 xml 中myapp:string/xxx,其中“myapp”成为我的自定义命名空间或类名。
顺便说一句,我还发现有时attr id会发生冲突,导致编译失败。
据我研究,似乎我只能Android Library 在Android 项目中创建一个。有什么方法可以创建一个独立的 Android 库而不将其放在应用程序内或旁边?
AAR我的场景是在这个 Android 库上工作,并在编译时创建一个库,然后我可以在单独的Android 项目中引用它。
到目前为止,我有一个项目正在运行,但它有一个应用程序和一个处于同一级别的库。我通过创建一个新项目来实现这一点,然后:
文件 -> 新建 -> 新模块 -> Android 库。
我正在尝试将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
是否可以从以下 gradle 链接或任何 gradle 链接获取 .AAR 文件?
compile('com.mikepenz:materialdrawer:5.9.0@aar') {
transitive = true
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序,我需要在其中导入另一个库项目。但是当我这样做时,它只是不允许导入。请参考快照。
我已经按照选择文件 -> 新建 -> 导入模块.. -> 浏览模块路径。有什么建议可能是这里的问题吗?
我想将一个 Android 库项目拆分为模块。预期的项目结构是:
?? androidLibraryModule
?
?? kotlinLibraryModuleA
?
?? kotlinLibraryModuleB
Run Code Online (Sandbox Code Playgroud)
哪里androidLibraryModule取决于kotlinLibraryModuleA和kotlinLibraryModuleB:
dependencies {
implementation project(":kotlinLibraryModuleA")
implementation project(":kotlinLibraryModuleB")
}
Run Code Online (Sandbox Code Playgroud)
我将发布的唯一.aar内容是构建的结果,androidLibraryModule我希望它包含来自kotlinLibraryModuleA和的代码kotlinLibraryModuleA。到目前为止,我已经找到了实现这一目标的唯一途径是通过复制.jar的文件kotlinLibraryModuleA,并kotlinLibraryModuleB到libs的文件夹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 Studio(AS) 创建了一个新的 android 项目。我添加了一个library module带有矢量可绘制对象和一个带有注释的 Kotlin 文件。我运行 assemble release 并生成一个aar文件。
我用 AS 反编译器打开这个 aar 发布文件,我看到矢量文件被转换为 png 以用于不同的可绘制对象,并且 Kotlin 文件被混淆了compiled code。
原始xml矢量文件只能在目录中找到 drawable-anydpi-v24
如何禁用vector to png和file obfuscation用于我的库模块?
我有默认的 build.gradle: minifyEnabled false
(我已经知道org.jetbrains.dokka所以请不要说只是使用它)