@@ -0,0 +1,3 @@ | |||||
## 0.0.1 | |||||
* TODO: Describe initial release. |
@@ -0,0 +1 @@ | |||||
TODO: Add your license here. |
@@ -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'); | |||||
``` | |||||
@@ -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') | |||||
} |
@@ -0,0 +1,2 @@ | |||||
org.gradle.jvmargs=-Xmx1536M | |||||
android.enableR8=true |
@@ -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 |
@@ -0,0 +1 @@ | |||||
rootProject.name = 'jdsdk' |
@@ -0,0 +1,3 @@ | |||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||||
package="com.jd.jdsdk"> | |||||
</manifest> |
@@ -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); | |||||
} | |||||
} |
@@ -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() { | |||||
} | |||||
} |
@@ -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); | |||||
} | |||||
} | |||||
@@ -0,0 +1,12 @@ | |||||
package com.jd.jdsdk; | |||||
public interface PluginConstants { | |||||
/** | |||||
* 超时时间设定 | |||||
*/ | |||||
int TIMEOUT = 15; | |||||
String ERROR_CODE_EXCEPTION = "-99999"; | |||||
} |
@@ -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; | |||||
} | |||||
} |
@@ -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 --> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> | |||||
@@ -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> |
@@ -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> | |||||
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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" | |||||
} |
@@ -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. |
@@ -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' | |||||
} |
@@ -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> |
@@ -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> |
@@ -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); | |||||
} | |||||
} |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -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 | |||||
} |
@@ -0,0 +1,2 @@ | |||||
org.gradle.jvmargs=-Xmx1536M | |||||
android.enableR8=true |
@@ -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 |
@@ -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 | |||||
} |
@@ -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> |
@@ -0,0 +1,2 @@ | |||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" | |||||
#include "Generated.xcconfig" |
@@ -0,0 +1,2 @@ | |||||
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" | |||||
#include "Generated.xcconfig" |
@@ -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 |
@@ -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 */; | |||||
} |
@@ -0,0 +1,7 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<Workspace | |||||
version = "1.0"> | |||||
<FileRef | |||||
location = "group:Runner.xcodeproj"> | |||||
</FileRef> | |||||
</Workspace> |
@@ -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> |
@@ -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> |
@@ -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> |
@@ -0,0 +1,6 @@ | |||||
#import <Flutter/Flutter.h> | |||||
#import <UIKit/UIKit.h> | |||||
@interface AppDelegate : FlutterAppDelegate | |||||
@end |
@@ -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 |
@@ -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" | |||||
} | |||||
} |
@@ -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" | |||||
} | |||||
} |