Vários poços no processo de compilação do AOSP e piscando no Mac

Não gravarei os poços comuns aqui. Você pode pesquisar no Google ou no link no final do artigo. Aqui estão alguns menos comuns. O AOSP que uso aqui é o Android4.4.

1. O primeiro é um poço em que estou envolvido há muito tempo, é sobre o JDK. No começo, usei o jdk1.8 para compilar e ocorreu o seguinte erro:

host Java: doclava (out/host/common/obj/JAVA_LIBRARIES/doclava_intermediates/classes)
external/doclava/src/com/google/doclava/ClassInfo.java:20: 错误: 程序包com.sun.javadoc不存在
import com.sun.javadoc.ClassDoc;
                      ^
external/doclava/src/com/google/doclava/ClassInfo.java:61: 错误: 找不到符号
。。。

Alterei JAVA_HOME para o diretório jdk1.6, mas ocorreu o seguinte erro durante a compilação:

javac: 无效的目标发行版: 1.8
......

É muito estranho que mudei a versão do jdk para 1.6.Por que digo que a versão de destino é 1.8, então fui aos arquivos Android.mk, pom.xml, build.xml de cada módulo para modificar a versão java Ainda está errado. Muitos métodos encontrados online são inúteis.

Solução:

Quando estava prestes a desistir, encontrei um arquivo: build / core / combo / javac.mk, que definia duas variáveis ​​globais de compilação HOST_JAVAC e TARGET_JAVAC, -target seguido por 1.8, o culpado aqui, modifique Tudo bem para a 1.6.
Há outro arquivo, build / core / main.mk, que também especifica as versões java e javac.A versão aqui também deve ser anotada, mas se houver um conflito aqui, um erro será relatado no início do make.

2. O segundo são os dois erros que ocorreram quando eu compilei o emulador.
O primeiro é o problema de conflito da biblioteca SDL, ele solicitará o seguinte erro:
external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzVideo.h:94: error: expected specifier-qualifier-list before ‘CGDirectPaletteRef’

........
A solução é abrir o SDL_QuartzVideo.h, localizar a linha da paleta CGDirectPaletteRef e alterar para o seguinte:
#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070)
     CGDirectPaletteRef palette;            /* palette of an 8-bit display */
 #endif

O segundo é o seguinte erro:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:156: error: expected a property attribute before ‘atomic’
Isso ocorre porque a nova versão do xcode compila por padrão a propriedade objc é toda atômica, portanto, o atributo da propriedade não pode ser definido como atômico, todos dizem que o xcode5.x deve ser instalado para compilar. Sem esse tempo livre , comente diretamente  as palavras-chave atômicas nas duas linhas de QTMovieModernizer.h: 156, 163. Após a alteração, o xcdoe 6.4 pode ser compilado normalmente.  



Outro ponto a ser observado é que não importa se você compila o AOSP e o usa apenas no emulador, mas se deseja atualizar o dispositivo em uma máquina real, é necessário fazer o download do driver correspondente à máquina e à versão do AOSP, caso contrário Quando o telefone inicia, ele permanece na interface que exibe apenas o logotipo do Google, porque não há driver no system.img. Para baixar o driver, acesse https://developers.google.com/android/drivers, encontre o modelo de telefone celular e a versão AOSP correspondentes, baixe os três pacotes de drivers, extraia os três scripts de shell e coloque-os no diretório raiz do AOSP, um por um A execução gerará o diretório do fornecedor e siga as etapas em https://source.android.com/source/building.html para compilar.

Existem outros dois posts sobre a compilação AOSP, também gravados aqui:
1. http://www.cnblogs.com/palance/p/5187103.html
2. http://www.cnblogs.com/chiefhsing/p/5175624.html
3. http://www.liball.me/mac-10-10-build-android-4-4-4-for-nexus/
发布了60 篇原创文章 · 获赞 44 · 访问量 34万+

Acho que você gosta

Origin blog.csdn.net/beyond702/article/details/53159284
Recomendado
Clasificación