First . ADB 基础 ,测试设备
这个在之前疯狂刷机的年纪学的,零零散散的没有具体的文档了,因为用的 android studio 所以直接找到相关目录加入环境变量即可’
1 2 3
| adb devices adb connect 192.168.0.xx:5555
|
测试手机用的小米 note3,miui 开始慢慢限制权限了,所以刷了个魔趣的系统,开启开发者模式之后,可以在开发者模式里找到 网络 adb 开启
!跑题,关于刷机的步骤 非必要
Twrp 下载 https://twrp.me/Devices/
魔趣 ROM https://download.mokeedev.com/
1 2 3 4 5 6 7 8 9 10 11
|
adb reboot bootloader
fastboot flash recovery twrp-2.8.x.x-xxx.img
fastboot reboot
adb push /xxxx/xxx.img /sdcard/
|
下一步使用 adb connect 192.168.0.xx:5555
链接局域网设备。 天下苦(type c 的接口一直掉)已久 😂
Second . 新建项目
Third . build.Gradle 配置
看的 uniapp adnroid 本地打包 的文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| plugins { id 'com.android.application' }
android { signingConfigs { jks { storeFile file('xx.jks') storePassword 'xx' keyAlias 'xx' keyPassword 'xxx' } }
compileSdkVersion 30 buildToolsVersion "30.0.2"
defaultConfig { applicationId "com.rtg.test" minSdkVersion 19 targetSdkVersion 30 versionCode 1 versionName "1.0"
multiDexEnabled true ndk { abiFilters 'x86','armeabi-v7a' } testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" signingConfig signingConfigs.jks }
buildTypes { ... }
aaptOptions { additionalParameters '--auto-add-overlay' ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" }
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
repositories { flatDir( dirs: "libs" ) } dependencies { implementation fileTree(dir: "libs",includes: ["*.aar","*.jar"]) }
|
Fourth . AndroidManifest.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.rtg.test">
<uses-permission android:name="android.permission.CAMERA" />
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Test">
<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/TranslucentTheme" android:screenOrientation="user" android:windowSoftInputMode="adjustResize" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
</manifest>
|
More .
Android 文档
https://developer.android.com/guide/components/fundamentals?hl=zh-cn
官方文档挺清晰的,就是没耐心看完
UniApp 原生扩展加 alipay 的 demo,没 UI 的,安卓画界面的方式还是没搞懂
支付宝文档:https://opendocs.alipay.com/open/204/105296
import io.dcloud.feature.uniapp
的包是在 uniapp adnroid 本地打包 下的 sdk 里 uniapp-v8-release.aar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| package com.rtg.mylibrary;
import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils;
import com.alipay.sdk.app.AuthTask; import com.alipay.sdk.app.EnvUtils; import com.alipay.sdk.app.PayTask;
import java.util.HashMap; import java.util.Map;
import io.dcloud.feature.uniapp.annotation.UniJSMethod; import io.dcloud.feature.uniapp.bridge.UniJSCallback; import io.dcloud.feature.uniapp.common.UniModule;
public class Pay extends UniModule {
@UniJSMethod public void sayHello(String tag) { System.out.println("hello uni module!"); }
private void isSandBox(Boolean sandbox){ if(sandbox){ EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX); }else { EnvUtils.setEnv(EnvUtils.EnvEnum.ONLINE); } }
@UniJSMethod(uiThread = true) public void AliPay(String orderInfo,Boolean sandbox, UniJSCallback callBack){
this.isSandBox(sandbox);
if(mUniSDKInstance.getContext() instanceof Activity){ final Activity activity = (Activity) mUniSDKInstance.getContext(); Map<String,Object> jsCallbackResult = new HashMap<>();
Runnable payRunnable = new Runnable() { @Override public void run() { try{ PayTask task = new PayTask(activity); String result = task.pay(orderInfo,true); activity.runOnUiThread(new Runnable() { @Override public void run() { jsCallbackResult.put("result",result); if(callBack!=null)callBack.invoke(jsCallbackResult); } }); }catch(final Exception err){ activity.runOnUiThread(new Runnable() { @Override public void run() { jsCallbackResult.put("exception",err); if(callBack!=null)callBack.invoke(jsCallbackResult); } }); System.out.println("支付失败"+err); } } };
Thread _thread = new Thread(payRunnable); _thread.start(); }
} }
|