Qual é a diferença entre o compileSdkVersion e o targetSdkVersion?

olhei para a documentação {[[9]}para construir com grades, mas ainda não sei qual é a diferença entre {[[0]} e targetSd ... vejo que esta pergunta já foi feita antes, mas a única resposta cita apenas o doc, que é o que não é claro para mim.

Usar os tipos de compilação na Gradle para executar a mesma aplicação que usa o obturador de conteúdo num dispositivo

configurei o Gradle para adicionar o sufixo do nome do pacote à minha aplicação de depuração para que pudesse ter a ver ... Qualquer outra solução sobre como executar o mesmo aplicativo com o Obtentprovider em um dispositivo é sempre bem-vindo.

construir.gradle in the project vs. build.Grale in the app

Comecei um projecto no Android Studio, com o Intelij. o projecto inclui dois ficheiros chamados build.gradle. Um está ... principal que é o nome do meu projecto, say MyProject. Porquê a necessidade de dois? Qual é a diferença entre os dois?