I'm sure there is a way to do this, but I can't figure it out.
I want to be able to build or run my ionic app and have it point to the appropriate api.
If I'm running it on my localhost, or if I want it to point to a stage/api or if I want it to point to a prod/api.
I have to imagine there is a way to set some variables when you do a build.
For example 'ionic cordova build ios --var_name=value'
Does anyone have experience with this?
I know a way in android. You have to look for
build.gradle inside platforms/android/app/build.gradle
And add this code:
android {
flavorDimensions "default"
productFlavors {
espatolero {
manifestPlaceholders = [ appName: "E y L inmobiliaria", launcherName: "Espatolero y Lorenzo", appIcon:"#drawable/icon"]
resValue "string", "images_url", "/espatolero/"
resValue "string", "primary_color", "#C51112"
resValue "string", "secondary_color", "#c41011"
resValue "string", "third_color", "#999"
resValue "string", "header_home", "true"
resValue "string", "header_title", "Espatolero & Lorenzo"
resValue "string", "web_page", "http://www.espatolerolorenzo.com.ar/"
resValue "string", "has_temporario", "false"
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFileName = new File(output.outputFileName, "clientapp-${variant.name}.apk")
}
}
And then with this plugin you can get the variables:
cordova.getAppResources.getResources('images_url').then((images_url) => {
Maybe is way for iOS because I remember seen a iOS folder on github of the plugin.
Related
I need to create two different versions of the app.
- debug
-prod
for debug, version i need user to select the test environment before anything else begins. i need some way to know what environment user has selected and then load API endpoints config file accordingly.
what's the best way to handle this in flutter?
I have seen in some apps that for iOS, debug options are available in app settings under the standard iOS settings menu , select the app and then see those options in there.
You might want to use Flutter Flavours. As the name suggests, you can practically make flavours of the same app based on your need - debug, test, production etc. And not only API end-points, but you can also configure everything else such as app icon, different labels on the screen etc.
As suggested in this link, you can have different main.dart file for each flavour. You can read different configuration from JSON file (such as API end-point) and rest of your app will remain same. For example, see below :
This is another helpful link.
Background
I am developing a Cordova app that must run as a service, i.e. continue in the background and restart when the device does. As far as I can tell, on iOS it is just a case of setting the UIBackgroundModes correctly but on Android requires a little more effort and the service needs to be explicitly started.
I have developed a plugin for Android based on Mark Taylor's example here.
At present I have some JS called on deviceready to start the Android code but don't need to do anything for iOS.
Question
How should I package my plugin so that it will work on all platforms with zero config. It seems clunky to write if (Device.type == 'android') statements in my main JS but I don't really want to write native null implementations.
Is there a suggested approach for this?
Figured it out using the <js-module> tag described here.
Added this to my plugin.xml:
<platform name='android'>
...
<js-module src="androidSpecificStuff.js" name="SomeModule">
<clobbers target="SomeModule" />
</js-module>
...
</platform>
Then in androidSpecificStuff.js had code like:
document.addEventListener('deviceready', function () {
// do android-specific initialisation here
})
Hey guys so I am trying to dev a app for IPhone and am very very stumped right now. I have tried using Contact Editor - ANE (http://extensionsforair.com/extensions/contact-editor/#comment-7488) but I get an error:
VerifyError: Error #1014: Class pl.mllr.extensions.contactEditor::ContactEditor could not be found.
at runtime::ContentPlayer/loadInitialContent()
at runtime::ContentPlayer/playRawContent()
at runtime::ContentPlayer/playContent()
at runtime::AppRunner/run()
at ADLAppEntry/run()
at global/runtime::ADLEntry()
I made sure I included the correct file path under the ActionScript Build Path, besides that I don't know what else I can do. I do get the function like ContactsSimpe() function that hints when looking for a function. So I know it is connecting but once I go to compile and test in the flash pro I get this error. Here is some code that may help:
code....
import pl.mllr.extensions.contactEditor.ContactEditor;
public class soscode extends MovieClip {
var contactEditor:ContactEditor;
public function soscode() {
stop();
init();
contactEditor.getContacts();
}
code...
in my project window on left the .swc file for the native extension is in the reference folder. That is about it.
I really need some help on this an if you could give me a hand I would much appreciate it!
David,
Please let me know if you need anything else.
I'm guessing this might be a bit late now, but I've just been having this problem myself, and it was caused by the ANE not being packaged with the app when it's sent to the device / simulator.
Classes within the NE weren't being found at runtime, but were accessible in Flash Builder.
It turned out that by default the .ANE file wasn't copied to the device.
To fix this, change the following project property:
ActionScript Build Packaging -> Apple iOS -> Native Extensions -> Check 'Package' for the ANE
No idea why it wasn't included by default. When you uncheck 'Package' you get a warning telling you that it may cause runtime issues!
Hope this is of use for somebody.
I am porting an app from HVGA (Bada 2.0.2 device ) to WVGA( Bada 1.2) using ecllipse( version 2.0.2 ).
For this I have done the following changes in my project
Project-> Properties/Bada build
Set Model WVGA and set AutoScaling true(480x800)
I have create a form of Resolution 480x800.
For images I have add a folder in Resouce folder
-> 480x800
->ScreenDensity-High
and place all my resources in these folder .
But my app crashes when I click the button in the app to Select more images as requirement in my app and the log show Output as Shown
Info, Installation completed.
0080.772,EXCEPTION,P32,T00,A125,Osp::Media::__Image::HasAlphaChannels (1547) > [E_UNSUPPORTED_FORMAT]
0080.774,EXCEPTION,P32,T00,A125,Osp::Media::Image::HasAlphaChannels (599) > [E_UNSUPPORTED_FORMAT] Propagated.
0080.851,EXCEPTION,P32,T00,A125,Osp::Media::__Image::HasAlphaChannels (1547) > [E_UNSUPPORTED_FORMAT]
0080.851,EXCEPTION,P32,T00,A125,Osp::Media::Image::HasAlphaChannels (599) > [E_UNSUPPORTED_FORMAT] Propagated.
I had check for this in the Bada Help but unable to find solution.Please give your suggestion to solve this problem
As I see you just moved your Images (optimized for HVGA) to a new folder to use them for WVGA.
If I understand it correctly, I suggest that you with the reference of bada development documentation in your SDK (through bada IDE help system) which specifies that what is the specific images properties for WVGA screens, change your images properties to a compatible ones (re-size them) and rebuild your project.
I think the problem will solve , we like your feedback.
best regards.
I find the reference for you mate: Using Customized and Optimized Resources
Can any expert here please point me to some valid walkthrough on how to make the ChildBrowser work with Cordova 1.7 in iPhone? I have found lots of documents and blogs out there that tell you how to do it, but none of them have worked for me. It is not a whitelist issue for sure, as for the time being I have set it to the wildcard *, so whitelisting problems can be safely ruled out I guess. In some cases, ChildBrowser was successfully installed, but when I called the showwebpage function, it just would not show up (there wouldn't be any errors either!). Other times, it just won't even install. I have already spent 2 days on it, and am still clueless. Just hoping if you could help me out. Any help would be appreciated.
I could finally get the ChildBrowser to open up following what Dhawal has suggested below. But the onLocationChange event never seems to fire. Again, this seems to be a common problem with Cordova 1.7. Any workarounds apart from rolling back to some older Cordova version? Any help would be appreciated.
Here's what I am trying to do:
window.plugins.childBrowser.showWebPage(url, { showLocationBar: true });
window.plugins.childBrowser.onLocationChange = function(loc){ alert("In index.html new loc = " + loc); };
Ok, got it to work. Seems like ChildBrowser is still compatible with older versions of Cordova only. Had to delve into Objective-C and make changes in the plugin to make it work.
I have a basic application which has childbrowser integration with Cordova 1.7. I have put the steps also to generate build same application.
ios-cordova-childbrowser
Edit
Childbrowser events were not getting called properly so I added this fix in ChildBrowser.js file to resolve it.
if (cordovaRef && cordovaRef.addConstructor) {
cordovaRef.addConstructor(ChildBrowser.install);
// Make ChildBrowser global
window.ChildBrowser = ChildBrowser;
} else {
console.log("ChildBrowser Cordova Plugin could not be installed.");
return null;
}