Git Product home page Git Product logo

ccompileengine's Issues

Help

hello bro me using in code

import android.app.ProgressDialog;
import android.content.pm.PackageManager;
import android.Manifest;
import android.os.Environment;
import android.os.Handler;
import android.widget.Button;
import android.widget.Toast;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import androidx.core.content.ContextCompat;
import androidx.core.app.ActivityCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.xiaoyv.ccompile.compiler.listener.CompileCallback;
import com.xiaoyv.ccompile.compiler.listener.ExecuteListener;
import java.io.File;
import java.util.List;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
	private Button runGcc, runCode;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		runCode = findViewById(R.id.runCode);
		runGcc = findViewById(R.id.runGcc);

		setFiles();
		runCode.setOnClickListener(v -> {
			CompileCpp("/storage/emulated/0/apk/Main.cpp");
			Handler handler = new Handler();
			handler.postDelayed(() -> {
				RunCodes("/storage/emulated/0/apk/");
			}, 3000);

		});
		runGcc.setOnClickListener(c -> {
			installGcc();
		});
	}

	@Override
	public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
		super.onRequestPermissionsResult(requestCode, permissions, grantResults);
		if (requestCode == 1000) {
			setFiles();
		}
	}

	private void getFiles() {
		if (ContextCompat.checkSelfPermission(this,
				Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED
				|| ContextCompat.checkSelfPermission(this,
						Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
			ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.READ_EXTERNAL_STORAGE,
					Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1000);
		} else {
			setFiles();
		}
	}

	private void setFiles() {
		new MaterialAlertDialogBuilder(this).setTitle("مجوز فایب").setMessage("مجوز فایب رو بده جاکش")
				.setPositiveButton("ok", (ccc, dd) -> {
					getFiles();
				}).show();
	}

	private void installGcc() {
		ProgressDialog dialogs = new ProgressDialog(MainActivity.this, ProgressDialog.THEME_DEVICE_DEFAULT_DARK);
		dialogs.setTitle("Loading...");
		dialogs.show();
		File dir = new File(Environment.getExternalStorageDirectory() + "/c_compiler/gcc.zip");

		CCppEngine.installGcc(this, new File(Environment.getExternalStorageDirectory() + "/c_compiler/gcc.zip"),
				new CCppEngine.OnInstallListener() {
					@Override
					public void onSuccess() {
						Log.e("aaaa", "安装成功");
						Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();
						dialogs.dismiss();
					}

					@Override
					public void onError(String error) {
						Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
						dialogs.dismiss();
					}
				});
	}

	private void CompileCpp(String dir) {
		File cFile = new File(dir);
		List<File> files = new ArrayList<>();
		files.add(cFile);

		Log.e("==========", "======================================================================");
		CCppEngine.getCppCompiler().compile(files, new CompileCallback() {
			@Override
			public void onSuccess(String outPath) {
				Log.e("==========", "编译完成:" + outPath);
				Toast.makeText(getApplicationContext(), outPath, 2).show();

			}

			@Override
			public void onError(String error) {
				Log.e("==========", "编译失败:" + error);
				Toast.makeText(getApplicationContext(), error, 2).show();

			}
		});
	}

	private void RunCodes(String dir) {
		File file = new File(dir);

		CCppEngine.getCExecutor().exec(file, new ExecuteListener() {
			@Override
			public void onExecuteStart(Process process) {
				Log.e("开始>>>>>>>", " process start");
			}

			@Override
			public void printStderr(Throwable error) {
				Log.e("错误>>>>>>>", error.toString());
				error.printStackTrace();
				Toast.makeText(getApplicationContext(),error.toString(),2).show();
			}

			@Override
			public void printStdout(CharSequence out) {
				Log.e("输出>>>>>>>", out.toString());
				runCode.setText(out);
			}

			@Override
			public void onExecuteFinish(int waitFor, int exitValue) {
				Log.e("完成>>>>>>>", "====================" + waitFor + "================" + exitValue);
			}
		});
	}

}

This code does not compile the code and does not display anything. Gcc is also installed

适配问题

希望作者能适配一下SDK30+,臣不胜受恩感激!!

Library code error width androidsdk 30

Your source very pro. I like this. Thank you so much!

I build app and using your code but build on device has android >= 30 it error permionsion when conpiler

manifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29"/>
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:minSdkVersion="30" tools:ignore="ScopedStorage"/>

java code check permission:

public static Boolean checkPermissions(Activity activity) {
        Boolean res = false;

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
            Log.e("Permission", Build.VERSION_CODES.Q+"===="+ Environment.isExternalStorageManager() );
//            Environment.isExternalStorageManager();
            if (!Environment.isExternalStorageManager()) {
//                ActivityCompat.requestPermissions(activity, new String[]{
//                        Manifest.permission.READ_EXTERNAL_STORAGE,
//                        Manifest.permission.MANAGE_EXTERNAL_STORAGE,
//                        Manifest.permission.WRITE_EXTERNAL_STORAGE
//                }, 1);
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                Uri uri = Uri.fromParts("package", activity.getPackageName(), null);
                intent.setData(uri);
                activity.startActivity(intent);
            }
        }
        if (ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
            ActivityCompat.requestPermissions(activity, new String[]{
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE,
//                    Manifest.permission.MANAGE_EXTERNAL_STORAGE
            }, MY_PERMISSIONS_REQUEST_WRITE_READ);
        } else {
            res = true;
        }

        return res;
    }

screenshot_1631956851
`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.