@@ -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" | |||
} | |||
} |