Class: Pindo::AndroidBuildHelper
- Inherits:
-
Object
- Object
- Pindo::AndroidBuildHelper
- Includes:
- ApkHelper, BaseAndroidHelper, GradleHelper, SoHelper, Singleton
- Defined in:
- lib/pindo/module/android/build_helper.rb
Constant Summary
Constants included from GradleHelper
GradleHelper::DOWNLOAD_TIMEOUT, GradleHelper::MIN_GRADLE_WRAPPER_JAR_SIZE, GradleHelper::RECOMMENDED_GRADLE_VERSION
Class Method Summary collapse
Instance Method Summary collapse
-
#add_test_scheme(project_dir: nil, scheme_name: nil) ⇒ Object
该方法已迁移到 Pindo::AndroidBuildConfigHelper.add_test_scheme 保留代理方法以兼容旧调用.
- #auto_build_apk(project_dir, debug = false, ignore_sub = false) ⇒ Object
- #dsign(project_path, debug) ⇒ Object
- #get_application_id(project_path) ⇒ Object
Methods included from ApkHelper
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
Methods included from SoHelper
#build_so_library, #copy_so_files
Methods included from GradleHelper
#check_gradle_files, #setup_gradle_wrapper_from_properties, #setup_gradle_wrapper_traditional, #update_build_gradle, #update_gradle_version, #verify_gradle_wrapper_setup
Class Method Details
.share_instance ⇒ Object
19 20 21 |
# File 'lib/pindo/module/android/build_helper.rb', line 19 def share_instance instance end |
Instance Method Details
#add_test_scheme(project_dir: nil, scheme_name: nil) ⇒ Object
该方法已迁移到 Pindo::AndroidBuildConfigHelper.add_test_scheme 保留代理方法以兼容旧调用
26 27 28 29 30 |
# File 'lib/pindo/module/android/build_helper.rb', line 26 def add_test_scheme(project_dir:nil, scheme_name:nil) puts "Warning: add_test_scheme已迁移,请使用Pindo::AndroidBuildConfigHelper.add_test_scheme" require_relative 'android_build_config_helper' Pindo::AndroidBuildConfigHelper.add_test_scheme(project_dir: project_dir, scheme_name: scheme_name) end |
#auto_build_apk(project_dir, debug = false, ignore_sub = false) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pindo/module/android/build_helper.rb', line 32 def auto_build_apk(project_dir, debug = false, ignore_sub = false) # 检查 gradle.properties 中是否设置了 Java Home gradle_properties_path = File.join(project_dir, "gradle.properties") if File.exist?(gradle_properties_path) puts "检查 gradle.properties 中的 Java Home 设置..." content = File.read(gradle_properties_path) java_home_match = content.match(/org\.gradle\.java\.home\s*=\s*(.+)/) if java_home_match && !java_home_match[1].empty? java_home_path = java_home_match[1].strip puts "找到 Java Home 路径: #{java_home_path}" # 设置环境变量 ENV['JAVA_HOME'] = java_home_path ENV['PATH'] = "#{java_home_path}/bin:#{ENV['PATH']}" puts "已设置 JAVA_HOME 环境变量为: #{java_home_path}" puts "Java 版本信息:" system("java -version") end end # 检查 if !ignore_sub sub_android_dir = find_android_subproject(project_dir) if sub_android_dir prepare_proj(sub_android_dir) # 构建 AAB 文件 unless build_so_library(sub_android_dir) raise RuntimeError, "编译SO库失败:" end copy_so_files(sub_android_dir, project_dir) end end prepare_proj(project_dir) build_apk(project_dir, debug) end |
#dsign(project_path, debug) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/pindo/module/android/build_helper.rb', line 93 def dsign(project_path, debug) keystore_config = get_keystore_config(project_path, debug) ks = keystore_config[:store_file] # puts "读取 keystore path = #{ks}" ks_pass = keystore_config[:store_password] # puts "读取 keystore pass = #{ks_pass}" key_alias = keystore_config[:key_alias] # puts "读取 key alias = #{key_alias}" key_pass = keystore_config[:key_password] # puts "读取 key pass = #{key_pass}" end |
#get_application_id(project_path) ⇒ Object
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/build_helper.rb', line 68 def get_application_id(project_path) main_module = get_main_module(project_path) return nil unless main_module # 尝试从 build.gradle 获取 gradle_path = File.join(main_module, "build.gradle") if File.exist?(gradle_path) content = File.read(gradle_path) if content =~ /applicationId\s+['"]([^'"]+)['"]/ return $1 end end # 如果 build.gradle 中没有,尝试从 AndroidManifest.xml 获取 manifest_path = File.join(main_module, "src", "main", "AndroidManifest.xml") if File.exist?(manifest_path) require 'nokogiri' doc = Nokogiri::XML(File.read(manifest_path)) package = doc.at_xpath('//manifest/@package')&.value return package if package end nil end |