瀏覽代碼

1、初始化项目信息

tags/0.0.1^0
PH2 3 年之前
當前提交
9abac35b82
共有 100 個檔案被更改,包括 2563 行新增0 行删除
  1. +3
    -0
      CHANGELOG.md
  2. +1
    -0
      LICENSE
  3. +52
    -0
      README.md
  4. +55
    -0
      android/build.gradle
  5. +2
    -0
      android/gradle.properties
  6. +5
    -0
      android/gradle/wrapper/gradle-wrapper.properties
  7. +1
    -0
      android/settings.gradle
  8. 二進制
     
  9. 二進制
     
  10. 二進制
     
  11. 二進制
     
  12. 二進制
     
  13. 二進制
     
  14. +3
    -0
      android/src/main/AndroidManifest.xml
  15. +180
    -0
      android/src/main/java/com/jd/jdsdk/JDHelper.java
  16. +65
    -0
      android/src/main/java/com/jd/jdsdk/JdsdkPlugin.java
  17. +28
    -0
      android/src/main/java/com/jd/jdsdk/LoadingDialog.java
  18. +12
    -0
      android/src/main/java/com/jd/jdsdk/PluginConstants.java
  19. +36
    -0
      android/src/main/java/com/jd/jdsdk/PluginResponse.java
  20. 二進制
     
  21. 二進制
     
  22. 二進制
     
  23. 二進制
     
  24. 二進制
     
  25. 二進制
     
  26. 二進制
     
  27. 二進制
     
  28. 二進制
     
  29. 二進制
     
  30. 二進制
     
  31. 二進制
     
  32. 二進制
     
  33. +17
    -0
      android/src/main/res/drawable/btn_reload.xml
  34. +8
    -0
      android/src/main/res/drawable/kepler_btn_back.xml
  35. +8
    -0
      android/src/main/res/drawable/kepler_btn_select_more.xml
  36. +8
    -0
      android/src/main/res/drawable/kepler_dialog_bk.xml
  37. +12
    -0
      android/src/main/res/drawable/kepler_dialog_button_ne.xml
  38. +21
    -0
      android/src/main/res/drawable/kepler_dialog_button_po.xml
  39. +46
    -0
      android/src/main/res/drawable/pressbar_color.xml
  40. +12
    -0
      android/src/main/res/drawable/sdk_title_bg_with_shadow.xml
  41. +12
    -0
      android/src/main/res/drawable/yuanjiao.xml
  42. +34
    -0
      android/src/main/res/layout/dialogloading.xml
  43. +87
    -0
      android/src/main/res/layout/item_tab_layout.xml
  44. +18
    -0
      android/src/main/res/layout/kepler_mid_lin.xml
  45. +79
    -0
      android/src/main/res/layout/kepler_simple_dialog_lay.xml
  46. +26
    -0
      android/src/main/res/layout/more_select_item.xml
  47. +59
    -0
      android/src/main/res/layout/neterror_layout.xml
  48. +98
    -0
      android/src/main/res/layout/sdk_title_layout.xml
  49. +40
    -0
      android/src/main/res/layout/web_bottom_layout.xml
  50. 二進制
     
  51. +45
    -0
      android/src/main/res/values/strings.xml
  52. +85
    -0
      android/src/main/res/values/styles.xml
  53. +152
    -0
      example/.dart_tool/package_config.json
  54. +16
    -0
      example/README.md
  55. +83
    -0
      example/android/app/build.gradle
  56. +7
    -0
      example/android/app/src/debug/AndroidManifest.xml
  57. +50
    -0
      example/android/app/src/main/AndroidManifest.xml
  58. +13
    -0
      example/android/app/src/main/java/com/jd/jdsdk_example/MainActivity.java
  59. +12
    -0
      example/android/app/src/main/res/drawable/launch_background.xml
  60. 二進制
     
  61. 二進制
     
  62. 二進制
     
  63. 二進制
     
  64. 二進制
     
  65. 二進制
     
  66. +8
    -0
      example/android/app/src/main/res/values/styles.xml
  67. +7
    -0
      example/android/app/src/profile/AndroidManifest.xml
  68. 二進制
     
  69. +29
    -0
      example/android/build.gradle
  70. +2
    -0
      example/android/gradle.properties
  71. +6
    -0
      example/android/gradle/wrapper/gradle-wrapper.properties
  72. +15
    -0
      example/android/settings.gradle
  73. +26
    -0
      example/ios/Flutter/AppFrameworkInfo.plist
  74. +2
    -0
      example/ios/Flutter/Debug.xcconfig
  75. +2
    -0
      example/ios/Flutter/Release.xcconfig
  76. +88
    -0
      example/ios/Podfile
  77. +607
    -0
      example/ios/Runner.xcodeproj/project.pbxproj
  78. +7
    -0
      example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  79. +91
    -0
      example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  80. +10
    -0
      example/ios/Runner.xcworkspace/contents.xcworkspacedata
  81. +8
    -0
      example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  82. +6
    -0
      example/ios/Runner/AppDelegate.h
  83. +13
    -0
      example/ios/Runner/AppDelegate.m
  84. +122
    -0
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  85. 二進制
     
  86. 二進制
     
  87. 二進制
     
  88. 二進制
     
  89. 二進制
     
  90. 二進制
     
  91. 二進制
     
  92. 二進制
     
  93. 二進制
     
  94. 二進制
     
  95. 二進制
     
  96. 二進制
     
  97. 二進制
     
  98. 二進制
     
  99. 二進制
     
  100. +23
    -0
      example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json

