Git Product home page Git Product logo

ccompileengine's Introduction

欢迎来到我的 GitHub 主页

关于我

你好,我是 XiaoYvYv,一个对编程和开源充满热情的 Android 开发者。在这里,我分享了一些我的项目和贡献。

喜欢的东西

番剧&游戏
https://github.com/xiaoyvyv/bangumi-data/raw/main/data/bgm/card.svg

技能

  • 开发
    • Android,Java,Kotlin
    • 前端(Vue,小程序)
    • 后端(Spring Boot, MyBatis)
  • 逆向工程
    • Apk 脱壳(一代、二代壳)
    • 反编译、抓包
    • Smail 修改重打包
  • Hook:
    • 逆向分析开发 Xposed 插件
    • Frida 动态 Hook

语言

项目

1. Bangumi for Android

这是一个全功能的 Bangumi.TV 的安卓原生客户端

2. JavaCompile & JavaCompileEngine

这是两个开源的安卓项目,可以在 Android 平台编译并运行 Java 代码和其封装好的编译框架。

      

3. LatexToMathML

这是 Latex 转 Word 格式的公式的 演示网页,输入 Latex 然后转换为 MathML,直接粘贴到 Word 文档即可!对写毕业论文的理科小伙伴来说,非常的方便!

4. CCompileEngine

这是一个开源的安卓项目,可以在 Android 平台编译并运行 C|C++ 代码和其封装好的编译框架,目前仅支持 API28 及以下,暂未适配高版本安卓系统。

5. AndroidCrawlerEngine

A dynamic crawler plug-in for the Android platform based on Dex dynamic loading, which can dynamically load and execute the dex plug-in package, and can realize real-time updates of crawler and other functions.

联系方式

您可以通过以下方式与我联系:

欢迎探索我的项目和贡献,并与我分享您的想法和建议!

ccompileengine's People

Contributors

xiaoyvyv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

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

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
`

适配问题

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

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.