Class: PackageConvertWorker
- Inherits:
-
Object
- Object
- PackageConvertWorker
- Defined in:
- lib/package_convert_worker.rb
Instance Method Summary collapse
- #convert ⇒ Object
- #full_name(package, basename) ⇒ Object
-
#initialize(new_app_name, new_package_name, dest_dir) ⇒ PackageConvertWorker
constructor
A new instance of PackageConvertWorker.
- #update_activity_name ⇒ Object
- #update_app_label ⇒ Object
- #update_application_name ⇒ Object
- #update_jni ⇒ Object
- #update_layout_files_custom_name_space ⇒ Object
- #update_src_to_use_new_r ⇒ Object
Constructor Details
#initialize(new_app_name, new_package_name, dest_dir) ⇒ PackageConvertWorker
Returns a new instance of PackageConvertWorker.
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/package_convert_worker.rb', line 4 def initialize(new_app_name, new_package_name, dest_dir) @new_app_name = new_app_name @new_package_name = new_package_name @dest_dir = dest_dir @target_manifest_file = "#@dest_dir/#{AndroidConstants.android_manifest}" @xml = REXML::Document.new(File.read @target_manifest_file) @manifest = @xml.root @original_package = @manifest.attributes["package"] end |
Instance Method Details
#convert ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/package_convert_worker.rb', line 16 def convert @manifest.attributes["package"] = @new_package_name update_app_label update_application_name update_activity_name update_layout_files_custom_name_space update_src_to_use_new_r update_jni File.open(@target_manifest_file, "w") do |data| data << @xml end end |
#full_name(package, basename) ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/package_convert_worker.rb', line 80 def full_name(package, basename) if basename.to_s.start_with? "." then package + basename else basename end end |
#update_activity_name ⇒ Object
67 68 69 70 71 72 |
# File 'lib/package_convert_worker.rb', line 67 def update_activity_name() @manifest.elements.each("application/activity") do |element| activity_name = element.attributes["android:name"] element.attributes["android:name"] = full_name(@original_package, activity_name) end end |
#update_app_label ⇒ Object
74 75 76 77 78 |
# File 'lib/package_convert_worker.rb', line 74 def update_app_label() @manifest.elements.each("application") do |element| element.attributes["android:label"] = @new_app_name unless @new_app_name.nil? end end |
#update_application_name ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/package_convert_worker.rb', line 36 def update_application_name() @manifest.elements.each("application") do |element| attribute = element.attributes.get_attribute "android:name" return if attribute.nil? element.attributes["android:name"] = full_name(@original_package, attribute.value) end end |
#update_jni ⇒ Object
88 89 90 91 92 93 94 95 96 97 |
# File 'lib/package_convert_worker.rb', line 88 def update_jni Dir.glob ("#@dest_dir/jni/*.c") do |file| text = File.read(file) original_method_name = "#@original_package".gsub(".","_") new_method_name = "#@new_package_name".gsub(".","_") text.gsub!("_Included_#{original_method_name}", "_Included_#{new_method_name}") text.gsub!("Java_#{original_method_name}", "Java_#{new_method_name}") File.open(file, 'w') { |f| f.write(text) } end end |
#update_layout_files_custom_name_space ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/package_convert_worker.rb', line 44 def update_layout_files_custom_name_space() Dir.glob ("#@dest_dir/res/**/*.xml") do |file| text = File.read(file) text.gsub!("http://schemas.android.com/apk/res/#@original_package", "http://schemas.android.com/apk/res/#@new_package_name") File.open(file, 'w') { |f| f.write(text) } end end |
#update_src_to_use_new_r ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/package_convert_worker.rb', line 52 def update_src_to_use_new_r() Dir.glob ("#@dest_dir/src/**/*.java") do |file| text = File.read(file) text.gsub!("import #@original_package.R;", "import #@new_package_name.R;") File.open(file, 'w') { |f| f.write(text) } end Dir.glob ("#@dest_dir/src/#{@original_package.gsub(".", "/")}/*.java") do |file| text = File.read(file) next if text.include? "import #@new_package_name.R;" text.gsub!("package #@original_package;", "package #@original_package;\r\nimport #@new_package_name.R;") File.open(file, 'w') { |f| f.write(text) } end end |