+ 3
- 0
CHANGELOG.md 查看文件

@@ -0,0 +1,3 @@
## 0.0.1

* TODO: Describe initial release.

+ 1
- 0
LICENSE 查看文件

@@ -0,0 +1 @@
TODO: Add your license here.

+ 52
- 0
README.md 查看文件

@@ -0,0 +1,52 @@
# 京东sdk的唤醒
京东sdk在Flutter上的实现,通过它可以实现唤醒京东app打开京东任意的url,包括商品详情等功能。

## 使用需知
[京东官方接入文档](https://union.jd.com/helpcenter/13246-13248-46117),在android和ios分别加入安全图片。

### ios
在 Info.plist 文件中添加
```dart
<key>LSApplicationQueriesSchemes</key>
<array>
<string>openapp.jdmobile</string>
<string>jdlogin</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>sdkback</string>
<string>此处填入appkey</string>
</array>
</dict>
</array>
```

## 导入依赖
```dart
import 'package:jdsdk/jdsdk.dart';
```


## 初始化
```dart

Jdsdk.init(appKey: '', appSecret: '');
```


## 打开京东任意URL
```dart
Jdsdk.openUrl( url: 'https://item.m.jd.com/product/100009963992.html');
```








+ 55
- 0
android/build.gradle 查看文件

@@ -0,0 +1,55 @@
group 'com.jd.jdsdk'
version '1.0'

buildscript {
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}

rootProject.allprojects {
repositories {
google()
jcenter()
}
}

apply plugin: 'com.android.library'

android {
compileSdkVersion 28

defaultConfig {
minSdkVersion 16
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
lintOptions {
disable 'InvalidPackage'
}

sourceSets{
main{
jniLibs.srcDirs = ['src/libs']
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dexOptions {
incremental true
}
}

dependencies{
//implementation files('src/libs/jdmasdk.jar')
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation files('src/libs/JDSDK_h.jar')
implementation files('src/libs/cps_1.0.0.jar')
}

+ 2
- 0
android/gradle.properties 查看文件

@@ -0,0 +1,2 @@
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true

+ 5
- 0
android/gradle/wrapper/gradle-wrapper.properties 查看文件

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

+ 1
- 0
android/settings.gradle 查看文件

@@ -0,0 +1 @@
rootProject.name = 'jdsdk'

二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


+ 3
- 0
android/src/main/AndroidManifest.xml 查看文件

@@ -0,0 +1,3 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jd.jdsdk">
</manifest>

+ 180
- 0
android/src/main/java/com/jd/jdsdk/JDHelper.java 查看文件

@@ -0,0 +1,180 @@
package com.jd.jdsdk;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;

import com.jd.kepler.res.ApkResources;
import com.kepler.jd.Listener.AsyncInitListener;
import com.kepler.jd.Listener.OpenAppAction;
import com.kepler.jd.login.KeplerApiManager;
import com.kepler.jd.sdk.bean.KelperTask;
import com.kepler.jd.sdk.bean.KeplerAttachParameter;

import org.json.JSONException;

import java.lang.ref.WeakReference;
import java.util.Map;

import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry;

public class JDHelper {
private static JDHelper jdHelper;
// private PluginRegistry.Registrar register;
// private ActivityPluginBinding binding;
private WeakReference<Activity> mActivity;
KelperTask mKelperTask;

Handler mHandler = new Handler();
KeplerAttachParameter mKeplerAttachParameter = new KeplerAttachParameter();//这个是即时性参数 可以设置
LoadingDialog dialog;


private Activity getActivity(){
return this.mActivity.get();
// if(null != register){
// return register.activity();
// }else if(null != binding){
// return binding.getActivity();
// }
// return null;
}

private void setActivity(final Activity activity) {
if (null != activity) {
this.mActivity = new WeakReference<>(activity);
}
}

OpenAppAction mOpenAppAction = new OpenAppAction() {

@Override
public void onStatus(final int status, final String url) {
mHandler.post(new Runnable() {
@Override
public void run() {
if (status == OpenAppAction.OpenAppAction_start) {//开始状态未必一定执行,
dialogShow();
}else {
mKelperTask = null;
dialogDiss();
}
if(status == OpenAppAction.OpenAppAction_result_NoJDAPP) {
// Toast.makeText(getActivity(), "您未安装京东app,你可以手动打开以下链接地址:"+url+" ,code="+status, Toast.LENGTH_SHORT).show();
}else if(status == OpenAppAction.OpenAppAction_result_BlackUrl){
// Toast.makeText(getActivity(), "url不在白名单,你可以手动打开以下链接地址:"+url+" ,code="+status, Toast.LENGTH_SHORT).show();
}else if(status == OpenAppAction.OpenAppAction_result_ErrorScheme){
// Toast.makeText(getActivity(), "呼起协议异常"+" ,code="+status, Toast.LENGTH_SHORT).show();
}else if(status == OpenAppAction.OpenAppAction_result_APP){

}else if(status == OpenAppAction.OpenAppAction_result_NetError){
// Toast.makeText(getActivity(), ApkResources.getSingleton().getString("kepler_check_net")+" ,code="+status+" ,url="+url,Toast.LENGTH_SHORT).show();
}
}
});
}
};

private void dialogShow() {
// if (dialog == null) {
if (getActivity() != null && !getActivity().isFinishing()) {
dialog = new LoadingDialog(getActivity());
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (mKelperTask != null) {//取消
mKelperTask.setCancel(true);
}
}
});
// }
dialog.show();
}
}

private void dialogDiss() {
if(dialog!=null)
dialog.dismiss();
}


//第一次调用getInstance register不能为空
// public static JDHelper getInstance(final Context context){
// if (jdHelper == null){
// synchronized (JDHelper.class){
// jdHelper = new JDHelper();
// if (null != context) {
// jdHelper.mContext = context;
// }
// }
// }
// return jdHelper;
// }

//第一次调用getInstance register不能为空
public static JDHelper getInstance(ActivityPluginBinding binding){
if (jdHelper == null){
synchronized (JDHelper.class){
jdHelper = new JDHelper();
if(null != binding){
jdHelper.setActivity(binding.getActivity());
}
}
} else {
if (null != binding) jdHelper.setActivity(binding.getActivity());
}
return jdHelper;
}




/**
* 初始化开普勒
* @param call
* @param result
*/
public void initKepler(MethodCall call, MethodChannel.Result result){
String appKey = call.argument("appKey");
String appSecret = call.argument("appSecret");
Log.d("flutter-taoke","initKepler"+getActivity());
KeplerApiManager.asyncInitSdk(getActivity().getApplication(), appKey, appSecret, new AsyncInitListener() {
@Override
public void onSuccess() {
result.success(PluginResponse.success(null).toMap());
}

@Override
public void onFailure() {
String errorCode = "-1";
String errorMsg = "初始化失败";
result.success(new PluginResponse(errorCode, errorMsg, null).toMap());
}
});
}


/**
* 通过URL方式打开
* @param call
* @param result
*/
public void openUrl(MethodCall call, MethodChannel.Result result){
String url = call.argument("url");
if(TextUtils.isEmpty(url)){
return;
}
mKelperTask = KeplerApiManager.getWebViewService().openAppWebViewPage(getActivity(),
url,
mKeplerAttachParameter,
mOpenAppAction);
}

}

+ 65
- 0
android/src/main/java/com/jd/jdsdk/JdsdkPlugin.java 查看文件

@@ -0,0 +1,65 @@
package com.jd.jdsdk;

import android.util.Log;

import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;

/** JdsdkPlugin */
public class JdsdkPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware {
public static JDHelper mJDHelper;
private MethodChannel channel;
@Override
public void onAttachedToEngine( FlutterPluginBinding flutterPluginBinding) {
// mJDHelper = JDHelper.getInstance(flutterPluginBinding.getApplicationContext());
channel = new MethodChannel(flutterPluginBinding.getBinaryMessenger(), "jdsdk");
channel.setMethodCallHandler(this);
}

@Override
public void onMethodCall( MethodCall call, Result result) {
if (call.method.equals("getPlatformVersion")) {
result.success("Android " + android.os.Build.VERSION.RELEASE);
} else if (call.method.equals("init")) {
mJDHelper.initKepler(call,result);
}else if (call.method.equals("openUrl")) {
Log.d("flutter-test","openUrl");
mJDHelper.openUrl(call,result);
}else {
result.notImplemented();
}
}

@Override
public void onDetachedFromEngine( FlutterPluginBinding binding) {
channel.setMethodCallHandler(null);
mJDHelper = null;
}

@Override
public void onAttachedToActivity( ActivityPluginBinding binding) {
Log.d("flutter-taoke","onAttachedToActivity"+binding);
mJDHelper = JDHelper.getInstance(binding);
}

@Override
public void onDetachedFromActivityForConfigChanges() {

}

@Override
public void onReattachedToActivityForConfigChanges( ActivityPluginBinding binding) {

}

@Override
public void onDetachedFromActivity() {

}
}

+ 28
- 0
android/src/main/java/com/jd/jdsdk/LoadingDialog.java 查看文件

@@ -0,0 +1,28 @@
package com.jd.jdsdk;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class LoadingDialog extends Dialog {

private TextView tv;

public LoadingDialog(Context context) {
super(context, R.style.loadingDialogStyle);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialogloading);
tv = (TextView)findViewById(R.id.tv);
tv.setText("加载");
LinearLayout linearLayout = (LinearLayout)this.findViewById(R.id.LinearLayout);
linearLayout.getBackground().setAlpha(210);
}

}


