Onboarding live apps without owner questions for what the stores and the code prove: storebound onboard imports the live products and subscriptions with USD / base prices (catalog diff clean), contact values, the App Review contact and demo account (credentials.json, masked), sign-in for review from Apple's review detail and auth code, and the account deletion page from the app's site; App Store keywords count characters (live fields up to 265 bytes accepted); validate accepts the 6.5-inch iPhone set and Play's default-language graphics fallback; Play Reporting API off gives the project's enable link and apps list falls back to local apps; accounts default <profile>; store-only apps (apps add --store --app-id) shown read-only in the desktop (pitfalls 43-52)

This commit is contained in:
CRTkafa 2026-10-13 07:25:01 +08:00
parent d2ce185441
commit e5f148e534
55 changed files with 1648 additions and 158 deletions

View file

@ -2,7 +2,16 @@
// the Android manifest (source or the merged one of a local build) requests or removes the advertising ID permission,
// and code that suggests App Privacy types without a Play Data safety equivalent (customer support, AR scanning).
// Pure over the scan facts; null fields mean "not found", never "not scanned" (that is `undefined` signals).
import { grep, type ProjectFacts, where } from './scan/project';
import { grep, grepOwn, type ProjectFacts, where } from './scan/project';
import { SIGNALS } from './scan/rules';
/** Sign-in evidence in the project's own code (scan's auth signals: auth SDKs and sign-in calls / fields / endpoints;
* import lines and module paths never count): "file:line what" per hit, empty when the code has no sign-in. */
export function authEvidence(p: ProjectFacts): string[] {
const sdk = p.sdks.filter(s => s.sdk.category === 'auth').flatMap(s => s.deps.slice(0, 1).map(d => `${d.file}:${d.line} ${s.sdk.name}`));
const code = grepOwn(p, SIGNALS.signIn, 3).hits.map(h => `${h.file}:${h.line}`);
return [...sdk, ...code];
}
export const AD_ID_PERMISSION = 'com.google.android.gms.permission.AD_ID';