From 87f37bc5a305e6a68ef232be580350588e300fcc Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Mon, 28 Apr 2014 21:56:43 -0300 Subject: -Added OpenSSL and HTTPS support -Built-in version of the library for Windows, Android and iOS (other OSs use system one) -Small fixes all around --- platform/android/export/export.cpp | 97 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 4 deletions(-) (limited to 'platform/android/export/export.cpp') diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 51db77595..3b6a62898 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -181,7 +181,11 @@ class EditorExportPlatformAndroid : public EditorExportPlatform { String package; String name; String icon; + String cmdline; bool _signed; + bool apk_expansion; + String apk_expansion_salt; + String apk_expansion_pkey; int orientation; String release_keystore; @@ -257,6 +261,8 @@ bool EditorExportPlatformAndroid::_set(const StringName& p_name, const Variant& version_code=p_value; else if (n=="version/name") version_name=p_value; + else if (n=="command_line/extra_args") + cmdline=p_value; else if (n=="package/unique_name") package=p_value; else if (n=="package/name") @@ -279,6 +285,12 @@ bool EditorExportPlatformAndroid::_set(const StringName& p_name, const Variant& release_keystore=p_value; else if (n=="keystore/release_user") release_username=p_value; + else if (n=="apk_expansion/enable") + apk_expansion=p_value; + else if (n=="apk_expansion/SALT") + apk_expansion_salt=p_value; + else if (n=="apk_expansion/public_key") + apk_expansion_pkey=p_value; else if (n.begins_with("permissions/")) { String what = n.get_slice("/",1).to_upper(); @@ -307,6 +319,8 @@ bool EditorExportPlatformAndroid::_get(const StringName& p_name,Variant &r_ret) r_ret=version_code; else if (n=="version/name") r_ret=version_name; + else if (n=="command_line/extra_args") + r_ret=cmdline; else if (n=="package/unique_name") r_ret=package; else if (n=="package/name") @@ -329,6 +343,12 @@ bool EditorExportPlatformAndroid::_get(const StringName& p_name,Variant &r_ret) r_ret=release_keystore; else if (n=="keystore/release_user") r_ret=release_username; + else if (n=="apk_expansion/enable") + r_ret=apk_expansion; + else if (n=="apk_expansion/SALT") + r_ret=apk_expansion_salt; + else if (n=="apk_expansion/public_key") + r_ret=apk_expansion_pkey; else if (n.begins_with("permissions/")) { String what = n.get_slice("/",1).to_upper(); @@ -348,6 +368,7 @@ void EditorExportPlatformAndroid::_get_property_list( List *p_list p_list->push_back( PropertyInfo( Variant::STRING, "custom_package/debug", PROPERTY_HINT_FILE,"apk")); p_list->push_back( PropertyInfo( Variant::STRING, "custom_package/release", PROPERTY_HINT_FILE,"apk")); + p_list->push_back( PropertyInfo( Variant::STRING, "command_line/extra_args")); p_list->push_back( PropertyInfo( Variant::INT, "version/code", PROPERTY_HINT_RANGE,"1,65535,1")); p_list->push_back( PropertyInfo( Variant::STRING, "version/name") ); p_list->push_back( PropertyInfo( Variant::STRING, "package/unique_name") ); @@ -361,6 +382,9 @@ void EditorExportPlatformAndroid::_get_property_list( List *p_list p_list->push_back( PropertyInfo( Variant::BOOL, "screen/support_xlarge") ); p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release",PROPERTY_HINT_FILE,"keystore") ); p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release_user" ) ); + p_list->push_back( PropertyInfo( Variant::BOOL, "apk_expansion/enable" ) ); + p_list->push_back( PropertyInfo( Variant::STRING, "apk_expansion/SALT" ) ); + p_list->push_back( PropertyInfo( Variant::STRING, "apk_expansion/pubic_key" ) ); const char **perms = android_perms; while(*perms) { @@ -1065,13 +1089,65 @@ Error EditorExportPlatformAndroid::export_project(const String& p_path,bool p_de ep.step("Adding Files..",1); + Error err=OK; + Vector cl = cmdline.strip_edges().split(" "); + if (apk_expansion) { + String apkfname="main."+itos(version_code)+"."+package+".obb"; + String fullpath=p_path.get_base_dir().plus_file(apkfname); + FileAccess *pf = FileAccess::open(fullpath,FileAccess::WRITE); + if (!pf) { + EditorNode::add_io_error("Could not write expansion package file: "+apkfname); + return OK; + } + err = save_pack(pf); + memdelete(pf); + cl.push_back("-main_pack"); + cl.push_back(apkfname); + cl.push_back("-main_pack_md5"); + cl.push_back(FileAccess::get_md5(fullpath)); + cl.push_back("-main_pack_cfg"); + cl.push_back(apk_expansion_salt+","+apk_expansion_pkey); + + } else { + + APKExportData ed; + ed.ep=&ep; + ed.apk=apk; + + err = export_project_files(save_apk_file,&ed,false); + } + + if (cl.size()) { + //add comandline + Vector clf; + clf.resize(4); + encode_uint32(cl.size(),&clf[0]); + for(int i=0;i