+ 12
- 0
android/src/main/java/com/jd/jdsdk/PluginConstants.java 查看文件

@@ -0,0 +1,12 @@
package com.jd.jdsdk;


public interface PluginConstants {

/**
* 超时时间设定
*/
int TIMEOUT = 15;
String ERROR_CODE_EXCEPTION = "-99999";

}

+ 36
- 0
android/src/main/java/com/jd/jdsdk/PluginResponse.java 查看文件

@@ -0,0 +1,36 @@
package com.jd.jdsdk;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import static com.jd.jdsdk.PluginConstants.ERROR_CODE_EXCEPTION;

public class PluginResponse implements Serializable {

private String errorCode;
private String errorMessage;
private Object data;

public static PluginResponse success(Object obj){
return new PluginResponse("0", "成功", obj);
}

public static PluginResponse failed(Exception e){
return new PluginResponse(ERROR_CODE_EXCEPTION, "异常中止: " + e.getMessage(), null);
}

public PluginResponse(String errorCode, String errorMessage, Object data) {
this.errorCode = errorCode;
this.errorMessage = errorMessage;
this.data = data;
}

public Map<String, Object> toMap(){
HashMap<String, Object> map = new HashMap<>();
map.put("errorCode", errorCode);
map.put("errorMessage", errorMessage);
map.put("data", data);
return map;
}
}

