add app.features to expose <uses-feature ...> elements to the manifest file, cleanup the XML generated code

This commit is contained in:
Laurent Sansonetti
2014-10-23 17:22:54 +02:00
parent e4ff85f3b5
commit 53e49c1443
2 changed files with 15 additions and 7 deletions

View File

@@ -44,7 +44,7 @@ task :build do
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="#{App.config.package}" android:versionCode="#{x=App.config.version_code}" android:versionName="#{App.config.version_name}">
<uses-sdk android:minSdkVersion="#{App.config.api_version}" android:targetSdkVersion="#{App.config.target_api_version}"/>
EOS
# Application permissions
# Application permissions.
permissions = Array(App.config.permissions)
if App.config.development?
# In development mode, we need the INTERNET permission in order to create
@@ -55,6 +55,13 @@ EOS
permission = "android.permission.#{permission.to_s.upcase}" if permission.is_a?(Symbol)
android_manifest_txt << <<EOS
<uses-permission android:name="#{permission}"></uses-permission>
EOS
end
# Application features.
features = Array(App.config.features)
features.each do |feature|
android_manifest_txt << <<EOS
<uses-feature android:name="#{feature}"></uses-feature>
EOS
end
# Custom manifest entries.
@@ -67,10 +74,10 @@ EOS
android_manifest_txt << <<EOS
<activity android:name="#{App.config.main_activity}" android:label="#{App.config.name}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
EOS
# Sub-activities.
(App.config.sub_activities.uniq - [App.config.main_activity]).each do |activity|
@@ -81,7 +88,7 @@ EOS
EOS
end
android_manifest_txt << <<EOS
</application>
</application>
</manifest>
EOS
android_manifest = File.join(app_build_dir, 'AndroidManifest.xml')

View File

@@ -30,7 +30,7 @@ module Motion; module Project;
variable :sdk_path, :ndk_path, :avd_config, :package, :main_activity,
:sub_activities, :api_version, :target_api_version, :arch, :assets_dirs,
:icon, :logs_components, :version_code, :version_name, :permissions,
:application_class
:features, :application_class
def initialize(project_dir, build_mode)
super
@@ -41,6 +41,7 @@ module Motion; module Project;
@assets_dirs = [File.join(project_dir, 'assets')]
@vendored_projects = []
@permissions = []
@features = []
@manifest_entries = {}
@release_keystore_path = nil
@release_keystore_alias = nil