Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android port #461

Closed
appt2 opened this issue Feb 6, 2024 · 16 comments
Closed

Android port #461

appt2 opened this issue Feb 6, 2024 · 16 comments

Comments

@appt2
Copy link
Contributor

appt2 commented Feb 6, 2024

hello @larsgrefer can you adding android port?

larsgrefer added a commit that referenced this issue Feb 18, 2024
@larsgrefer
Copy link
Owner

@appt2
Copy link
Contributor Author

appt2 commented Feb 19, 2024

With version 3.4.2 we now have an Android variant: https://repo1.maven.org/maven2/de/larsgrefer/sass/sass-embedded-android/3.4.2/

There is also an example app which uses the new library: https://github.com/larsgrefer/dart-sass-java/blob/3.x/test-projects/android-app/src/main/java/de/larsgrefer/sass/embedded/android/test/MainActivity.java

Thank you, can the previous methods be used?

@appt2
Copy link
Contributor Author

appt2 commented Feb 19, 2024

now testing and result

02-19 11:30:19.377 985 985 E lib : No dart binary found for ABIs [arm64-v8a, armeabi-v7a, armeabi]
02-19 11:30:19.377 985 985 E lib : java.lang.IllegalStateException: No dart binary found for ABIs [arm64-v8a, armeabi-v7a, armeabi]
02-19 11:30:19.377 985 985 E lib : at de.larsgrefer.sass.embedded.android.AndroidConnectionFactory.bundled(AndroidConnectionFactory.java:30)
02-19 11:30:19.377 985 985 E lib : at de.larsgrefer.sass.embedded.android.AndroidSassCompilerFactory.bundled(AndroidSassCompilerFactory.java:17)
02-19 11:30:19.377 985 985 E lib : at com.example.apksinger.MainActivity.onCreate(MainActivity.java:51)
02-19 11:30:19.377 985 985 E lib : at android.app.Activity.performCreate(Activity.java:8891)
02-19 11:30:19.377 985 985 E lib : at android.app.Activity.performCreate(Activity.java:8856)
02-19 11:30:19.377 985 985 E lib : at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1471)
02-19 11:30:19.377 985 985 E lib : at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3973)
02-19 11:30:19.377 985 985 E lib : at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4144)
02-19 11:30:19.377 985 985 E lib : at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
02-19 11:30:19.377 985 985 E lib : at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
02-19 11:30:19.377 985 985 E lib : at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:99)
02-19 11:30:19.377 985 985 E lib : at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2589)
02-19 11:30:19.377 985 985 E lib : at android.os.Handler.dispatchMessage(Handler.java:106)
02-19 11:30:19.377 985 985 E lib : at android.os.Looper.loopOnce(Looper.java:224)
02-19 11:30:19.377 985 985 E lib : at android.os.Looper.loop(Looper.java:318)
02-19 11:30:19.377 985 985 E lib : at android.app.ActivityThread.main(ActivityThread.java:8762)
02-19 11:30:19.377 985 985 E lib : at java.lang.reflect.Method.invoke(Native Method)
02-19 11:30:19.377 985 985 E lib : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
02-19 11:30:19.377 985 985 E lib : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)

@larsgrefer
Copy link
Owner

Have you used this setting in your apps build.gradle?

packagingOptions.jniLibs.useLegacyPackaging true

@appt2
Copy link
Contributor Author

appt2 commented Feb 19, 2024

Have you used this setting in your apps build.gradle?

packagingOptions.jniLibs.useLegacyPackaging true

yes adding and not work compile to system android can you make apk demo file?

@larsgrefer
Copy link
Owner

Just clone this repo and run ./gradlew test-projects:android-app:installDebug

@appt2
Copy link
Contributor Author

appt2 commented Feb 29, 2024

hi @larsgrefer im winter code to compile scss

package Ninja.coder.Ghostemane.code.tasks.app;

import Ninja.coder.Ghostemane.code.ColorAndroid12;
import android.content.Context;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.color.MaterialColors;
import com.sass_lang.embedded_protocol.InboundMessage;
import de.larsgrefer.sass.embedded.CompileSuccess;
import de.larsgrefer.sass.embedded.SassCompiler;
import de.larsgrefer.sass.embedded.connection.CompilerConnection;
import de.larsgrefer.sass.embedded.connection.Packet;
import java.io.File;
import java.io.IOException;

public class SassForAndroid {
  protected static SassCompiler compiler;

