class Fastlane::Actions::AndroidChangePackageNameAction
Public Class Methods
available_options()
click to toggle source
# File lib/fastlane/plugin/android_change_package_name/actions/android_change_package_name_action.rb, line 77 def self.available_options [ FastlaneCore::ConfigItem.new(key: :package_name, env_name: "", description: "New package name", optional: true, type: String), FastlaneCore::ConfigItem.new(key: :manifest, env_name: "", description: "Location of your project AndroidManifest.xml", optional: false, type: String, default_value: "app/src/main/AndroidManifest.xml"), FastlaneCore::ConfigItem.new(key: :path, env_name: "", description: "Path of root Android project folder", is_string: true, optional: false, default_value: ".") ] end
description()
click to toggle source
# File lib/fastlane/plugin/android_change_package_name/actions/android_change_package_name_action.rb, line 60 def self.description "Change the package identifier in the AndroidManifest.xml file" end
details()
click to toggle source
# File lib/fastlane/plugin/android_change_package_name/actions/android_change_package_name_action.rb, line 72 def self.details # Optional: "It will permits you to change the package name of your project before the build" end
is_supported?(platform)
click to toggle source
# File lib/fastlane/plugin/android_change_package_name/actions/android_change_package_name_action.rb, line 99 def self.is_supported?(platform) platform == :android end
return_value()
click to toggle source
# File lib/fastlane/plugin/android_change_package_name/actions/android_change_package_name_action.rb, line 68 def self.return_value # If your method provides a return value, you can describe here what it does end
run(params)
click to toggle source
# File lib/fastlane/plugin/android_change_package_name/actions/android_change_package_name_action.rb, line 7 def self.run(params) require 'nokogiri' path = params[:path] packageName = params[:package_name] manifest = params[:manifest] doc = File.open(manifest) { |f| @doc = Nokogiri::XML(f) originalPackageName = nil @doc.css("manifest").each do |response_node| originalPackageName = response_node["package"] response_node["package"] = packageName UI.message("Updating package name to: #{packageName}") end if originalPackageName != packageName File.write(manifest, @doc.to_xml) folder = originalPackageName.gsub('.', '/') new_folder = packageName.gsub('.', '/') if File.exist?("#{path}/app/src/main/java/#{folder}") sourcesPath = "/app/src" gradlePath = "/app" new_folder_path = "#{path}#{sourcesPath}/main/java/#{new_folder}" java_sources = Dir.glob("#{path}#{sourcesPath}/main/java/#{folder}/*.java") elsif File.exist?("#{path}/src/#{folder}") sourcesPath = "/src" gradlePath = "/." new_folder_path = "#{path}#{sourcesPath}/#{new_folder}" java_sources = Dir.glob("#{path}#{sourcesPath}/#{folder}/*.java") end FileUtils::mkdir_p new_folder_path java_sources.each do |file| FileUtils.mv file, new_folder_path end Bundler.with_clean_env do sh "find #{path}#{sourcesPath} -name '*.java' -type f -exec sed -i '' 's/#{originalPackageName}/#{packageName}/' {} \\;" sh "find #{path}#{gradlePath} -name 'build.gradle' -type f -exec sed -i '' 's/#{originalPackageName}/#{packageName}/' {} \\;" end end UI.message("#{originalPackageName} successfully updated to #{packageName}") } end