这篇文章不包含Python的安装教程,请确保你已经安装好Python解释器。
安装Chaquopy
-
在
/build.gradle
中添加如下语句:plugins { id 'com.chaquo.python' version '14.0.2' apply false }
-
在
/app/src/build.gradle
中添加如下语句:plugins { id 'com.android.application' id 'com.chaquo.python' }
-
在
/app/src/build.gradle
中的android
中添加如下语句:defaultConfig { ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } python{ version "3.8" //python版本,建议使用3.8 buildPython "C:\\python.exe" //设置python解释器位置,注意版本对应 pip{ install "libgen-api" }//安装python库,“libgen-api”是测试用的 } }
调用Python代码
-
启动Python环境:
if (!Python.isStarted()) { Python.start(new AndroidPlatform(this)); } ... python 代码 ...
-
利用
Java equivalent
调用Python代码,详见 Java API -
设置联网权限,在
/app/src/main/AndroidManifest.xml
中的manifest
块中添加如下语句:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
测试代码
import android.widget.Toast;
import com.chaquo.python.PyObject;
import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (!Python.isStarted()) {
Python.start(new AndroidPlatform(this));
}
if(Python.isStarted()){
Toast.makeText(MainActivity.this, "this is debug message!", 5000).show();
System.out.println("This is debug msg!");
}
Python py = Python.getInstance(); //获得Python实例
PyObject libgen_api = py.getModule("libgen_api"); //import libgen_api
PyObject libgen = libgen_api.callAttr("LibgenSearch"); //调用libgen_api.LibgenSearch()
try{
PyObject result = libgen.callAttr("search_author","Jane Austen");
System.out.println(result);
}catch (RuntimeException runtimeException){
System.out.println("网络异常");
}
//测试时请连接VPN
//虚拟机可能有网络问题,建议使用真实机
//可通过Android Studio 下方 Logcat 选项卡查看输出。
}
}