[英]Android Gradle several modules :transformDexArchiveWithDexMergerForDebug task fail
Not so long ago I wrote a library for my app which contains 2 modules: samples and the library itself. 不久前,我为我的应用程序编写了一个库,其中包含2个模块:样本和库本身。
As always, library module is included in samples module's build.gradle, though they're both on the same level in the hierarchy, just after the root: 与往常一样,库模块包含在samples模块的build.gradle中,尽管它们在层次结构中位于同一级别,就在根目录之后:
----root
---samples
---tinyarbrowser
After the first release I used project without problems for about few weeks. 在第一次发布之后,我使用了几周没有问题的项目。
Last night I tried to build & run it before minor update. 昨晚我尝试在轻微更新之前构建并运行它。 So... the whole night is spent trying to figure it out :) The main problem is:
所以......整个晚上都花在试图弄明白:)主要问题是:
:samples:transformDexArchiveWithDexMergerForDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':samples:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException:
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\17,
D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18,
D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\externalLibsDexMerger\debug\0,
D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
//...
It happens each time when i hopefully try to clean-build project with minor changes, none of wich helps at the moment. 每当我希望尝试通过微小的改变来清理构建项目时,它就会发生,目前没有任何帮助。
Current gradle files look as follows: 当前的gradle文件如下所示:
Root build.gradle : Root build.gradle :
buildscript {
ext.kotlinVersion = '1.2.30'
ext.ankoVersion = '0.10.2'
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
allprojects {
repositories {
jcenter()
google()
}
}
ext {
compileSdkVersion = 27
buildToolsVersion = '27.0.3'
minSdkVersion = 15
targetSdkVersion = compileSdkVersion
supportLibVersion = '27.0.2'
supportDependencies = [
design : "com.android.support:design:${supportLibVersion}",
appCompat : "com.android.support:appcompat-v7:${supportLibVersion}",
]
versionCode = 13
versionName = '1.3'
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Sample's samples
module build.gradle : Sample的
samples
模块build.gradle :
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'project-report'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "com.kkaun.tinyarbrowser"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testImplementation 'junit:junit:4.12'
//Including project lib module here
api (project(':tinyarbrowser')) {
exclude group: 'com.android.support', module: 'design'
exclude group: 'com.android.support', module: 'appcompat-v7'
exclude group: 'com.android.support', module: 'appcompat-v4'
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jre8'
exclude group: 'org.jetbrains.anko', module: 'anko'
}
implementation ('com.android.support:appcompat-v7:27.0.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlinVersion"
}
//tasks.whenTaskAdded {task ->
// if(task.name.contains("transformDexArchiveWithDexMergerForDebug")) {
// task.enabled = false
// }
//}
And lib tinyarbrowser
module build.gradle : 和lib
tinyarbrowser
模块build.gradle :
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.github.dcendents.android-maven'
group = 'com.github.kkaun'
version = rootProject.ext.versionName
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation supportDependencies.design
implementation supportDependencies.appCompat
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlinVersion"
implementation "org.jetbrains.anko:anko:$ankoVersion"
}
As i'm currently stuck with samples module, here is samples
dependency tree output, lightweighted as more as possible: 由于我目前停留在样本模块,这里是
samples
依赖树输出,尽可能轻量化:
+--- project :tinyarbrowser
+--- com.android.support:appcompat-v7:27.0.2
| +--- com.android.support:support-core-utils:27.0.2
| | \--- com.android.support:support-compat:27.0.2
| | \--- android.arch.lifecycle:runtime:1.0.3
| | +--- android.arch.lifecycle:common:1.0.3
| | \--- android.arch.core:common:1.0.0
| +--- com.android.support:support-fragment:27.0.2
| | +--- com.android.support:support-compat:27.0.2 (*)
| | +--- com.android.support:support-core-ui:27.0.2
| | | \--- com.android.support:support-compat:27.0.2 (*)
| | \--- com.android.support:support-core-utils:27.0.2 (*)
| +--- com.android.support:support-vector-drawable:27.0.2
| | \--- com.android.support:support-compat:27.0.2 (*)
| \--- com.android.support:animated-vector-drawable:27.0.2
| +--- com.android.support:support-vector-drawable:27.0.2 (*)
| \--- com.android.support:support-core-ui:27.0.2 (*)
+--- com.android.support.constraint:constraint-layout:1.0.2
| \--- com.android.support.constraint:constraint-layout-solver:1.0.2
\--- org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.30
+--- org.jetbrains.kotlin:kotlin-stdlib:1.2.30
| \--- org.jetbrains:annotations:13.0
\--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.30
\--- org.jetbrains.kotlin:kotlin-stdlib:1.2.30 (*)
Clean-build it with dozens of exclusions and minor transitive dependencies changes; 使用许多排除和较小的传递依赖变化来清理构建它;
Invalidate cache / restart / clean local cache files; 使缓存/重启/清除本地缓存文件无效;
implementation
vs api
vs compile
; implementation
vs api
vs compile
;
Multidex for tiny lib?:) Tried just to be sure, all the same; Multidex for tiny lib?:)试图确保,一切都一样;
Downgrade build version from 3.1 to 3.0 (D8 vs DX compiler): in that case i received UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define
even with all dependencies except vital Kotlin removed; 将构建版本从3.1降级到3.0(D8与DX编译器):在这种情况下,我收到了
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define
甚至UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define
除了重要的Kotlin之外的所有依赖项;
See one more below: 请参阅以下内容:
Actually I'm 90% sure that's about Kotlin as its components are widely used in both modules and it's the last thing I cannot afford myself to be without, therefore I tried to exclude everything from samples module except Kotlin std's. 实际上我90%肯定是关于Kotlin的,因为它的组件在两个模块中被广泛使用,这是我不能承受的最后一件事,因此我试图从样本模块中排除一切,除了Kotlin标准。 So I also tried this "dirty trick":
所以我也试过这个“肮脏的把戏”:
tasks.whenTaskAdded {task ->
if(task.name.contains("transformDexArchiveWithDexMergerForDebug")) {
task.enabled = false
}
}
And yep, with that build actually finishes, but then I face another problem each time trying to run it on Xiaomi Redmi 4X: 是的,那个版本实际上已经完成了,但是每次尝试在小米Redmi 4X上运行它时我都面临另一个问题:
Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK:
Package couldn't be installed in /data/app/com.kkaun.tinyarbrowser-1: Package /data/app/com.kkaun.tinyarbrowser-1/base.apk code is missing.
It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.
As for this issue, I tried to disable/re-enable Instant Run, turn off MIUI-specific dev features, reboot etc. - it's still the same. 至于这个问题,我试图禁用/重新启用Instant Run,关闭MIUI特定的开发功能,重新启动等等 - 它仍然是相同的。
Out of options, for real. 出于选择,真实。 However, changing project structure for single lib module to be functioning is not an option at the moment.
但是,单个lib模块的项目结构改变才能正常运行。
Any constructive thoughts will be appreciated. 任何建设性的想法将不胜感激。
Full stack trace of the key issue provided below: 下面提供的关键问题的完整堆栈跟踪:
> Task :samples:transformDexArchiveWithDexMergerForDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':samples:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\AndroidStudioPr
ojects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\17, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18, D:\AndroidStudioProjects\TinyARBrows
er\samples\build\intermediates\transforms\externalLibsDexMerger\debug\0, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':samples:transformDexArchiveWithDexMergerForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while mer
ging dex archives: D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\17, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18,
D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\externalLibsDexMerger\debug\0, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
... 29 more
Caused by: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\Androi
dStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\17, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18, D:\AndroidStudioProjects\Ti
nyARBrowser\samples\build\intermediates\transforms\externalLibsDexMerger\debug\0, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:225)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 41 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermed
iates\transforms\dexBuilder\debug\17, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\e
xternalLibsDexMerger\debug\0, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:397)
at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:221)
... 44 more
Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\
debug\17, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\externalLibsDexMerger\debug\0
, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
Caused by: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\17, D:\AndroidStudioPr
ojects\TinyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\18, D:\AndroidStudioProjects\TinyARBrowser\samples\build\intermediates\transforms\externalLibsDexMerger\debug\0, D:\AndroidStudioProjects\T
inyARBrowser\samples\build\intermediates\transforms\dexBuilder\debug\16.jar
at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:124)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:109)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:101)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:36)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:76)
at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:45)
at com.android.tools.r8.D8.run(D8.java:88)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:107)
... 2 more
Caused by: com.android.tools.r8.utils.AbortException
at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:77)
at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:58)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:67)
... 5 more
BUILD FAILED in 35s
For this project, the build tools end up creating two different BuildConfig.java
files - one in the samples
module and one in the tinyarbrowser
module. 对于这个项目,构建工具最终会创建两个不同的
BuildConfig.java
文件 - 一个在samples
模块中,另一个在tinyarbrowser
模块中。 They both have the same package of com.kkaun.tinyarbrowser
. 它们都有相同的
com.kkaun.tinyarbrowser
包。 Because they're both in the same package, the build tools fail during merge. 因为它们都在同一个包中,所以构建工具在合并期间会失败。
The AndroidManifest.xml
file in each of these modules dictates where the corresponding BuildConfig
class will go, so we need to change the package in one of the modules so that they won't collide. 每个模块中的
AndroidManifest.xml
文件都指示相应的BuildConfig
类的位置,因此我们需要更改其中一个模块中的包,以便它们不会发生冲突。
For example, you can update the manifest file in the samples directory from this: 例如,您可以从以下位置更新samples目录中的清单文件:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kkaun.tinyarbrowser">
to this: 对此:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kkaun.tinyarbrowser.samples">
This also means that you'll need to shuffle a few classes around. 这也意味着你需要改变几个类。 The classes in the
samples
module that are currently under com.kkaun.tinyarbrowser
will need to move into com.kkaun.tinyarbrowser.samples
. 当前在
com.kkaun.tinyarbrowser
下的samples
模块中的类将需要移动到com.kkaun.tinyarbrowser.samples
。
Also, references to resources would also need to move. 此外,还需要移动对资源的引用。 So for example, if you're doing this:
例如,如果你这样做:
import com.kkaun.tinyarbrowser.R
Then it'd need to get updated to this 然后它需要更新到这个
import com.kkaun.tinyarbrowser.samples.R
There could be a few other small references that would need to be updated, but this should get you most of the way there. 可能还有一些其他需要更新的小参考,但这应该可以让你大部分时间都在那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.