使用 AOSP 树构建 Android 6 消息传递应用程序

Posted

技术标签:

【中文标题】使用 AOSP 树构建 Android 6 消息传递应用程序【英文标题】:Building a Android 6 Messaging app out of AOSP tree 【发布时间】:2016-07-15 19:38:39 【问题描述】:

我正在尝试为 android 6 构建消息传递应用程序...... 我已经将包/应用程序/消息导入 Android Studio ... 并创建了以下 build.gradle 文件:

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
       classpath 'com.android.tools.build:gradle:1.3.+'
    


apply plugin: 'com.android.application'

android 
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    sourceSets 
        main 
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    

    defaultConfig 
        applicationId "com.android.messaging"
        minSdkVersion 23
        targetSdkVersion 23

        ndk 
            moduleName "libgiftranscode"
        

        repositories 
            mavenCentral()
        

        testApplicationId "com.android.messaging.test"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    

    dependencies 
        compile "com.android.support:support-v4:+"
        compile "com.android.support:appcompat-v7:+"
        compile "com.android.support:recyclerview-v7:+"
        compile "com.android.support:palette-v7:+"
        compile "com.android.support:support-v13:+"
        compile group: 'com.google.guava', name: 'guava', version: '18.0'
        compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
        compile group: 'com.googlecode.libphonenumber', name: 'libphonenumber', version: '3.5'
        compile group: 'com.klinkerapps', name: 'android-chips', version: '1.0.2'
        // https://mvnrepository.com/artifact/com.google.collections/google-collections
        compile group: 'com.google.collections', name: 'google-collections', version: '1.0'
        // https://mvnrepository.com/artifact/com.1gravity/android-colorpicker
        compile group: 'com.1gravity', name: 'android-colorpicker', version: '2.0.1'
        // https://mvnrepository.com/artifact/com.googlecode.ez-vcard/ez-vcard
        compile group: 'com.googlecode.ez-vcard', name: 'ez-vcard', version: '0.4.1'
        // https://mvnrepository.com/artifact/javax.annotation/jsr250-api
        compile group: 'javax.annotation', name: 'jsr250-api', version: '1.0'
        // https://mvnrepository.com/artifact/com.google.guava/guava-annotations
        compile group: 'com.google.guava', name: 'guava-annotations', version: 'r03'






    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        
    

它的构建基本没问题,但最后我得到了:

启动进程'命令 '/home/vadim/Android/Sdk/build-tools/23.0.2/aapt''。工作目录: /home/vadim/work/Messaging2 命令: /home/vadim/Android/Sdk/build-tools/23.0.2/aapt package -f --no-crunch -I /home/vadim/Android/Sdk/platforms/android-23/android.jar -M /home/vadim/work/Messaging2/build/intermediates/manifests/full/debug/AndroidManifest.xml -S /home/vadim/work/Messaging2/build/intermediates/res/merged/debug -A /home/vadim/work/Messaging2/build/intermediates/assets/debug -m -J /home/vadim/work/Messaging2/build/generated/source/r/debug -F /home/vadim/work/Messaging2/build/intermediates/res/resources-debug.ap_ --debug-mode --custom-package com.android.messaging -0 apk --output-text-symbols /home/vadim/work/Messaging2/build/intermediates/symbols/debug 成功启动进程'命令 '/home/vadim/Android/Sdk/build-tools/23.0.2/aapt'' /home/vadim/work/Messaging2/res/values/styles.xml:2:检索错误 项目的父项:未找到与给定名称匹配的资源 'PhotoViewTheme.Translucent'。

:processDebugResources 失败:processDebugResources (Thread[main,5,main]) 完成。耗时 1.175 秒。

FAILURE:构建失败并出现异常。

出了什么问题:任务 ':processDebugResources' 执行失败。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/home/vadim/Android/Sdk/build-tools/23.0.2/aapt'' 完成 非零退出值 1

尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --debug 选项运行以获得更多日志输出。

缺少的样式“PhotoViewTheme.Translucent”似乎位于 appcompat 库中,但我的构建没有找到它... 关于如何解决它的任何想法?

谢谢

【问题讨论】:

你的 SDK 是最新的吗? 是的...这是我检查的第一件事 【参考方案1】:

很抱歉让您失望了,但您不能从源代码导入特定文件并将其作为常规 apk 在 Gradle 中构建。 系统应用程序是使用 GNU make 在 linux 环境中构建的,而不是使用常规的 apks Gradle。 要编译系统应用程序,您需要先构建整个AOSP。 (如果是第一次,大约需要一周时间)

我会在线搜索应用程序(或类似应用程序)的 Gradle 版本。

【讨论】:

【参考方案2】:

您的输出表明错误:

/home/vadim/work/Messaging2/res/values/styles.xml:2 : Error retrieving parent for item: No resource found that matches the given name 'PhotoViewTheme.Translucent'

这只是意味着该应用缺少作为另一个父级的特定样式。

查看消息应用源中的 Android.mk 文件。它清楚地提到了

LOCAL_RESOURCE_DIR += frameworks/opt/photoviewer/res

这意味着您的源代码中也需要这些资源。 只需谷歌搜索PhotoViewTheme.Translucent 并在应用程序中添加该样式/主题。 Nir Duan 在一定程度上是对的,但如果你有能力让它兼容 gradle,你总是可以在 android studio 中构建源应用程序。 Here 是您可能想要查看的 AOSP 代码。将其添加到 styles.xml 或其他文件。干杯!

【讨论】:

以上是关于使用 AOSP 树构建 Android 6 消息传递应用程序的主要内容,如果未能解决你的问题,请参考以下文章

构建 AOSP:如何在 SD 卡上包含文件?

AOSP 使用 jni 库构建应用程序

Android 10 中的浏览器构建

构建错误索尼 Togari android Aosp

在最新的 AOSP 中,ADB 的最新版本是啥?

为 Dragonboard(Ubuntu 16.04)构建 Android 开源项目(AOSP)时“构建某些目标失败”