9a4170c44f
Works through the plan's §2 and §3 items that need no hardware and no platform decision. - allowBackup="false". The private directory holds vault.bin; a cloud backup has no business in a password manager's path, even though what would leave is encrypted by a key that stays in the chip. - FLAG_SECURE, Release builds only - in debug it also blocks development screenshots. Complementary to hiding on WillBecomeInactive rather than redundant: that one covers the recents preview, the flag also covers manual captures, screen recording and casting to an external display. - List sorted by name (snapshot order is DB order, arbitrary to the eye), entry icons decoded once per vault rather than on every keystroke, and a folder dropdown whose selection survives a background refresh. No tag filter: text search already matches tags. - template and updated_at read and shown in the detail. updated_at is also step 1 of the write path - nothing is arbitrable without it. Android code is now type-checked without deploying: dccaarm64 reaches the link step and fails only on the NDK's ldandroid.exe. A JNI declaration that does not compile no longer waits for an APK to say so. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
78 lines
3.5 KiB
XML
78 lines
3.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- BEGIN_INCLUDE(manifest) -->
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
package="%package%"
|
|
android:versionCode="%versionCode%"
|
|
android:versionName="%versionName%"
|
|
android:installLocation="%installLocation%">
|
|
<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
|
|
<%uses-permission%>
|
|
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
|
|
<queries>
|
|
<%queries-child-elements%>
|
|
</queries>
|
|
<!-- usesCleartextTraffic : TEST UNIQUEMENT. Android bloque le trafic en
|
|
clair depuis la version 9, y compris vers 127.0.0.1 ; sans cet
|
|
attribut l'essai local via "adb reverse" echoue avec une erreur
|
|
reseau opaque. A RETIRER avant diffusion : l'endpoint de production
|
|
est en HTTPS, et le jeton Bearer circule dans un en-tete a chaque
|
|
appel. -->
|
|
<!-- allowBackup=false : le repertoire prive contient vault.bin, c'est-a-dire
|
|
le coffre entier. Il est chiffre par une cle qui ne quitte pas la puce,
|
|
donc ce qui sortirait serait inexploitable - mais il sortirait, et une
|
|
sauvegarde cloud n'a rien a faire dans le chemin d'un gestionnaire de
|
|
mots de passe. fullBackupContent et dataExtractionRules ne sont pas
|
|
necessaires une fois la sauvegarde refusee en bloc. -->
|
|
<application
|
|
android:allowBackup="false"
|
|
android:usesCleartextTraffic="true"
|
|
android:persistent="%persistent%"
|
|
android:restoreAnyVersion="%restoreAnyVersion%"
|
|
android:label="%label%"
|
|
android:debuggable="%debuggable%"
|
|
android:largeHeap="%largeHeap%"
|
|
android:icon="%icon%"
|
|
android:theme="%theme%"
|
|
android:hardwareAccelerated="%hardwareAccelerated%"
|
|
android:resizeableActivity="true"
|
|
android:requestLegacyExternalStorage="true">
|
|
<%provider%>
|
|
<%application-meta-data%>
|
|
<%uses-libraries%>
|
|
<!-- Trigger Google Play services to install the backported photo picker module. -->
|
|
<service
|
|
android:name="com.google.android.gms.metadata.ModuleDependencies"
|
|
android:enabled="false"
|
|
android:exported="false"
|
|
tools:ignore="MissingClass">
|
|
<intent-filter>
|
|
<action android:name="com.google.android.gms.metadata.MODULE_DEPENDENCIES" />
|
|
</intent-filter>
|
|
|
|
<meta-data android:name="photopicker_activity:0:required" android:value="" />
|
|
</service>
|
|
<%services%>
|
|
<!-- Our activity is a subclass of the built-in NativeActivity framework class.
|
|
This will take care of integrating with our NDK code. -->
|
|
<activity
|
|
android:name="com.embarcadero.firemonkey.FMXNativeActivity"
|
|
android:exported="true"
|
|
android:label="%activityLabel%"
|
|
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode"
|
|
android:launchMode="singleTask">
|
|
<!-- Tell NativeActivity the name of our .so -->
|
|
<meta-data android:name="android.app.lib_name" android:value="%libNameValue%" />
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
<%activity%>
|
|
<%receivers%>
|
|
</application>
|
|
</manifest>
|
|
<!-- END_INCLUDE(manifest) -->
|