二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


+ 17
- 0
android/src/main/res/drawable/btn_reload.xml 查看文件

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 圆角 -->
<corners
android:radius="1dp"
android:topLeftRadius="1dp"
android:topRightRadius="1dp"
android:bottomLeftRadius="1dp"
android:bottomRightRadius="1dp"/><!-- 设置圆角半径 -->
<!-- 填充 -->
<solid
android:color="#F3F3F3"/>
<stroke android:color="#DDDDDD" android:width="1px"></stroke>
</shape><!-- From: file:/D:/gitProgects/jdmall-android-phone-lib-res/AndroidJD-Resource/src/main/res/drawable/button_b_01.xml -->

+ 8
- 0
android/src/main/res/drawable/kepler_btn_back.xml 查看文件

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/kepler_back_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/kepler_back_pressed" android:state_focused="true"/>
<item android:drawable="@drawable/kepler_back_normal"/>

</selector>

+ 8
- 0
android/src/main/res/drawable/kepler_btn_select_more.xml 查看文件

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/kepler_selcet_more_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/kepler_selcet_more_pressed" android:state_focused="true"/>
<item android:drawable="@drawable/kepler_selcet_more_normal"/>

</selector>

+ 8
- 0
android/src/main/res/drawable/kepler_dialog_bk.xml 查看文件

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff" />
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
</shape>

+ 12
- 0
android/src/main/res/drawable/kepler_dialog_button_ne.xml 查看文件

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 外部 -->
<item>
<shape>
<solid android:color="#FF0000" />
<corners android:topLeftRadius="3dp" android:topRightRadius="3dp"
android:bottomRightRadius="3dp" android:bottomLeftRadius="3dp" />
</shape>
</item>
</layer-list>

+ 21
- 0
android/src/main/res/drawable/kepler_dialog_button_po.xml 查看文件

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 外部 -->
<item>
<shape>
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="3dp" android:topRightRadius="3dp"
android:bottomRightRadius="3dp" android:bottomLeftRadius="3dp" />
<stroke android:width="1dp" android:color="#ffa8abad" />
</shape>
</item>
<!-- 内部 -->
<item android:top="1dp" android:bottom="1dp" android:left="1dp" android:right="1dp">
<shape>
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="3dp" android:topRightRadius="3dp"
android:bottomRightRadius="3dp" android:bottomLeftRadius="3dp" />
<stroke android:width="1dp" android:color="#ffffffff" />
</shape>
</item>
</layer-list>

+ 46
- 0
android/src/main/res/drawable/pressbar_color.xml 查看文件

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<!-- http://www.cnblogs.com/cyanfei/archive/2012/07/27/2612023.html -->
<!-- 背景 gradient是渐变,corners定义的是圆角 -->
<item android:id="@android:id/background">
<shape>
<corners android:radius="0dp" />

<solid android:color="#ffffff" />
</shape>
</item>
<!-- 第二条进度条颜色 -->
<!-- shape是用来定义形状的,gradient定义该形状里面为渐变色填充, -->
<!-- startColor起始颜色,endColor结束颜色,angle表示方向角度。 -->
<!-- 当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。 -->
<!-- gradient 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。 -->
<!-- solid 填充 -->
<!-- stroke 描边 -->
<!-- corners 圆角 -->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="0dip" />

<gradient
android:angle="90.0"
android:centerColor="#ac6079"
android:centerY="0.45"
android:endColor="#6c213a"
android:startColor="#e71a5e" />
</shape>
</clip>
</item>
<!-- 进度条 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="0dip" />

<solid android:color="#FF8080" />
</shape>
</clip>
</item>

</layer-list>

+ 12
- 0
android/src/main/res/drawable/sdk_title_bg_with_shadow.xml 查看文件

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#000000"
android:endColor="#ffffff"
android:angle="270"
/>
</shape>



+ 12
- 0
android/src/main/res/drawable/yuanjiao.xml 查看文件

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<solid android:color="#86222222" />

<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />

</shape>