  static {
    compiler =
        new SassCompiler(
            new CompilerConnection() {

              @Override
              public void sendMessage(Packet<InboundMessage> arg0) {}

              @Override
              public void sendMessage(int arg0, InboundMessage arg1) {}

              @Override
              public Packet<com.sass_lang.embedded_protocol.OutboundMessage> readResponse() {
                return null;
              }

              @Override
              public void close() {}
            });
  }

  public static String CompileForStringScss(String input) {
    try {
      CompileSuccess sb = compiler.compileScssString(input);
      return sb.getCss();
    } catch (Exception err) {
      return err.getLocalizedMessage();
    }
  }

  public static void CompilerForFile(File input, String output) {
    try {
      CompileSuccess sb = compiler.compileFile(input);
      output = sb.getCss();
    } catch (Exception err) {
      err.printStackTrace();
    }
  }

  public static void CompileForStringSass(String input, String output) {
    try {
      CompileSuccess sb = compiler.compileSassString(input);
      output = sb.getCss();
    } catch (Exception err) {
      err.printStackTrace();
    }
  }

  public static void run(Context context, String input) {
    var sheet = new BottomSheetDialog(context);
    EditText tv = new EditText(context);
    LinearLayout.LayoutParams param =
        new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    tv.setLayoutParams(param);
    param.rightMargin = 3;
    param.leftMargin = 3;
    tv.setTextColor(MaterialColors.getColor(tv, ColorAndroid12.colorOnSurface, 0));
    tv.setPadding(9, 9, 9, 9);
    sheet.setContentView(tv);
    tv.setText(CompileForStringScss(input));
    sheet.show();
  }
}

result

 Attempt to invoke virtual method 'int de.larsgrefer.sass.embedded.connection.Packet.getCompilationId()' on a null object reference

plz help me to fix

@appt2
Copy link
Contributor Author

appt2 commented Feb 29, 2024

and convert api 26 to 21

@larsgrefer
Copy link
Owner

When you replace the CompilerConnection with a dummy implementation, its no wonder nothing works.
The NullPointerException happens, because your readResponse() method returns null.

This should be everything you need:

try (SassCompiler sassCompiler = AndroidSassCompilerFactory.bundled(getApplicationContext())) {
target.setText(sassCompiler.getVersion().toString());
} catch (Exception e) {
Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
Log.e("lib", e.getLocalizedMessage(), e);
}

@appt2
Copy link
Contributor Author

appt2 commented Mar 1, 2024

@larsgrefer tnks fixed view in view code

bro can you convert api 26 to 21?

@appt2
Copy link
Contributor Author

appt2 commented Mar 14, 2024

Task :app:processReleaseMainManifest FAILED
/storage/emulated/0/AndroidIDEProjects/Ghost-web-ide/app/src/main/AndroidManifest.xml Error:
uses-sdk:minSdkVersion 21 cannot be smaller than version 26 declared in library [de.larsgrefer.sass:sass-embedded-android:3.5.1] /data/data/com.itsaky.androidide/files/home/.gradle/caches/transforms-3/175657cbb8d3839214e0a1b6ab289f29/transformed/jetified-sass-embedded-android-3.5.1/AndroidManifest.xml as the library might be using APIs not available in 21
Suggestion: use a compatible library with a minSdk of at most 21,
or increase this project's minSdk version to at least 26,
or use tools:overrideLibrary="de.larsgrefer.sass.embedded.android" to force usage (may lead to runtime failures)

See https://developer.android.com/r/studio-ui/build/manifest-merger for more information about the manifest merger.

@larsgrefer plz fix

@larsgrefer
Copy link
Owner

@appt2 You have to update to 3.6.0.

You are still using 3.5.1 which still has a minSdk of 26

@appt2
Copy link
Contributor Author

appt2 commented Mar 14, 2024

@appt2 You have to update to 3.6.0.

You are still using 3.5.1 which still has a minSdk of 26

last version mevan 3.5.1
https://mvnrepository.com/artifact/de.larsgrefer.sass/sass-embedded-android/3.5.1

@larsgrefer
Copy link
Owner

@appt2
Copy link
Contributor Author

appt2 commented Mar 14, 2024

@appt2
Copy link
Contributor Author

appt2 commented Apr 29, 2024

Well, the Android version has been ported, so I will close this issue

@appt2 appt2 closed this as completed Apr 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants