Ошибка сборки Chromium для Android в Android Studio - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь собрать Chromium для Android на компьютере с Ubuntu 16.04 в качестве проекта Android Studio.

Я следовал инструкциям здесь и здесь и успешно создал проект gradle. Но после импорта в Android Studio возникает много ошибок сборки (стабильная версия 3.1.2).

Команда для создания проекта gradle -

build/android/gradle/generate_gradle.py --output-directory out/Default --project-dir ~/Projects/chromium_source/gradle_project

Ошибки в Android Studio -

Проект строительства

FAILURE: Build failed with an exception.

What went wrong:
Could not resolve all files for configuration ':url.url_unittests_apk:debugCompileClasspath'.
> Failed to transform file 'junit.jar' to match attributes {artifactType=android-classes} using transform JarTransform
> Transform output file /home/sagarjoshi/Projects/chromium_source/src/out/Default/lib.java/third_party/junit/junit.jar does not exist.
> Failed to transform file 'hamcrest-core.jar' to match attributes {artifactType=android-classes} using transform JarTransform
> Transform output file /home/sagarjoshi/Projects/chromium_source/src/out/Default/lib.java/third_party/hamcrest/hamcrest-core.jar does not exist.
> Failed to transform file 'ub-uiautomator.jar' to match attributes {artifactType=android-classes} using transform JarTransform
> Transform output file /home/sagarjoshi/Projects/chromium_source/src/out/Default/lib.java/third_party/ub-uiautomator/ub-uiautomator.jar does not exist.
> Failed to transform file 'runner-release-no-dep.jar' to match attributes {artifactType=android-classes} using transform JarTransform
> Transform output file /home/sagarjoshi/Projects/chromium_source/src/out/Default/lib.java/third_party/android_support_test_runner/runner-release-no-dep.jar does not exist.
> Failed to transform file 'exposed-instrumentation-api-publish-no-dep.jar' to match attributes {artifactType=android-classes} using transform JarTransform
> Transform output file /home/sagarjoshi/Projects/chromium_source/src/out/Default/lib.java/third_party/android_support_test_runner/exposed-instrumentation-api-publish-no-dep.jar   does not exist.
> Failed to transform file 'rules_java.jar' to match attributes {artifactType=android-classes} using transform JarTransform
> Transform output file /home/sagarjoshi/Projects/chromium_source/src/out/Default/lib.java/third_party/android_support_test_runner/rules_java.jar does not exist.

build/android/gradle/generate_gradle.py --output-directory out/Default --target //chrome/android:chrome_public_apk 

Сделать модуль chrome.android.chrome_public_apk

    /home/sagarjoshi/Projects/chromium_source/src/base/android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java:18: error: cannot find symbol
import org.chromium.base.MemoryPressureLevel;
                        ^
  symbol:   class MemoryPressureLevel
  location: package org.chromium.base
/home/sagarjoshi/Projects/chromium_source/src/base/android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java:186: error: cannot find symbol
    private IChildProcessService mService;
            ^
  symbol:   class IChildProcessService
  location: class ChildProcessConnection
/home/sagarjoshi/Projects/chromium_source/src/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java:20: error: cannot find symbol
import org.chromium.base.BuildConfig;
                        ^
  symbol:   class BuildConfig
  location: package org.chromium.base
/home/sagarjoshi/Projects/chromium_source/src/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/action/FeedActionHandler.java:13: error: cannot find symbol
import org.chromium.ui.base.PageTransition;
                           ^
  symbol:   class PageTransition
  location: package org.chromium.ui.base
/home/sagarjoshi/Projects/chromium_source/src/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/action/FeedActionHandler.java:14: error: package org.chromium.ui.mojom does not exist
import org.chromium.ui.mojom.WindowOpenDisposition;
                            ^
/home/sagarjoshi/Projects/chromium_source/src/content/public/android/java/src/org/chromium/content_public/browser/LoadUrlParams.java:9: error: package org.chromium.content_public.browser.navigation_controller does not exist
import org.chromium.content_public.browser.navigation_controller.LoadURLType;

/home/sagarjoshi/Projects/chromium_source/src/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java:42: error: cannot find symbol
import org.chromium.chrome.R;
                          ^
  symbol:   class R
  location: package org.chromium.chrome
:chrome.android.chrome_public_apk:compileDebugJavaWithJavac FAILED

Обновление :

При добавлении флага - full к команде добавляются папки extract-srcjars и extract-res , содержащие все отсутствующие зависимости. Однако при этом полностью зависает моя машина, если только я не строю цели выборочно.

build/android/gradle/generate_gradle.py --output-directory out/Default --full --target //chrome/android:chrome_public_apk --target //chrome/android:chrome_junit_tests

Мне пришлось внести некоторые дополнительные изменения в chrome_public_apk build.gradle, чтобы исправить еще несколько ошибок -

  1. cannot find symbol class GeneratedMessageLite

    Удалить эту строку из java.filter.exclude "com/google/protobuf/*.java"

  2. duplicate class: com.google.protobuf.LazyFieldLite

    Заменить на java.srcDirs

    "../../../../src/third_party/android_protobuf/src/java/src/main/java"

    от

    "../../../../src/third_party/android_protobuf/src/java/src/main/java/com/google/protobuf/nano"

  3. cannot access ViewerType class file for com.google.vr.ndk.base.GvrApi$ViewerType not found

    Заменить на зависимости блок

    "../../../../src/out/Default/lib.java/third_party/gvr-android-sdk/gvr_common_java.jar"

    от

    "../../../../src/out/Default/lib.java/third_party/gvr-android-sdk/gvr_common_java.interface.jar"

Ошибки компилятора исчезли, но произошла ошибка со следующей ошибкой -

com.android.builder.dexing.DexArchiveBuilderException: Failed to process /home/sagarjoshi/Projects/chromium_source/gradle_full_chrome_public/chrome/android/chrome_public_apk/build/intermediates/transforms/desugar/debug/18.jar
    at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.launchProcessing(DexArchiveBuilderTransform.java:550)
    at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.lambda$convertToDexArchive$1(DexArchiveBuilderTransform.java:488)
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing com/google/vr/ndk/base/GvrApi.class

    at com.android.builder.dexing.DxDexArchiveBuilder.getExceptionToRethrow(DxDexArchiveBuilder.java:143)
    at com.android.builder.dexing.DxDexArchiveBuilder.convert(DxDexArchiveBuilder.java:89)
    at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.launchProcessing(DexArchiveBuilderTransform.java:545)
    ... 6 more
Caused by: com.android.dex.util.ExceptionWithContext
    at com.android.dex.util.ExceptionWithContext.withContext(ExceptionWithContext.java:45)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:398)
    at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:150)
    at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:102)
    at com.android.builder.dexing.DxDexArchiveBuilder.dex(DxDexArchiveBuilder.java:107)
    at com.android.builder.dexing.DxDexArchiveBuilder.convert(DxDexArchiveBuilder.java:86)
    ... 7 more
Caused by: java.lang.NullPointerException
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:80)
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:69)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:300)
    ... 11 more

Я также пытался использовать дексер D8; не помогло.

1 Ответ

0 голосов
/ 11 мая 2018

Как расстраивает! Похоже, вы можете пропустить некоторые тесты. Вы пытались указать цели и включить тесты? Я думаю, что это должно быть что-то вроде ...

build/android/gradle/generate_gradle.py \
    --output-directory out/Default \
    --project-dir ~/Projects/chromium_source/gradle_project \
    --target '//chrome/android:chrome_public_apk' \
    --target '//chrome/android:chrome_junit_tests'
...