+ 34
- 0
android/src/main/res/layout/dialogloading.xml 查看文件

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/LinearLayout"
android:layout_width="160dp"
android:layout_height="160dp"
android:background="@drawable/yuanjiao"
android:gravity="center"
android:orientation="vertical" >

<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent" />

<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingTop="10dp"
android:textColor="#fff"
/>
</LinearLayout>
</LinearLayout>


+ 87
- 0
android/src/main/res/layout/item_tab_layout.xml 查看文件

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RelativeLayout
android:id="@+id/item_tab_1_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="vertical" >

<TextView
android:id="@+id/item_tab_1_color_text"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" />

<TextView
android:id="@+id/item_tab_1_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/item_tab_1_color_text"
android:gravity="center"
android:textColor="#333456"
android:textSize="15sp" />
</RelativeLayout>

<RelativeLayout
android:id="@+id/item_tab_2_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="vertical" >

<TextView
android:id="@+id/item_tab_2_color_text"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" />

<TextView
android:id="@+id/item_tab_2_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/item_tab_2_color_text"
android:gravity="center"
android:textColor="#333456"
android:textSize="15sp" />
</RelativeLayout>

<RelativeLayout
android:id="@+id/item_tab_3_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="vertical" >

<TextView
android:id="@+id/item_tab_3_color_text"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
/>

<TextView
android:id="@+id/item_tab_3_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/item_tab_3_color_text"
android:gravity="center"
android:textColor="#333456"
android:textSize="15sp" />
</RelativeLayout>

</LinearLayout>

+ 18
- 0
android/src/main/res/layout/kepler_mid_lin.xml 查看文件

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent">


<ProgressBar
android:id="@+id/mid_pro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>





</LinearLayout>

+ 79
- 0
android/src/main/res/layout/kepler_simple_dialog_lay.xml 查看文件

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/kepler_dialog_bk"
android:clickable="true"
android:orientation="vertical" >

<TextView
android:id="@+id/title"
style="@style/text_18_red"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:gravity="center"
android:visibility="visible" />

<LinearLayout
android:id="@+id/kepler_dialog_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >

<TextView
android:id="@+id/kepler_dialog_message"
style="@style/text_16_666666"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left|center"
android:lineSpacingMultiplier="1.5"
android:minHeight="120.0dip"
android:paddingBottom="15.0dip"
android:paddingLeft="20.0dip"
android:paddingRight="20.0dip" />
</LinearLayout>

<View
android:layout_width="match_parent"
android:layout_height="1.0px"
android:background="#ffd0d0d0" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:padding="10dp"
android:gravity="center"
android:orientation="horizontal" >

<Button
android:id="@+id/kepler_positiveButton"
style="@style/text_18_black"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="@drawable/kepler_dialog_button_po"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingTop="10dp" />

<Button
android:id="@+id/kepler_negativeButton"
style="@style/text_18_white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:background="@drawable/kepler_dialog_button_ne"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingTop="10dp" />
</LinearLayout>

</LinearLayout>

+ 26
- 0
android/src/main/res/layout/more_select_item.xml 查看文件

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
>

<ImageView
android:layout_margin="8dp"
android:id="@+id/more_select_item_image"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
/>

<TextView
android:id="@+id/more_select_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#ffffff"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/more_select_item_image" />

</RelativeLayout>

+ 59
- 0
android/src/main/res/layout/neterror_layout.xml 查看文件

@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/global_loading_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EFEFEF"
android:visibility="gone" >

<ImageView
android:id="@+id/global_loading_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/tvMiddle"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:src="@drawable/neterror" />

<TextView
android:id="@id/tvMiddle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="网络请求失败"
android:textColor="#333333"
android:textSize="20sp" />

<TextView
android:id="@+id/tvCheckNet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvMiddle"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="请检查您的网络"
android:textColor="#6C6C6C" />

<TextView
android:id="@+id/tvReload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvCheckNet"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:text="重新加载"
android:textColor="#6C6C6C" />

<Button
android:id="@+id/btnReload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvReload"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:background="@drawable/btn_reload"
android:padding="15dp"
android:text=" 重新加载 "
android:textColor="#333333" />

</RelativeLayout>

+ 98
- 0
android/src/main/res/layout/sdk_title_layout.xml 查看文件

@@ -0,0 +1,98 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sdk_title_id"
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="@android:color/white" >

<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:background="@drawable/sdk_title_bg_with_shadow" />

<!-- 左侧 -->

<ImageButton
android:id="@+id/sdk_back"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:background="@null"
android:minWidth="70dp"
android:src="@drawable/kepler_btn_back" />

<!-- 右侧 -->

<LinearLayout
android:id="@+id/sdk_more_select_lin"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:orientation="horizontal" >

<ImageButton
android:id="@+id/sdk_more_select"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@null"
android:padding="10dp"
android:src="@drawable/kepler_btn_select_more" />
</LinearLayout>

<!-- 关闭栏 -->

<LinearLayout
android:id="@+id/title_close_lin"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:minWidth="40dp"
android:layout_toLeftOf="@id/sdk_more_select_lin"
android:orientation="horizontal" >

<TextView
android:id="@+id/sdk_closed"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:paddingLeft="5dp"
android:text="关闭"
android:textColor="#848689"
android:textSize="14sp" />

<TextView
android:id="@+id/sdk_xiangqing"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:layout_marginRight="10sp"
android:paddingLeft="5dp"
android:text="查看订单"
android:textColor="#848689"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>

<TextView
android:id="@+id/sdk_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:maxLines="1"
android:textColor="#232326"
android:textSize="16sp" />

<LinearLayout
android:id="@+id/sdk_title_tabs_layout"
android:layout_width="330dp"
android:layout_height="match_parent"
android:layout_toLeftOf="@id/title_close_lin"
android:layout_toRightOf="@id/sdk_back"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone" />

</RelativeLayout>

+ 40
- 0
android/src/main/res/layout/web_bottom_layout.xml 查看文件

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<include layout="@layout/sdk_title_layout" />


<!--style="?android:attr/progressBarStyleHorizontal"-->
<ProgressBar
android:id="@+id/web_load_progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/pressbar_color"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/sdk_title_id" />

<RelativeLayout
android:id="@+id/web_view_lin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/web_load_progressbar" />

<LinearLayout
android:id="@+id/sdk_more_select_lay_id"
android:layout_width="119dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/web_load_progressbar"
android:layout_marginRight="4dp"
android:layout_marginTop="1dp"
android:background="@drawable/select_bg"
android:orientation="horizontal"
android:visibility="gone" />

<include
android:layout_marginTop="40dp"
layout="@layout/neterror_layout" />

</RelativeLayout>

二進制
查看文件


+ 45
- 0
android/src/main/res/values/strings.xml 查看文件

@@ -0,0 +1,45 @@
<resources>

<string name="app_name">sdk</string>
<string name="Illegal_info"> Illegal application ,check init !</string>
<string name="kepler_check_net">请检查您的网络环境</string>
<string name="order">订单中心</string>
<string name="history">最近浏览</string>
<string name="search">搜索</string>
<string name="message">消息</string>
<string name="loginout">退出登录</string>
<string name="give_up_message">"下单后24小时内未支付成功,订单将被取消,请尽快完成支付。"</string>
<string name="give_up_title">确定要离开收银台</string>
<string name="give_up_goon">继续支付</string>
<string name="give_up_affirm">确认离开</string>
<string name="loginout_success">注销成功</string>
<string name="not_login">未登录</string>
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->

<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->
<!--<string name="app_name">sdk</string>-->




</resources>

+ 85
- 0
android/src/main/res/values/styles.xml 查看文件

@@ -0,0 +1,85 @@
<resources>

<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.

-->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

<style name="text_18_black">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#000000</item>
</style>

<style name="text_18_white">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#ffffff</item>
</style>

<style name="text_18_red">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#FF0000</item>
</style>

<style name="text_16_666666">
<item name="android:textSize">16sp</item>
<item name="android:textColor">#000000</item>
</style>

<style name="sdw_white">
<item name="android:shadowColor">#7fffffff</item>
<item name="android:shadowDx">0.0</item>
<item name="android:shadowDy">0.65</item>
<item name="android:shadowRadius">1.0</item>
</style>

<style name="sdw_79351b">
<item name="android:shadowColor">#ff79351b</item>
<item name="android:shadowDx">0.0</item>
<item name="android:shadowDy">1.0</item>
<item name="android:shadowRadius">1.0</item>
</style>

<style name="text_15_ffffff_sdw" parent="@style/sdw_79351b">
<item name="android:textSize">15.0dip</item>
<item name="android:textColor">#ffffffff</item>
</style>

<style name="text_15_666666_sdw" parent="@style/sdw_white">
<item name="android:textSize">15.0dip</item>
<item name="android:textColor">#ff666666</item>
</style>

<style name="KeplerDialog" parent="android:style/Theme.Dialog">
<item name="android:background">#00000000</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>

<style name="loadingDialogStyle" parent="android:Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 对话框是否有遮盖 -->
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">false</item>
</style>

</resources>

+ 152
- 0
example/.dart_tool/package_config.json 查看文件

@@ -0,0 +1,152 @@
{
"configVersion": 2,
"packages": [
{
"name": "async",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/async-2.5.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "boolean_selector",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/boolean_selector-2.1.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "characters",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/characters-1.1.0-nullsafety.3",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "charcode",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/charcode-1.2.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "clock",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/clock-1.1.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "collection",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/collection-1.15.0-nullsafety.3",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "cupertino_icons",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/cupertino_icons-0.1.3",
"packageUri": "lib/",
"languageVersion": "2.0"
},
{
"name": "fake_async",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/fake_async-1.2.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "flutter",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/packages/flutter",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "flutter_test",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/packages/flutter_test",
"packageUri": "lib/",
"languageVersion": "2.2"
},
{
"name": "jdsdk",
"rootUri": "../../",
"packageUri": "lib/",
"languageVersion": "2.1"
},
{
"name": "matcher",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/matcher-0.12.10-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "meta",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/meta-1.3.0-nullsafety.3",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "path",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path-1.8.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "sky_engine",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/bin/cache/pkg/sky_engine",
"packageUri": "lib/",
"languageVersion": "1.11"
},
{
"name": "source_span",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/source_span-1.8.0-nullsafety.2",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "stack_trace",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/stack_trace-1.10.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "stream_channel",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/stream_channel-2.1.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "string_scanner",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/string_scanner-1.1.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "term_glyph",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/term_glyph-1.2.0-nullsafety.1",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "test_api",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/test_api-0.2.19-nullsafety.2",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "typed_data",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/typed_data-1.3.0-nullsafety.3",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "vector_math",
"rootUri": "file:///Users/fnuoos/development/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/vector_math-2.1.0-nullsafety.3",
"packageUri": "lib/",
"languageVersion": "2.10"
},
{
"name": "jdsdk_example",
"rootUri": "../",
"packageUri": "lib/",
"languageVersion": "2.1"
}
],
"generated": "2021-05-21T07:44:13.030851Z",
"generator": "pub",
"generatorVersion": "2.10.0"
}

