标签: android-module

无法以编程方式从另一个模块获取资源

我有一个带有几个 gradle 模块的 android 项目。模块之间的依赖关系如下所示:
app <-- coremodule <-- featuremodule

coremodule中有资源(字符串和颜色)。

当我在功能模块的布局中使用它们时,一切正常,它们可用并且按预期工作。但是当我尝试从功能模块的 Activity 中以编程方式获取它们时,我得到一个异常:未解析的引用:R

所以android:text="@string/res_from_core_module" 有效myTextView.setText(R.string.res_from_core_module) 无效

有谁知道为什么会发生以及如何解决这个问题?

android android-resources android-module

6
推荐指数
1
解决办法
7088
查看次数

如何在库模块中使用GlideApp生成的api?

构建库模块。在使用库模块的示例应用程序中

\n\n
@GlideModule\nclass DPAppGlideModule : AppGlideModule() {\n    override fun isManifestParsingEnabled(): Boolean {\n        return false\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

并且在库模块中有:

\n\n
@GlideModule\npublic final class LibGlideModule extends LibraryGlideModule {\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在库模块中它使用 GlideApp 生成的 api

\n\n
fun ImageView.loadImg(imageUrl: String) {\nvar requestOptions : RequestOptions  = RequestOptions()\nrequestOptions.diskCacheStrategy(DiskCacheStrategy.ALL)\nif (!TextUtils.isEmpty(imageUrl)) {\n    GlideApp.with(this.context)\n            .setDefaultRequestOptions(requestOptions)\n            .load(imageUrl)\n            .into(this)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

}

\n\n

但由于这是库模块,不能与应用程序模块体面,所以无法编译

\n\n

如何在库模块中使用GlideApp生成的api?

\n\n

参考 \xe2\x80\x94 https://bumptech.github.io/glide/doc/configuration.html

\n

android-glide android-module

6
推荐指数
1
解决办法
944
查看次数

Gradle Android“在模块 bar 中找到重复的类 foo”错误

我有一个名为 A 的 android 模块。我添加了对另一个模块 B 的依赖,如下所示implementation project(':B'):虽然模块 A 的构建没有问题,但当我尝试构建(并运行)集成测试时,我得到

Duplicate class org.xmlpull.v1.XmlPullParser found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.3.3.jar (xpp3:xpp3:1.1.3.3)
Duplicate class org.xmlpull.v1.XmlPullParserException found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.3.3.jar (xpp3:xpp3:1.1.3.3)
Duplicate class org.xmlpull.v1.XmlPullParserFactory found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.3.3.jar (xpp3:xpp3:1.1.3.3)
Duplicate class org.xmlpull.v1.XmlSerializer found in modules kxml2-2.3.0.jar (net.sf.kxml:kxml2:2.3.0) and xpp3-1.1.3.3.jar (xpp3:xpp3:1.1.3.3)
Run Code Online (Sandbox Code Playgroud)

我试图org.xmlpull.kxml通过将导入语句更改为来排除

    implementation (project(':B')) {
        exclude group: 'org.xmlpull.v1'
    }
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在。我已经没有主意了。有人可以帮忙吗?

java android gradle android-module

6
推荐指数
1
解决办法
2115
查看次数

安卓导航。从嵌套图片段弹出到外部片段

我有一个带有主导航图的应用程序模块和带有它自己的导航图的功能模块。功能导航包含在主导航图中。因此功能片段和导航图对应用程序模块导航图一无所知。我需要将堆栈从主图中的特征片段 A 弹出到片段 B。实现这一目标的最佳方法是什么?

android android-fragments android-navigation android-module

6
推荐指数
1
解决办法
2906
查看次数

无法构建:如何为新模块添加 Android 构建配置

现在我正在将我的 Android 代码转换为模块化架构方法。尝试从“聊天”模块添加对“应用程序”模块的依赖项时遇到问题。

我有以下“app”模块的构建配置。

android {

lintOptions {
    checkReleaseBuilds false
    abortOnError false
}

signingConfigs {
    companydevconfig {
        keyAlias 'company'
        keyPassword '123456'
        storeFile file('../app/jksFils/company_dev.jks')
        storePassword '123456'
    }
    companyqaconfig {
        keyAlias 'company'
        keyPassword '123456'
        storeFile file('../app/jksFils/company_qa.jks')
        storePassword '123456'
    }
    companyprodconfig {
        keyAlias 'company'
        keyPassword '123456'
        storeFile file('../app/jksFils/release.keystore')
        storePassword '123456'
    }
}

compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
    applicationId "com.company.employee.dev"
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "1.13"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}
aaptOptions {
    cruncherEnabled = false
}
testOptions {
    unitTests.returnDefaultValues = …
Run Code Online (Sandbox Code Playgroud)

android android-build build.gradle android-gradle-plugin android-module

6
推荐指数
1
解决办法
5852
查看次数

java.lang.RuntimeException:无法在 Flutter 中实例化活动

Flutter 新创建的应用程序在使用 fire base 时出错。

我应该如何解决这个问题,因为它要求 Flutter 应用程序主活动无法转换为 android 应用程序活动。

04-05 21:16:07.570 27391-27391/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.firestoreflutterchat, PID: 27391
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.firestoreflutterchat/com.example.firestoreflutterchat.MainActivity}: java.lang.ClassCastException: com.example.firestoreflutterchat.MainActivity cannot be cast to android.app.Activity
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2124)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
        at android.app.ActivityThread.access$800(ActivityThread.java:139)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5097)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassCastException: com.example.firestoreflutterchat.MainActivity cannot be cast to android.app.Activity
        at android.app.Instrumentation.newActivity(Instrumentation.java:1084)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 
        at android.app.ActivityThread.access$800(ActivityThread.java:139) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
        at …
Run Code Online (Sandbox Code Playgroud)

classcastexception firebase flutter android-module

6
推荐指数
3
解决办法
7134
查看次数

Android 模块与风味之间的区别

android模块和风格之间的主要区别是什么?

来自模块定义 https://developer.android.com/studio/projects/add-app-module.html

模块为应用程序的源代码、资源文件和应用程序级别设置(例如模块级别构建文件和 Android 清单文件)提供容器。每个模块都可以独立构建、测试和调试。

但对于口味我也可以说同样的话。

有人可以指出这两者之间的主要区别吗?

android android-productflavors android-module

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

无法从AAR解决传递性Gradle缺陷

我已经制作了一个自定义模块,并使用“ api”配置在其中包含了tensorflow-lite依赖项。我建立它的aar。现在,我创建一个新项目并将aar放在libs文件夹中。但是我只能访问我创建的类,而不能访问tensorflow api。如何在不再次包含传递依赖项的情况下使用传递依赖项?

我在博客(https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa)中将其替换为“ api” 。

build.gradle(模块:mylib)

apply plugin: 'com.android.library'
android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    aaptOptions{
        noCompress "tflite"
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    api 'androidx.appcompat:appcompat:1.1.0-alpha04'
    api 'org.tensorflow:tensorflow-lite:0.0.0-gpu-experimental'
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(模块:新项目中的两个):

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 28
    defaultConfig {
        minSdkVersion 24
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner …
Run Code Online (Sandbox Code Playgroud)

android android-library android-gradle-plugin android-module

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

多模块项目:如何设置 Dagger 来提供接口但隐藏特定于实现的依赖项?

在我的应用程序中,我有两个模块:apprepository
repository依赖于 Room,并且有一个GoalRepository接口:

interface GoalRepository
Run Code Online (Sandbox Code Playgroud)

和一个GoalRepositoryImpl内部类,因为我不想将它或 Room 依赖项暴露给其他模块

@Singleton
internal class GoalRepositoryImpl @Inject constructor(private val dao: GoalDao) : GoalRepository
Run Code Online (Sandbox Code Playgroud)

app取决于repository获取一个GoalRepository实例。目前,
我有一个:GoalRepositoryModule

@Module
class GoalRepositoryModule {
    @Provides
    @Singleton
    fun provideRepository(impl: GoalRepositoryImpl): GoalRepository = impl

    @Provides
    @Singleton
    internal fun provideGoalDao(appDatabase: AppDatabase): GoalDao = appDatabase.goalDao()

    @Provides
    @Singleton
    internal fun provideDatabase(context: Context): AppDatabase =
        Room.databaseBuilder(context, AppDatabase::class.java, "inprogress-db").build()
}
Run Code Online (Sandbox Code Playgroud)

问题是这不会编译(显然),因为公共provideRepository函数正在公开GoalRepositoryImpl,即一个internal类。
如何构建我的 Dagger …

android modularization dagger dagger-2 android-module

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

Android sendBroadcast到其他模块

我有一个主应用程序模块“app1”和一个以“process:SecondActivity”开头的第二个模块“app2”。我需要使用广播接收器从 SecondActivity 发送消息,但该消息不在 onRecive 中。广播接收器位于模块“tools”中,模块“app1”和“app2”依赖于模块“tools”。

我的广播接收器

class ExportReceiver : BroadcastReceiver() {

companion object {

    const val ACTION_EXPORT = "ACTION_EXPORT"

    @JvmStatic
    fun getIntentFilters() = IntentFilter(ACTION_EXPORT)

}

@FunctionalInterface
interface OnExport {
    fun onExport(uri: Uri)
}

private var mExport : OnExport? = null

override fun onReceive(context: Context?, intent: Intent?) {
    intent?.let {
        if (it.action == ACTION_EXPORT) {
            it.data?.let { uri ->
                mExport?.onExport(uri)
            }
        }
    }
}

fun setExport(export: OnExport) {
    mExport = export
}
}
Run Code Online (Sandbox Code Playgroud)

将接收器注册到“app1”

mExportReceiver = new ExportReceiver();
mExportReceiver.setExport(uri -> {}); …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-broadcast android-module

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