buildMetaData task doesn't generate reproducible binaries
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 45/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- android
- Domínio
- build-system, mobile-dev
Direção de pesquisa
Comece localizando a tarefa buildMetaData no runtime do Android e reproduza a geração do APK localmente e em um ambiente Docker, Podman ou GitHub Actions. Compare as saídas com diffoscope; considera-se concluído quando os binários de metadados forem idênticos byte a byte para o mesmo compileSdk, independentemente do ambiente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Environment
Provide version numbers for the following components (information can be retrieved by running tns info in your project folder or by inspecting the package.json of the project):
- CLI: 9.0.1
- Cross-platform modules:
- Android Runtime: 8.9.2 and 9.0.0
- iOS Runtime (if applicable): -
- Plugin(s): -
Describe the bug
buildMetaData task generates metadata binaries that are not deterministic and reproducible, Even with the same --compileSdk version set and exact Java, SDK, etc.. So, security checks will fail specially in opensource app stores like IzzyOnDroid and F-Droid.
The issue might be related to using methods like listFiles() without performing a sort on files or maybe different locale properties, I'm just guessing from my researches.
I've attached a diffoscope result to see the difference.
To Reproduce
- Generate an APK locally
- Generate the same APK using a docker/podman container or Github actions
- diff the results using any tool like diffoscope
Expected behavior
The metadata binaries should be exactly same for a specific compileSdk without considering which environment its running the buildMetaData task.
- Linguagem predominante
- C++
- Estrelas
- 563
- Forks
- 144
- Merge médio
- 10h 46min
- PRs com merge (30d)
- 14
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de NativeScript/android
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 38/100
NativeScript/android#2039 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
NativeScript/android#2024 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
NativeScript/android#2020 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 42/100
NativeScript/android#2019 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
NativeScript/android#1986 ·
Todas as issues de NativeScript/android
Issues semelhantes
-
[CI] Nightly Clang build broken: structured binding captured in a lambda in FileDataSource.cpp Abertabug build
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 91/100
facebookincubator/velox#19194 ·
-
JIT-compiled number -> Decimal conversion silently overflows instead of raising DECIMAL_OVERFLOW Abertafuzz
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
ClickHouse/ClickHouse#122114 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
module/agent platform/macos type/bug/regression
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
-
enhancement PyCDE
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100