+ 16
- 0
example/README.md 查看文件

@@ -0,0 +1,16 @@
# jdsdk_example

Demonstrates how to use the jdsdk plugin.

## Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)

For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

+ 83
- 0
example/android/app/build.gradle 查看文件

@@ -0,0 +1,83 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 28

lintOptions {
disable 'InvalidPackage'
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.youliapp"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

signingConfigs {
debug {
storeFile file("youli.jks")
storePassword "youli123456"
keyAlias "youli"
keyPassword "youli123456"
}
release {
storeFile file("youli.jks")
storePassword "youli123456"
keyAlias "youli"
keyPassword "youli123456"
}
}

buildTypes {
debug {

signingConfig signingConfigs.debug
}
release {
ndk{ // 必须加入这部分,否则可能导致编译成功的release包在真机中会闪退
abiFilters 'armeabi-v7a'
}


signingConfig signingConfigs.release
}
}
}

flutter {
source '../..'
}

dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

+ 7
- 0
example/android/app/src/debug/AndroidManifest.xml 查看文件

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jd.jdsdk_example">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

+ 50
- 0
example/android/app/src/main/AndroidManifest.xml 查看文件

@@ -0,0 +1,50 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jd.jdsdk_example">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<!-- 网络 状态变化等信息 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- IMEI等基础信息 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />

<!-- 授权 发现jd app -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

<!-- 静态化资源 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CAMERA" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<application
android:name="io.flutter.app.FlutterApplication"
android:label="jdsdk_example"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

+ 13
- 0
example/android/app/src/main/java/com/jd/jdsdk_example/MainActivity.java 查看文件

@@ -0,0 +1,13 @@
package com.jd.jdsdk_example;

import android.support.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}

+ 12
- 0
example/android/app/src/main/res/drawable/launch_background.xml 查看文件

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>

二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


+ 8
- 0
example/android/app/src/main/res/values/styles.xml 查看文件

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>

+ 7
- 0
example/android/app/src/profile/AndroidManifest.xml 查看文件

@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jd.jdsdk_example">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

二進制
查看文件


+ 29
- 0
example/android/build.gradle 查看文件

@@ -0,0 +1,29 @@
buildscript {
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
}
}

allprojects {
repositories {
google()
jcenter()
}
}

rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
delete rootProject.buildDir
}

+ 2
- 0
example/android/gradle.properties 查看文件

@@ -0,0 +1,2 @@
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true

+ 6
- 0
example/android/gradle/wrapper/gradle-wrapper.properties 查看文件

@@ -0,0 +1,6 @@
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

+ 15
- 0
example/android/settings.gradle 查看文件

@@ -0,0 +1,15 @@
include ':app'

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}

+ 26
- 0
example/ios/Flutter/AppFrameworkInfo.plist 查看文件

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
</dict>
</plist>

+ 2
- 0
example/ios/Flutter/Debug.xcconfig 查看文件

@@ -0,0 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

+ 2
- 0
example/ios/Flutter/Release.xcconfig 查看文件

@@ -0,0 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

+ 88
- 0
example/ios/Podfile 查看文件

@@ -0,0 +1,88 @@
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}

def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
generated_key_values = {}
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) do |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
generated_key_values[podname] = podpath
else
puts "Invalid plugin specification: #{line}"
end
end
generated_key_values
end

target 'Runner' do
# Flutter Pod

copied_flutter_dir = File.join(__dir__, 'Flutter')
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.

generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];

unless File.exist?(copied_framework_path)
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end
end

# Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter'

# Plugin Pods

# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.each do |name, path|
symlink = File.join('.symlinks', 'plugins', name)
File.symlink(path, symlink)
pod name, :path => File.join(symlink, 'ios')
end
end

# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
install! 'cocoapods', :disable_input_output_paths => true

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end

+ 607
- 0
example/ios/Runner.xcodeproj/project.pbxproj 查看文件

