Module: Pindo::GPComplianceHelper

Includes:
BaseAndroidHelper
Defined in:
lib/pindo/module/android/gp_compliance_helper.rb

Defined Under Namespace

Classes: ComplianceResult

Class Method Summary collapse

Methods included from BaseAndroidHelper

#build_jdk_path_from_unity_root, #check_and_replace_unity_jdk, #check_and_update_unity_jdk, #create_and_install_openjdk, #ensure_java_version_compliance, #extract_config_block_groovy, #extract_config_block_kts, #extract_keystore_fields_common, #extract_keystore_fields_groovy, #extract_keystore_fields_kts, #extract_signing_configs_groovy, #extract_signing_configs_kts, #extract_var_or_value, #find_android_subproject, #find_java11_installation, #find_java_command, #find_unity_editor_paths, #fix_store_file_path, #get_build_tools, #get_ext_values, #get_keystore_config, #get_keystore_config_groovy, #get_keystore_config_kts, #get_main_module, #install_adoptium_java_11, #install_java_11, #install_java_11_macos, #modify_il2cpp_config, #remove_desktop_google_service, #remove_groovy_comments, #remove_kts_comments, #replace_unity_jdk_with_java11, #resolve_var, #unity_android_project?, #verify_java_version

Class Method Details

.check_aab_compliance(aab_path) ⇒ Object

检测 AAB 文件的 Google Play 合规性



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/pindo/module/android/gp_compliance_helper.rb', line 44

def self.check_aab_compliance(aab_path)
  result = ComplianceResult.new
  
  unless File.exist?(aab_path)
    result.add_issue("AAB 文件不存在: #{aab_path}")
    return result
  end
  
  puts "\n\e[1m=== Google Play 合规检测 ===\e[0m"
  puts "检测文件: #{File.basename(aab_path)}"
  
  # 创建临时目录用于解压 AAB
  temp_dir = nil
  begin
    temp_dir = Dir.mktmpdir("aab_compliance_check_")
    
    # 检查 unzip 工具是否可用
    unless tool_available?('unzip')
      result.add_issue("unzip 工具不可用,无法解压 AAB 文件")
      puts "请安装 unzip 工具: brew install unzip (macOS) 或 apt-get install unzip (Ubuntu)"
      return result
    end
    
    # 解压 AAB 文件
    unless system("unzip", "-q", aab_path, "-d", temp_dir)
      result.add_issue("无法解压 AAB 文件")
      return result
    end
    
    # 检测 AAB 包体积
    check_aab_size_compliance(aab_path, result)
    
    # 检测 Target SDK 版本(传递 AAB 路径)
    check_target_sdk_compliance(temp_dir, result, aab_path)
    
    # 检测 ELF 对齐
    check_elf_alignment_compliance(temp_dir, result)
    
    # 输出检测结果
    print_compliance_summary(result)
    
  ensure
    # 清理临时目录
    FileUtils.rm_rf(temp_dir) if temp_dir && File.directory?(temp_dir)
  end
  
  result
end