I am developing cross platform application using sencha framework. I find the strange thing i.e it is easy to decompile the apk file and get the asset (resource folder) from android. I want to hide all my project files exist inside the asset folder. Is it possible to hide the javascript and html content after decompiling using this decompiler
This is not far to see the entire source, there is anyother way to conceal this
As I understand things, you need to somehow encrypt your app - because, as you point out, decompiling the source isn't all that difficult.
I don't know the specifics behind the process, but you might check out Sencha Space which provides a secure wrapper for your apps.
Related
I want to know whether when I upload my phonegap application on play store then anyone can view source code after they install my application or not.
If the source code is viewable, what steps can I take to protect it?
Basically a PhoneGap application is html/css and javascript codes wrapped in a native Android WebView. So in order to protect your source code from others, you can encode it using techniques like uglify. To a normal user, this would be enough. It is similar to what Proguard does for native Android apk. However if you want total secrecy of some part of your code logic, keep it at the server end itself. Any client facing application is readable (eg- Webpages, executable files etc).
As you may know, an apk file is actually just a zip archive, so you can try to rename (or simply force your decompressing tool to open the apk file) the file to appname.apk.zip and extract it with any zip utility.
You can however encryption your source code checkout here https://ourcodeworld.com/articles/read/386/how-to-encrypt-protect-the-source-code-of-an-android-cordova-app
I have an Android App I downloaded and installed, I have also extracted the APK,
Is there some way from the apk file to tell what programming language was used to write the program?
Are there any tools are available to help with this?
What languages can be determined and which ones cannot?
Normally most android app is build using the following texhnologies:---
React Native app
Cordova app
Native java/kotlin app
To determine the technology, you need to decompile the app first using this link
Then look for "assets" folder. Normally, asset folder should be present at the very top of application hierarchy.
Then you can determine the app technology by the following prediction:--
If asset folder is present and there have any file with the extension ".bundle"(mainly the file name is "index.android.bundle") then the app is build using React Native.
If the assets folder contain a folder name "www" and "assets/www" contain the following file/folder structure then it is a cordova app.
If neighter 1 or 2 is true then the app may be written using native code, i.e using java/kotlin
You can do a reverse engineering : (https://www.apkdecompilers.com/ or http://www.javadecompilers.com/apk) decompile the apk and see the code and its programming language.
Not an accurate way to get the specific technology, but through adb, you could check the activity name of an app.
Usually when you open different activities or pages, with native technology the ActivityName will be different like below (Playstore app):
whereas in hybrid apps such as Ionic e.g, it is usually bundled up into one, hence the only activity will be MainActivity... like the Hamilton app made with flutter:
I created an little application in Xamarin.Forms to get the images in my file with XLabs. It work with android and IOS.
But now, i want to import file and i search the best plugin to do that.
I found this : https://developer.xamarin.com/recipes/android/data/files/browse_files/
But it dosent exist with IOS. And i don't know if it's possible (to search and get file)
And it's why i come here, to get answers.
Can you give me a plugin or a solution to get file/path of any file with OpenDialog, intent, or page custom
Thank you
Are you wanting something that can search files outside of your app's directory on iOS or only files within the app's directory?
If you want the former, iOS severely restricts this kind of thing, unlike Android. So it is not possible to do the same thing on iOS that you can do on Android.
Look at the second paragraph here and see that the app is sandboxed which means it cannot view files outside of it's own directories.
That being said other apps can make files available to be shared with other applications, see here.
You can also get access to other files from the device's iCloud account. See this for pre-iOS 8 and this for post iOS 8.
I am facing a serious issue here. I built an android and iOS application. Now after I developed it completely and it is running seamlessly, I want it to be multilingual(both android and iOS). Is there any simplest method which I can use now to make both my android and iOS apps multilingual now. The .apk and .ipa files have already been prepared and the project is complete. Please help!!!!
You cannot modify your .apk and .ipa files to be multilingual. I mean, theoretically it's possible but it would be ludicrously difficult. If you are stuck with the .apk and .ipa files you have, then your task is extremely difficult, sorry.
You can modify the android and iOS projects (I am assuming they are separate projects) to provide multiple language versions of the resource files where your user text and images are stored, assuming that you correctly stored all text and images which get displayed to the user in resource files/folders.
For Android, see http://developer.android.com/training/basics/supporting-devices/languages.html
For IOS, see http://www.raywenderlich.com/64401/internationalization-tutorial-for-ios-2014.
I am currently porting a library from Linux to Android and I am having some trouble.
The lib has an extension system : it will look for all the files with a particular extension in the folder /usr/local/lib/{thelibname}/extensions/, check if they are dynamic libraries, and load them and call a handler if it is the case.
However, I don't think it is possible to tinker with the base filesystem folders in Android.
I looked into assets but they did not convince me, it looks like they are more intended for images, audio, etc...
Is there another way to embed some files in an .apk and load them afterwards by enumerating a DIR* and calling dlopen ?
The other possibility would be to put the extensions with the app data but I don't know if there is a standard path for this that I could hardcode in the lib, is there? And I don't how to put some stuff in the data at the installation of the apk ? (I use QtCreator for the generation of the APK)
Okay, I found another question which helped me to solve my problem :
How to integrate native runtime library with dlopen on NDK?
You can easily load extension libraries from anywhere in the file system, including shared folders like /sdcard/ and her children. Any app (and native libraries therein) can gain full read access to /sdcard/ with READ_EXTERNAL_STORAGE permission.
This way you can establish a folder where the extensions will be updated not necessarily by a single APK (note the changes for WRITE_EXTERNAL_STORAGE in KitKat).
If you want to deploy all extension libraries as part of the APK, it's easiest to put them in the standard folder that is used to pack the APKs (for ADT, it's ${project_root}/libs/armeabi) and then they will be automagically installed in /data/app-lib/${app_package}. This approach allows to prepare an APK for multiple architectures, preparing appropriate files in ${project_root}/libs/x86, etc.
Note that all libraries must have lib prefix and .so suffix, so e.g. mylib.so or libcrypto.so.6 will not work, even though theoretically such libraries can be loaded by dlopen().
Your app has read access to the /data/app-lib/${app_package} directory, so you can scan it either from C code, or from Java. In Java, its easy to resolve the ${app_package} even if you don't want to hardcode this name. Simply call getApplicationContext().getPackageName().
In C, you can use /proc/${pid} to find the full path to your shared library, and this way you will also know the path to the extensions.