Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 19, 2024 09:57 pm GMT

Expo Is The Peep Squeak To DroidScript.

Firstly, What Is DroidScript

DroidScript also formerly known as AndroidScript, is a javascript framework (more of a bridge between native android api's and jacvascript using V8 normally*.
That means you can create interfaces natively, no mimicking using HTML or using another rendering engine.

That also means the hundreds of lines of Java or Kotlin (XML or Using Jetpack Compose) you have to write can be reduced to 1 to 10 for every Api and component.

Everything is as clear as daytime.
Please note i am not affiliate with DroidScript, i am not an employee, and i just build plugins for use by other developers for free.

Why then Isn't it a Mammoth ?, given its powers

That comes down to timing, just like Haxe its initial release never gained it traction, even though both are good.
But that doesn't mean its not being used widely.

Also its path has been a rocky one, the following trials and tribulations have contributed:

DroidScript is an offline ide that allows access to Api's like file exposure and given this state, it means bad actors could do illegal activities and could be tired to the application using its package name

Because of this DroidScript has been outed for AdMob Misuse, which could have came from bad actors running unbuilt projects on the IDE, which exploit AdMob. Therefore after the 2020 Incident, Almost banning it, its not supported anymore.

I've tried to summarize the AdMob Misuse Issue, its very controversial debate. Hacker News Thread

Why Compare Open Source And Almost Open Source

DroidScript code is available to view fully, the java Implementation, js Bridge (app.js) and Documentation can all be found on GitHub, however its a paid platform.

I'm a for free and open things guy, but i have a special case here, given maintenance of the project since 2014 and supporting alot of the messy javascript ecosystem.
To Me 0.49$ is great, remember you can use it even without paying, only payment required for building projects.

Why Over Everything Else

This code block, creates a layout and adds a progress bar.

DroidScript

/* Use J2V8 Instead Of V8 */cfg.Fast/* Import Material 2 */cfg.MUI/* Import Material 3 Plugin, Built By Me */app.LoadPlugin('Material3')function OnStart(){    app.CreateMaterial3();    lay = ui.createLayout('Linear','FillXY')    progressLoader = ui.addProgressBar('linear',0.85,lay)    progressLoader.SetMargins(null,0.4)    progressLoader.SetValue(79)    app.AddLayout(lay)}

Java

import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ProgressBar;import android.widget.RelativeLayout;public class MainActivity extends AppCompatActivity {    private RelativeLayout mainLayout;    private ProgressBar progressLoader;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mainLayout = findViewById(R.id.main_layout);        progressLoader = findViewById(R.id.progressLoader);        progressLoader.setPadding(0, 0, 0, 0); // Adjust padding if needed    }}

And :

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/main_layout"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="16dp">    <ProgressBar        android:id="@+id/progressLoader"        style="@android:style/Widget.ProgressBar.Horizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_centerVertical="true"        android:progress="79"        android:layout_marginTop="160dp" /></RelativeLayout>

On a large project i.e Reddit, it would be easier to do this on DroidScript, less time swapping between XML and Java, just statements.

Another Example Using Camera :

DroidScript

function OnStart(){    lay = app.CreateLayout( "Linear", "VCenter,FillXY" );    cam = app.CreateCameraView( 0.8, 0.4 );    cam.SetOnReady( cam_OnReady );    lay.AddChild( cam );    app.AddLayout( lay );}function cam_OnReady() {cam.StartPreview();}

Java

  • Android Manifest
<uses-permission android:name="android.permission.CAMERA"/><uses-feature android:name="android.hardware.camera" android:required="true"/>
  • Java
import android.app.Activity;import android.hardware.Camera;import android.os.Bundle;import android.view.SurfaceHolder;import android.view.SurfaceView;import java.io.IOException;public class CameraActivity extends Activity implements SurfaceHolder.Callback {    private Camera mCamera;    private SurfaceView mSurfaceView;    private SurfaceHolder mSurfaceHolder;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_camera);        mSurfaceView = findViewById(R.id.surfaceView);        mSurfaceHolder = mSurfaceView.getHolder();        mSurfaceHolder.addCallback(this);    }    @Override    public void surfaceCreated(SurfaceHolder holder) {        mCamera = Camera.open();        try {            mCamera.setPreviewDisplay(holder);            mCamera.startPreview();        } catch (IOException e) {            e.printStackTrace();        }    }    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {        // No need to handle this for simplicity    }    @Override    public void surfaceDestroyed(SurfaceHolder holder) {        mCamera.stopPreview();        mCamera.release();    }}
  • Layout XML
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <SurfaceView        android:id="@+id/surfaceView"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>

Quick OverView

  • DroidScript detects what you need and takes care of permissions
  • DroidScript supports native android development and in the future a WORA viewpoint, except backend lol .

I will do a much better explained part 2 if this does well
or i can squeeze whatever motivation i have.

Sorry For Mentioning Expo, You Wouldn't Read
Ill cover it on the next so you better follow, or else you will break a database and have your code sql injected and fired.


Original Link: https://dev.to/oarabiledev/expo-is-the-peep-squeak-to-droidscript-2mce

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To