@@ -0,0 +1,607 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {

/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
A31FE98324950D9E00FEDE87 /* JDSDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = A31FE98224950D9E00FEDE87 /* JDSDK.bundle */; };
A31FE98D2495146800FEDE87 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A31FE98C2495146800FEDE87 /* libz.tbd */; };
A31FE98F2495148000FEDE87 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A31FE98E2495148000FEDE87 /* libsqlite3.0.tbd */; };
A31FE9912495149300FEDE87 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A31FE9902495149200FEDE87 /* UIKit.framework */; };
A31FE993249514A800FEDE87 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A31FE992249514A800FEDE87 /* Foundation.framework */; };
A31FE995249514BD00FEDE87 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A31FE994249514BD00FEDE87 /* SystemConfiguration.framework */; };
A31FE997249514D100FEDE87 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A31FE996249514D100FEDE87 /* libc++.tbd */; };
FDB4D935BBFBFD2B2A89CD19 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F827864C7F706BED6CF0EF52 /* libPods-Runner.a */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
0A4D668FFA3C1915E59740BF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
6D9FEBBE040E60612181279B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
6EE548F39D08AC87D8ABAFA7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A31FE98224950D9E00FEDE87 /* JDSDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = JDSDK.bundle; sourceTree = "<group>"; };
A31FE98C2495146800FEDE87 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
A31FE98E2495148000FEDE87 /* libsqlite3.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.0.tbd; path = usr/lib/libsqlite3.0.tbd; sourceTree = SDKROOT; };
A31FE9902495149200FEDE87 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
A31FE992249514A800FEDE87 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
A31FE994249514BD00FEDE87 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
A31FE996249514D100FEDE87 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
F827864C7F706BED6CF0EF52 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A31FE997249514D100FEDE87 /* libc++.tbd in Frameworks */,
A31FE995249514BD00FEDE87 /* SystemConfiguration.framework in Frameworks */,
A31FE993249514A800FEDE87 /* Foundation.framework in Frameworks */,
A31FE9912495149300FEDE87 /* UIKit.framework in Frameworks */,
A31FE98F2495148000FEDE87 /* libsqlite3.0.tbd in Frameworks */,
A31FE98D2495146800FEDE87 /* libz.tbd in Frameworks */,
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
FDB4D935BBFBFD2B2A89CD19 /* libPods-Runner.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
7304590FFB147EB9EADBE523 /* Pods */ = {
isa = PBXGroup;
children = (
0A4D668FFA3C1915E59740BF /* Pods-Runner.debug.xcconfig */,
6EE548F39D08AC87D8ABAFA7 /* Pods-Runner.release.xcconfig */,
6D9FEBBE040E60612181279B /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B80C3931E831B6300D905FE /* App.framework */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEBA1CF902C7004384FC /* Flutter.framework */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
7304590FFB147EB9EADBE523 /* Pods */,
EA55A1BE55302243B2C60E74 /* Frameworks */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
);
name = Products;
sourceTree = "<group>";
};
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
A31FE98224950D9E00FEDE87 /* JDSDK.bundle */,
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
97C146F11CF9000F007C117D /* Supporting Files */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
);
path = Runner;
sourceTree = "<group>";
};
97C146F11CF9000F007C117D /* Supporting Files */ = {
isa = PBXGroup;
children = (
97C146F21CF9000F007C117D /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
EA55A1BE55302243B2C60E74 /* Frameworks */ = {
isa = PBXGroup;
children = (
A31FE996249514D100FEDE87 /* libc++.tbd */,
A31FE994249514BD00FEDE87 /* SystemConfiguration.framework */,
A31FE992249514A800FEDE87 /* Foundation.framework */,
A31FE9902495149200FEDE87 /* UIKit.framework */,
A31FE98E2495148000FEDE87 /* libsqlite3.0.tbd */,
A31FE98C2495146800FEDE87 /* libz.tbd */,
F827864C7F706BED6CF0EF52 /* libPods-Runner.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
A84EC66439E8C249947ADAE0 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
1CFC39450337D914C9168AA8 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = ZMCJ78285X;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
);
};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
A31FE98324950D9E00FEDE87 /* JDSDK.bundle in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
1CFC39450337D914C9168AA8 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
A84EC66439E8C249947ADAE0 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
97C146F31CF9000F007C117D /* main.m in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Profile;
};
249021D4217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = ZMCJ78285X;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.youliapp;
PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = ZMCJ78285X;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.youliapp;
PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = ZMCJ78285X;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.youliapp;
PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}

+ 7
- 0
example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata 查看文件

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>

+ 91
- 0
example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme 查看文件

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

+ 10
- 0
example/ios/Runner.xcworkspace/contents.xcworkspacedata 查看文件

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

+ 8
- 0
example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist 查看文件

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

+ 6
- 0
example/ios/Runner/AppDelegate.h 查看文件

@@ -0,0 +1,6 @@
#import <Flutter/Flutter.h>
#import <UIKit/UIKit.h>

@interface AppDelegate : FlutterAppDelegate

@end

+ 13
- 0
example/ios/Runner/AppDelegate.m 查看文件

@@ -0,0 +1,13 @@
#import "AppDelegate.h"
#import "GeneratedPluginRegistrant.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end

+ 122
- 0
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json 查看文件

@@ -0,0 +1,122 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


二進制
查看文件


+ 23
- 0
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json 查看文件

@@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

部分文件因文件數量過多而無法顯示

Loading…
取消
儲存