Nexacro14 프로젝트 추가

This commit is contained in:
techAdmin 2023-09-18 15:32:28 +09:00
parent ee09456164
commit c29d74a807
69 changed files with 2382 additions and 0 deletions

BIN
.DS_Store vendored

Binary file not shown.

BIN
Nexacro14/.DS_Store vendored Normal file

Binary file not shown.

BIN
Nexacro14/Android/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures

View File

@ -0,0 +1 @@
DroidStudio

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -0,0 +1,3 @@
<component name="CopyrightManager">
<settings default="" />
</component>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/nexacro14" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="7">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
<item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="6">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
<item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
<item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
</list>
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/DroidStudio.iml" filepath="$PROJECT_DIR$/DroidStudio.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/nexacro14/nexacro14.iml" filepath="$PROJECT_DIR$/nexacro14/nexacro14.iml" />
</modules>
</component>
</project>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="" />
</component>
</project>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="DroidStudio" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":app" />
</configuration>
</facet>
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources/debug/processDebugResources/r" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/google-services/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources/debugAndroidTest/processDebugAndroidTestResources/r" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-libraries" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/checkDebugClasspath" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split_list" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 26 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-messaging-17.3.4" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-measurement-connector-17.0.1" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-maps-16.0.0" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:animated-vector-drawable-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tasks-16.0.1" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-core-16.0.6" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-base-16.0.5" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-ads-identifier-16.0.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-common-16.0.3" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-analytics-16.0.6" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-measurement-api-16.0.4" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:appcompat-v7-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-fragment-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: android.arch.core:common:1.0.0@jar" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-stats-16.0.1" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-measurement-connector-impl-17.0.4" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement-16.0.1" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-media-compat-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-annotations:26.1.0@jar" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-v4-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-compat-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base-16.0.1" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-places-placereport-16.0.0" level="project" />
<orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.0.0@jar" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-vector-drawable-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-core-ui-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.android.support:support-core-utils-26.1.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-iid-interop-16.0.1" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.gms:play-services-location-16.0.0" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-analytics-impl-16.2.4" level="project" />
<orderEntry type="library" name="Gradle: com.google.firebase:firebase-iid-17.0.4" level="project" />
<orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime-1.0.0" level="project" />
<orderEntry type="module" module-name="nexacro14" />
</component>
</module>

View File

@ -0,0 +1,33 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion "28.0.3"
defaultConfig {
applicationId "nexacro.launcher"
minSdkVersion 14
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation project(':nexacro14')
}
apply plugin: 'com.google.gms.google-services'

View File

@ -0,0 +1,42 @@
{
"project_info": {
"project_number": "995072755403",
"firebase_url": "https://summer-nexus-581.firebaseio.com",
"project_id": "summer-nexus-581",
"storage_bucket": "summer-nexus-581.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:995072755403:android:28b014c688afb816",
"android_client_info": {
"package_name": "nexacro.launcher"
}
},
"oauth_client": [
{
"client_id": "995072755403-ksam7299dh20s90batq23eis6gpv1749.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAaOYYoqFY9-AcA_P5jUtK_-2EmeoLvy7g"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}

View File

@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\dev\sdks\android-sdk\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

View File

@ -0,0 +1,13 @@
package nexacro.launcher.droidstudio;
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}

View File

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="nexacro.launcher">
<uses-feature android:required="true" android:glEsVersion="0x00020000"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<!-- Google map
lollipop(5.0)에서 package name으로 된 permission name이 2개이상의 app에 설치되어 있으면 permission오류 발생.
아래의 permission은 Google Play Services 3.1.59 이후 버전부터 사용하지 않음.
현재 Google Paly Service 5버전 사용중.
-->
<!-- <permission android:name="com.nexacro.permission.MAPS_RECEIVE"></permission> -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" /> <!-- ExternalAPI를 위한 permission -->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <!-- Google map을 위한 permission -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" />
<application android:label="@string/app_name"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme"
android:hasCode="true"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:configChanges="orientation|keyboardHidden|screenSize">
<!--<intent-filter>-->
<!--<action android:name="android.intent.action.MAIN" />-->
<!--<category android:name="android.intent.category.LAUNCHER" />-->
<!--</intent-filter>-->
</activity>
<!-- n14_devFeature.xml 파일을 이용해서 시작 프로젝트를 리스트에서 동적으로 선택하고 싶으면 아래 주석 해제후 위에껄 주석 처리하면 됩니다. -->
<activity
android:name=".ProjectSelectActivity"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- nexacro를 Webview처럼 올린 테스트용 액티비티 입니다. -->
<activity
android:name=".UserCustomActivity"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:configChanges="orientation|keyboardHidden|screenSize">
</activity>
<!--android:theme="@android:style/Theme.NoTitleBar"-->
<activity android:name="com.nexacro.NexacroActivity"
android:launchMode="singleTask"
android:noHistory="false"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|navigation|uiMode">
<intent-filter>
<action android:name="OPEN_NEXACRO_ACTIVITY_EXAMPLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="com.nexacro.deviceAPI.FileDialogActivity" android:screenOrientation="sensor">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.nexacro.deviceAPI.CameraListener" android:screenOrientation="landscape">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.nexacro.deviceAPI.SmsRecv">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
<!-- MMS는 KITKAT부터 지원하는 공식 API를 사용하여 차후에 지원 예정 -->
<!--<intent-filter>-->
<!--<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />-->
<!--<data android:mimeType="application/vnd.wap.mms-message" />-->
<!--</intent-filter>-->
</receiver>
<service android:name="com.nexacro.notification.NexacroNotificationService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- Google map -->
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyBoJVjKz02Mn1Y93oO23oq7V05gbpP5GZE" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<!-- <meta-data android:value="AIzaSyDtZzx9qV9utApa8dC6gJf9VicxVZDIqdQ" android:name="com.google.android.maps.v2.API_KEY"/> -->
</application>
</manifest>

View File

@ -0,0 +1,61 @@
package nexacro.launcher;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import com.nexacro.NexacroUpdatorActivity;
public class MainActivity extends NexacroUpdatorActivity {
public MainActivity() {
super();
setProjectURL("http://your project url");
setBootstrapURL("http://your bootstrap url/start_android.json");
// Default startupClass is NexacroActivity.class
// setStartupClass(UserCustomActivity.class);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Possible work around for market launches. See http://code.google.com/p/android/issues/detail?id=2373
// for more details. Essentially, the market launches the main activity on top of other activities.
// we never want this to happen. Instead, we check if we are the root and if not, we finish.
if (!isTaskRoot()) {
final Intent intent = getIntent();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(intent.getAction())) {
finish();
return;
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{
WebView.setWebContentsDebuggingEnabled(true);
}
}
Intent intent = getIntent();
if(intent != null) {
String bootstrapURL = intent.getStringExtra("bootstrapURL");
String projectUrl = intent.getStringExtra("projectUrl");
if(bootstrapURL != null) {
setBootstrapURL(bootstrapURL);
setProjectURL(projectUrl);
}
}
}
@Override
public void setContentView(View view) {
super.setContentView(view);
}
}

View File

@ -0,0 +1,341 @@
package nexacro.launcher;
import android.Manifest;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.PermissionChecker;
import android.util.Log;
import android.view.Window;
import android.widget.Toast;
import com.nexacro.NexacroUpdatorActivity;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
/**
* 앱을 실행할때 시작 프로젝트를 동적으로 선택할수 있는 디버깅용 액티비티 입니다.
* 사용 방법은 폰의 기본저장소 루트 경로에 n14_devFeature.xml 파일의 존재유무 입니다.
* 파일이 없다면 액티비티를 무시한채 기존 NexacroUpdatorActivity.java에 설정된 시작 url로 프로젝트가 시작하게 됩니다.
*
* 이미 시작 프로젝트가 적용된후 다른 프로젝트로 전환하고 싶은 경우에는 "기존 꺼 삭제" 클릭하시면 됩니다.
*
* n14_devFeature.xml 파일 )
* <?xml version="1.0" encoding="utf-8"?>
* <UpdateUrl>
* <Project name="eBizM" bootstrap="http://172.10.12.59/nexacro14/eBizM/eBizM.json"/>
* <Project name="HBDeviceTest" bootstrap="http://172.10.12.66:8080/V13/projects/HBDeviceTest_NX15/start_android.json"/>
* <Project name="perfrmce_nexacro_jct.tobesoft.co.jp" bootstrap="http://jct.tobesoft.co.jp/kwon/perfrmce_nexacro/start_android.json"/>
* </UpdateUrl>
*
*/
public class ProjectSelectActivity extends Activity{
private static final String LOG_TAG = "ProjectSelectActivity";
LinkedHashMap<String, String> updateUrlList = new LinkedHashMap<String, String>();
private AlertDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean darkTheme = false;
/* dark */
if (darkTheme) {
if (Build.VERSION.SDK_INT >= 21 /*Build.VERSION_CODES.LOLLIPOP */) {
setTheme(android.R.style.Theme_Material);
}
else if (Build.VERSION.SDK_INT >= 11 /*Build.VERSION_CODES.HONEYCOMB*/) {
setTheme(android.R.style.Theme_Holo);
}
else {
setTheme(android.R.style.Theme_Black);
}
}
/* light */
else {
if (Build.VERSION.SDK_INT >= 21 /*Build.VERSION_CODES.LOLLIPOP */) {
setTheme(android.R.style.Theme_Material_Light);
}
else if (Build.VERSION.SDK_INT >= 11 /*Build.VERSION_CODES.HONEYCOMB*/) {
setTheme(android.R.style.Theme_Holo_Light);
}
else {
setTheme(android.R.style.Theme_Light);
}
}
requestWindowFeature(Window.FEATURE_NO_TITLE);
// Possible work around for market launches. See http://code.google.com/p/android/issues/detail?id=2373
// for more details. Essentially, the market launches the main activity on top of other activities.
// we never want this to happen. Instead, we check if we are the root and if not, we finish.
if (!isTaskRoot()) {
final Intent intent = getIntent();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(intent.getAction())) {
finish();
return;
}
}
}
@Override
public void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= 23 /*Build.VERSION_CODES.M*/) {
if (!requestPermisions(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE})) {
start();
}
}
else {
start();
}
}
@Override
public void onPause() {
super.onPause();
if(dialog != null){
dialog.dismiss();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
start();
}
private void start() {
checkDebugFile();
if (updateUrlList.size() > 0) {
showProjectSelector();
} else {
Intent intent = new Intent(ProjectSelectActivity.this, getStartActivityClass());
startActivity(intent);
finish();
}
}
private static final int REQUEST_PERMISIONS = 100;
private boolean requestPermisions(final @NonNull String[] permissions) {
ArrayList<String> grantedPermissions = new ArrayList<String>();
ArrayList<String> deniedPermissions = new ArrayList<String>();
ArrayList<String> deniedOpPermissions = new ArrayList<String>();
for (String permission : permissions) {
switch (PermissionChecker.checkSelfPermission(this, permission)) {
case PermissionChecker.PERMISSION_GRANTED: {
grantedPermissions.add(permission);
break;
}
case PermissionChecker.PERMISSION_DENIED: {
deniedPermissions.add(permission);
break;
}
case PermissionChecker.PERMISSION_DENIED_APP_OP: {
deniedOpPermissions.add(permission);
break;
}
default: {
deniedPermissions.add(permission);
break;
}
}
}
ArrayList<String> requestPermissions = new ArrayList<String>();
ArrayList<String> rationalPermissions = new ArrayList<String>();
if (deniedPermissions.size() > 0)
requestPermissions.addAll(deniedPermissions);
//if (deniedOpPermissions.size() > 0)
// requestPermissions.addAll(deniedOpPermissions);
for (String permission : requestPermissions) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
rationalPermissions.add(permission);
}
}
if (requestPermissions.size() <= 0)
return false;
ActivityCompat.requestPermissions(this, requestPermissions.toArray(new String[requestPermissions.size()]), REQUEST_PERMISIONS);
return true;
}
private void checkDebugFile() {
XmlPullParserFactory factory;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
File file = new File(Environment.getExternalStorageDirectory()+ "/n14_devFeature.xml");
FileInputStream fis = new FileInputStream(file);
parser.setInput(new InputStreamReader(fis));
while(parser.getEventType() != XmlPullParser.END_DOCUMENT) {
if(parser.getEventType() == XmlPullParser.START_TAG) {
if(parser.getName().equals("Project")) {
updateUrlList.put(parser.getAttributeValue(0), parser.getAttributeValue(1));
}
}
parser.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
Log.d(LOG_TAG, "debugging file not exist!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void showProjectSelector() {
List<String> projectItems = new ArrayList<String>();
for(Entry<String, String> e : updateUrlList.entrySet()) {
String key = e.getKey();
projectItems.add(key);
}
final CharSequence[] items = projectItems.toArray(new String[projectItems.size()]);
AlertDialog.Builder builder = new AlertDialog.Builder(ProjectSelectActivity.this);
builder.setTitle("시작 프로젝트를 선택해 주세요.");
builder.setCancelable(false);
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Intent intent = new Intent(ProjectSelectActivity.this, getStartActivityClass());
intent.putExtra("bootstrapURL", getUpdateUrl(items[whichButton].toString()));
intent.putExtra("projectUrl", getProjectUrl(items[whichButton].toString()));
startActivity(intent);
finish();
}
}).setPositiveButton("하드 코딩 된 값 로드", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Intent intent = new Intent(ProjectSelectActivity.this, getStartActivityClass());
startActivity(intent);
finish();
}
}).setNegativeButton("기존 꺼 삭제", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
clearApplicationData();
}
});
dialog = builder.create();
dialog.show();
}
private String getUpdateUrl(String key) {
return updateUrlList.get(key);
}
private String getProjectUrl(String key) {
String projectUrl;
projectUrl = updateUrlList.get(key);
projectUrl = projectUrl.substring(0, projectUrl.lastIndexOf("/")+1);
return projectUrl;
}
public void clearApplicationData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Log.i("TAG", "**************** File " + appDir.getAbsolutePath() + "/" + s + " DELETED *******************");
}
}
}
cache = getExternalCacheDir();
appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Log.i("TAG", "**************** File " + appDir.getAbsolutePath() + "/" + s + " DELETED *******************");
}
}
}
Toast.makeText(getApplicationContext(), "기존 프로젝트가 삭제 되었습니다.", Toast.LENGTH_SHORT).show();
showProjectSelector();
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
return dir.delete();
}
public Class<NexacroUpdatorActivity> getStartActivityClass()
{
ActivityManager activitymanager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> runningtaskinfo = activitymanager.getRunningTasks(1);
String currentPackageName = runningtaskinfo.get(0).baseActivity.getPackageName();
Class<NexacroUpdatorActivity> startActivityClass = null;
if(currentPackageName.equals("com.nexacro")) {
startActivityClass = NexacroUpdatorActivity.class;
} else {
ClassLoader loader = ProjectSelectActivity.class.getClassLoader();
try {
startActivityClass = (Class<NexacroUpdatorActivity>) loader.loadClass("nexacro.launcher.MainActivity");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return startActivityClass;
}
}

View File

@ -0,0 +1,55 @@
package nexacro.launcher;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.ToggleButton;
import com.nexacro.view.NexacroLayout;
public class UserCustomActivity extends FragmentActivity {
final Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getResources().getIdentifier("user_custom", "layout", getPackageName()));
Button btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(UserCustomActivity.this, "Android button component click.", Toast.LENGTH_SHORT).show();
}
});
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
NexacroLayout nexacroLayout = (NexacroLayout) findViewById(R.id.nexacro_layout);
if (isChecked) {
nexacroLayout.setVisibility(View.VISIBLE);
} else {
nexacroLayout.setVisibility(View.INVISIBLE);
}
}
});
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/user_custom_layout">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|top"
android:weightSum="1">
<TextView
android:layout_width="162dp"
android:layout_height="wrap_content"
android:text="pure activity"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:textSize="25dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="안드로이드 컴포넌트 버튼"
android:id="@+id/button" />
<com.nexacro.view.NexacroLayout
android:id="@+id/nexacro_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.86">
</com.nexacro.view.NexacroLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New ToggleButton"
android:id="@+id/toggleButton"
android:checked="true"
android:textOff="nexacroView 보이기"
android:textOn="nexacroView 숨기기" />
</LinearLayout>
</LinearLayout>
</FrameLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@ -0,0 +1,6 @@
<resources>
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>

View File

@ -0,0 +1,5 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

View File

@ -0,0 +1,6 @@
<resources>
<string name="app_name">DroidStudio</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>

View File

@ -0,0 +1,8 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>
</resources>

View File

@ -0,0 +1,22 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.google.gms:google-services:4.0.1'
}
}
allprojects {
repositories {
jcenter()
google()
}
}

View File

@ -0,0 +1,18 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

View File

@ -0,0 +1,6 @@
#Thu Dec 13 19:04:47 KST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

View File

@ -0,0 +1,164 @@
#!/usr/bin/env bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

View File

@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

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

View File

@ -0,0 +1,15 @@
nexacro14 개발을 위한 안드로이드 스튜디오 기반의 개발자용 프로젝트 입니다.
프로젝트 구성의 기본틀은 aar을 이용하기 위한 런처앱이(nexacro.launcher) 있고,
실질적인 so파일과 jar파일과 관련된 내용을 수정할수 이있는 엔진이 모듈 형태로(com.nexacro) 포함되어 있습니다.
모듈은 gralde 명령어로(buildNative_Debug, buildNative_Release, buildNative_Clean) 로 빌드하시고,
apk 형태로 만드는 거는 그냥 초록색 화살표를 누르시면 자동으로 aar을 포함하여 apk를 생성하게 됩니다.
AAR 이란 : 새로운 안드로이드스튜디오 기반의 라이브러리. (jar, res, so, AndroidManifest 등을 하나로 통합)
<import 하기전>
1. DroidStudio\nexacro14 폴더로 가서 setup.cmd 커맨드를 실행해서
2. 안드로이드 스튜디오로 import후 자신의 환경에 맞게 세팅오류 잡기. 이때 오류는 자동으로 잡히는 부분이 있고 수동으로 해야 하는 부분이 있을수 있음.

BIN
Nexacro14/iOS/.DS_Store vendored Normal file

Binary file not shown.

BIN
Nexacro14/iOS/nexacro14_iOS/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,538 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
61229AD02356FE5B00DC6962 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61229ACF2356FE5B00DC6962 /* Photos.framework */; };
61A14D3420293FDF00CED070 /* archive in Resources */ = {isa = PBXBuildFile; fileRef = 61A14D3320293FDF00CED070 /* archive */; };
B8C6CB241DF79E2F00E2F1F7 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B8C6CB221DF79E2E00E2F1F7 /* Localizable.strings */; };
B8CFAF431F6222DE00307D08 /* splashimage_pad_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = B8CFAF411F6222DE00307D08 /* splashimage_pad_landscape.png */; };
B8CFAF441F6222DE00307D08 /* splashimage_phone_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = B8CFAF421F6222DE00307D08 /* splashimage_phone_landscape.png */; };
B8E2426C1E40590300BBCC0E /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E2426B1E40590300BBCC0E /* WebKit.framework */; };
B8EAFA361F74A45C0013FF17 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B8EAFA351F74A45C0013FF17 /* Launch Screen.storyboard */; };
B8EC88121DE702DD00C30DD6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B8EC88111DE702DD00C30DD6 /* main.m */; };
B8EC88151DE702DE00C30DD6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B8EC88141DE702DE00C30DD6 /* AppDelegate.m */; };
B8EC884A1DE70CEA00C30DD6 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88491DE70CEA00C30DD6 /* libsqlite3.tbd */; };
B8EC884C1DE7101600C30DD6 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC884B1DE7101600C30DD6 /* libc++.tbd */; };
B8EC884E1DE7102500C30DD6 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC884D1DE7102500C30DD6 /* libz.tbd */; };
B8EC88571DE7126600C30DD6 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88561DE7126600C30DD6 /* libxml2.tbd */; };
B8EC885C1DE71AA000C30DD6 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC885A1DE71AA000C30DD6 /* Icon.png */; };
B8EC885D1DE71AA000C30DD6 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC885B1DE71AA000C30DD6 /* Icon@2x.png */; };
B8EC88731DE71C7B00C30DD6 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC886E1DE71C7B00C30DD6 /* Default-568h@2x.png */; };
B8EC88741DE71C7B00C30DD6 /* Default-Portrait@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC886F1DE71C7B00C30DD6 /* Default-Portrait@2x~ipad.png */; };
B8EC88751DE71C7B00C30DD6 /* Default-Portrait~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC88701DE71C7B00C30DD6 /* Default-Portrait~ipad.png */; };
B8EC88761DE71C7B00C30DD6 /* splashimage_pad_portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC88711DE71C7B00C30DD6 /* splashimage_pad_portrait.png */; };
B8EC88771DE71C7B00C30DD6 /* splashimage_phone_portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = B8EC88721DE71C7B00C30DD6 /* splashimage_phone_portrait.png */; };
B8EC888A1DE7D23700C30DD6 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC887C1DE7D23700C30DD6 /* MessageUI.framework */; };
B8EC888B1DE7D23700C30DD6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC887D1DE7D23700C30DD6 /* Foundation.framework */; };
B8EC888C1DE7D23700C30DD6 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC887E1DE7D23700C30DD6 /* AddressBook.framework */; };
B8EC888D1DE7D23700C30DD6 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC887F1DE7D23700C30DD6 /* AddressBookUI.framework */; };
B8EC888E1DE7D23700C30DD6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88801DE7D23700C30DD6 /* AudioToolbox.framework */; };
B8EC888F1DE7D23700C30DD6 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88811DE7D23700C30DD6 /* AVFoundation.framework */; };
B8EC88901DE7D23700C30DD6 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88821DE7D23700C30DD6 /* CFNetwork.framework */; };
B8EC88911DE7D23700C30DD6 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88831DE7D23700C30DD6 /* CoreLocation.framework */; };
B8EC88921DE7D23700C30DD6 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88841DE7D23700C30DD6 /* MediaPlayer.framework */; };
B8EC88931DE7D23700C30DD6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88851DE7D23700C30DD6 /* QuartzCore.framework */; };
B8EC88941DE7D23700C30DD6 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88861DE7D23700C30DD6 /* MobileCoreServices.framework */; };
B8EC88951DE7D23700C30DD6 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88871DE7D23700C30DD6 /* CoreMedia.framework */; };
B8EC88961DE7D23700C30DD6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88881DE7D23700C30DD6 /* UIKit.framework */; };
B8EC88971DE7D23700C30DD6 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B8EC88891DE7D23700C30DD6 /* SystemConfiguration.framework */; };
B8EC88A41DE7DEA500C30DD6 /* data in Resources */ = {isa = PBXBuildFile; fileRef = B8EC88A31DE7DEA500C30DD6 /* data */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
42718B3A1FFE220B00072510 /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = System/Library/Frameworks/CoreBluetooth.framework; sourceTree = SDKROOT; };
61229ACF2356FE5B00DC6962 /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = System/Library/Frameworks/Photos.framework; sourceTree = SDKROOT; };
61A14D3320293FDF00CED070 /* archive */ = {isa = PBXFileReference; lastKnownFileType = folder; name = archive; path = nexacro14App/archive; sourceTree = "<group>"; };
B8B639D91F09DCDD002BFA20 /* nexacro14App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = nexacro14App.entitlements; sourceTree = "<group>"; };
B8C6CB231DF79E2F00E2F1F7 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
B8C6CB251DF79E4000E2F1F7 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
B8C6CB261DF79E5800E2F1F7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
B8CFAF411F6222DE00307D08 /* splashimage_pad_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splashimage_pad_landscape.png; sourceTree = "<group>"; };
B8CFAF421F6222DE00307D08 /* splashimage_phone_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splashimage_phone_landscape.png; sourceTree = "<group>"; };
B8E2426B1E40590300BBCC0E /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
B8EAFA351F74A45C0013FF17 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
B8EC880D1DE702DD00C30DD6 /* nexacro14App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = nexacro14App.app; sourceTree = BUILT_PRODUCTS_DIR; };
B8EC88111DE702DD00C30DD6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
B8EC88131DE702DE00C30DD6 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
B8EC88141DE702DE00C30DD6 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
B8EC88211DE702DE00C30DD6 /* nexacro14App-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "nexacro14App-Info.plist"; sourceTree = "<group>"; };
B8EC882C1DE707C000C30DD6 /* nexacro14App-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "nexacro14App-Prefix.pch"; sourceTree = "<group>"; };
B8EC88491DE70CEA00C30DD6 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
B8EC884B1DE7101600C30DD6 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
B8EC884D1DE7102500C30DD6 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
B8EC884F1DE7104900C30DD6 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
B8EC88561DE7126600C30DD6 /* libxml2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libxml2.tbd; path = usr/lib/libxml2.tbd; sourceTree = SDKROOT; };
B8EC885A1DE71AA000C30DD6 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
B8EC885B1DE71AA000C30DD6 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = "<group>"; };
B8EC886E1DE71C7B00C30DD6 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
B8EC886F1DE71C7B00C30DD6 /* Default-Portrait@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait@2x~ipad.png"; sourceTree = "<group>"; };
B8EC88701DE71C7B00C30DD6 /* Default-Portrait~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait~ipad.png"; sourceTree = "<group>"; };
B8EC88711DE71C7B00C30DD6 /* splashimage_pad_portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splashimage_pad_portrait.png; sourceTree = "<group>"; };
B8EC88721DE71C7B00C30DD6 /* splashimage_phone_portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splashimage_phone_portrait.png; sourceTree = "<group>"; };
B8EC887C1DE7D23700C30DD6 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
B8EC887D1DE7D23700C30DD6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
B8EC887E1DE7D23700C30DD6 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
B8EC887F1DE7D23700C30DD6 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; };
B8EC88801DE7D23700C30DD6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
B8EC88811DE7D23700C30DD6 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
B8EC88821DE7D23700C30DD6 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
B8EC88831DE7D23700C30DD6 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
B8EC88841DE7D23700C30DD6 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
B8EC88851DE7D23700C30DD6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
B8EC88861DE7D23700C30DD6 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
B8EC88871DE7D23700C30DD6 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
B8EC88881DE7D23700C30DD6 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
B8EC88891DE7D23700C30DD6 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
B8EC889B1DE7D68800C30DD6 /* nexacro14.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = nexacro14.framework; sourceTree = "<group>"; };
B8EC88A31DE7DEA500C30DD6 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = data; path = nexacro14App/data; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
B8EC880A1DE702DD00C30DD6 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
B8EC88571DE7126600C30DD6 /* libxml2.tbd in Frameworks */,
B8EC884E1DE7102500C30DD6 /* libz.tbd in Frameworks */,
B8EC884C1DE7101600C30DD6 /* libc++.tbd in Frameworks */,
B8EC884A1DE70CEA00C30DD6 /* libsqlite3.tbd in Frameworks */,
B8E2426C1E40590300BBCC0E /* WebKit.framework in Frameworks */,
B8EC888A1DE7D23700C30DD6 /* MessageUI.framework in Frameworks */,
B8EC888B1DE7D23700C30DD6 /* Foundation.framework in Frameworks */,
B8EC888C1DE7D23700C30DD6 /* AddressBook.framework in Frameworks */,
61229AD02356FE5B00DC6962 /* Photos.framework in Frameworks */,
B8EC888D1DE7D23700C30DD6 /* AddressBookUI.framework in Frameworks */,
B8EC888E1DE7D23700C30DD6 /* AudioToolbox.framework in Frameworks */,
B8EC888F1DE7D23700C30DD6 /* AVFoundation.framework in Frameworks */,
B8EC88901DE7D23700C30DD6 /* CFNetwork.framework in Frameworks */,
B8EC88911DE7D23700C30DD6 /* CoreLocation.framework in Frameworks */,
B8EC88921DE7D23700C30DD6 /* MediaPlayer.framework in Frameworks */,
B8EC88931DE7D23700C30DD6 /* QuartzCore.framework in Frameworks */,
B8EC88941DE7D23700C30DD6 /* MobileCoreServices.framework in Frameworks */,
B8EC88951DE7D23700C30DD6 /* CoreMedia.framework in Frameworks */,
B8EC88961DE7D23700C30DD6 /* UIKit.framework in Frameworks */,
B8EC88971DE7D23700C30DD6 /* SystemConfiguration.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
B8EC88041DE702DD00C30DD6 = {
isa = PBXGroup;
children = (
61A14D3320293FDF00CED070 /* archive */,
B8EC88A31DE7DEA500C30DD6 /* data */,
B8EC88981DE7D2D300C30DD6 /* Library */,
B8EC88271DE704AD00C30DD6 /* Frameworks */,
B8EC880F1DE702DD00C30DD6 /* nexacro14App */,
B8EC880E1DE702DD00C30DD6 /* Products */,
);
sourceTree = "<group>";
};
B8EC880E1DE702DD00C30DD6 /* Products */ = {
isa = PBXGroup;
children = (
B8EC880D1DE702DD00C30DD6 /* nexacro14App.app */,
);
name = Products;
sourceTree = "<group>";
};
B8EC880F1DE702DD00C30DD6 /* nexacro14App */ = {
isa = PBXGroup;
children = (
B8B639D91F09DCDD002BFA20 /* nexacro14App.entitlements */,
B8EC88101DE702DD00C30DD6 /* Supporting Files */,
B8EC88591DE71A8200C30DD6 /* res */,
B8EC88131DE702DE00C30DD6 /* AppDelegate.h */,
B8EC88141DE702DE00C30DD6 /* AppDelegate.m */,
);
path = nexacro14App;
sourceTree = "<group>";
};
B8EC88101DE702DD00C30DD6 /* Supporting Files */ = {
isa = PBXGroup;
children = (
B8C6CB221DF79E2E00E2F1F7 /* Localizable.strings */,
B8EC88111DE702DD00C30DD6 /* main.m */,
B8EC88211DE702DE00C30DD6 /* nexacro14App-Info.plist */,
B8EC882C1DE707C000C30DD6 /* nexacro14App-Prefix.pch */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
B8EC88271DE704AD00C30DD6 /* Frameworks */ = {
isa = PBXGroup;
children = (
61229ACF2356FE5B00DC6962 /* Photos.framework */,
42718B3A1FFE220B00072510 /* CoreBluetooth.framework */,
B8E2426B1E40590300BBCC0E /* WebKit.framework */,
B8EC887C1DE7D23700C30DD6 /* MessageUI.framework */,
B8EC887D1DE7D23700C30DD6 /* Foundation.framework */,
B8EC887E1DE7D23700C30DD6 /* AddressBook.framework */,
B8EC887F1DE7D23700C30DD6 /* AddressBookUI.framework */,
B8EC88801DE7D23700C30DD6 /* AudioToolbox.framework */,
B8EC88811DE7D23700C30DD6 /* AVFoundation.framework */,
B8EC88821DE7D23700C30DD6 /* CFNetwork.framework */,
B8EC88831DE7D23700C30DD6 /* CoreLocation.framework */,
B8EC88841DE7D23700C30DD6 /* MediaPlayer.framework */,
B8EC88851DE7D23700C30DD6 /* QuartzCore.framework */,
B8EC88861DE7D23700C30DD6 /* MobileCoreServices.framework */,
B8EC88871DE7D23700C30DD6 /* CoreMedia.framework */,
B8EC88881DE7D23700C30DD6 /* UIKit.framework */,
B8EC88891DE7D23700C30DD6 /* SystemConfiguration.framework */,
B8EC88561DE7126600C30DD6 /* libxml2.tbd */,
B8EC884F1DE7104900C30DD6 /* libiconv.tbd */,
B8EC884D1DE7102500C30DD6 /* libz.tbd */,
B8EC884B1DE7101600C30DD6 /* libc++.tbd */,
B8EC88491DE70CEA00C30DD6 /* libsqlite3.tbd */,
);
name = Frameworks;
sourceTree = "<group>";
};
B8EC88591DE71A8200C30DD6 /* res */ = {
isa = PBXGroup;
children = (
B8EC885E1DE71ACD00C30DD6 /* splashimage */,
B8EAFA351F74A45C0013FF17 /* Launch Screen.storyboard */,
B8EC885A1DE71AA000C30DD6 /* Icon.png */,
B8EC885B1DE71AA000C30DD6 /* Icon@2x.png */,
);
path = res;
sourceTree = "<group>";
};
B8EC885E1DE71ACD00C30DD6 /* splashimage */ = {
isa = PBXGroup;
children = (
B8EC886E1DE71C7B00C30DD6 /* Default-568h@2x.png */,
B8EC886F1DE71C7B00C30DD6 /* Default-Portrait@2x~ipad.png */,
B8EC88701DE71C7B00C30DD6 /* Default-Portrait~ipad.png */,
B8EC88711DE71C7B00C30DD6 /* splashimage_pad_portrait.png */,
B8CFAF411F6222DE00307D08 /* splashimage_pad_landscape.png */,
B8EC88721DE71C7B00C30DD6 /* splashimage_phone_portrait.png */,
B8CFAF421F6222DE00307D08 /* splashimage_phone_landscape.png */,
);
path = splashimage;
sourceTree = "<group>";
};
B8EC88981DE7D2D300C30DD6 /* Library */ = {
isa = PBXGroup;
children = (
B8EC889B1DE7D68800C30DD6 /* nexacro14.framework */,
);
name = Library;
path = nexacro14App/Library;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
B8EC880C1DE702DD00C30DD6 /* nexacro14App */ = {
isa = PBXNativeTarget;
buildConfigurationList = B8EC88241DE702DE00C30DD6 /* Build configuration list for PBXNativeTarget "nexacro14App" */;
buildPhases = (
B8EC88091DE702DD00C30DD6 /* Sources */,
B8EC880A1DE702DD00C30DD6 /* Frameworks */,
B8EC880B1DE702DD00C30DD6 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = nexacro14App;
productName = nexacro14App;
productReference = B8EC880D1DE702DD00C30DD6 /* nexacro14App.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
B8EC88051DE702DD00C30DD6 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = com.tobesoft;
TargetAttributes = {
B8EC880C1DE702DD00C30DD6 = {
CreatedOnToolsVersion = 8.1;
DevelopmentTeam = RAH8A8577Q;
ProvisioningStyle = Automatic;
SystemCapabilities = {
com.apple.BackgroundModes = {
enabled = 1;
};
com.apple.Maps.iOS = {
enabled = 0;
};
com.apple.Push = {
enabled = 1;
};
com.apple.iCloud = {
enabled = 0;
};
};
};
};
};
buildConfigurationList = B8EC88081DE702DD00C30DD6 /* Build configuration list for PBXProject "nexacro14App" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
Base,
ko,
ja,
en,
);
mainGroup = B8EC88041DE702DD00C30DD6;
productRefGroup = B8EC880E1DE702DD00C30DD6 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
B8EC880C1DE702DD00C30DD6 /* nexacro14App */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
B8EC880B1DE702DD00C30DD6 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B8EC88A41DE7DEA500C30DD6 /* data in Resources */,
B8EC88761DE71C7B00C30DD6 /* splashimage_pad_portrait.png in Resources */,
61A14D3420293FDF00CED070 /* archive in Resources */,
B8CFAF431F6222DE00307D08 /* splashimage_pad_landscape.png in Resources */,
B8EAFA361F74A45C0013FF17 /* Launch Screen.storyboard in Resources */,
B8EC88771DE71C7B00C30DD6 /* splashimage_phone_portrait.png in Resources */,
B8CFAF441F6222DE00307D08 /* splashimage_phone_landscape.png in Resources */,
B8EC88741DE71C7B00C30DD6 /* Default-Portrait@2x~ipad.png in Resources */,
B8EC88751DE71C7B00C30DD6 /* Default-Portrait~ipad.png in Resources */,
B8EC88731DE71C7B00C30DD6 /* Default-568h@2x.png in Resources */,
B8EC885C1DE71AA000C30DD6 /* Icon.png in Resources */,
B8EC885D1DE71AA000C30DD6 /* Icon@2x.png in Resources */,
B8C6CB241DF79E2F00E2F1F7 /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
B8EC88091DE702DD00C30DD6 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B8EC88151DE702DE00C30DD6 /* AppDelegate.m in Sources */,
B8EC88121DE702DD00C30DD6 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
B8C6CB221DF79E2E00E2F1F7 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B8C6CB231DF79E2F00E2F1F7 /* ko */,
B8C6CB251DF79E4000E2F1F7 /* ja */,
B8C6CB261DF79E5800E2F1F7 /* en */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
B8EC88221DE702DE00C30DD6 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
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_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_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_SUSPICIOUS_MOVES = 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;
};
B8EC88231DE702DE00C30DD6 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
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_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_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_SUSPICIOUS_MOVES = 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;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
B8EC88251DE702DE00C30DD6 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = nexacro14App/nexacro14App.entitlements;
DEVELOPMENT_TEAM = RAH8A8577Q;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/nexacro14App/Library",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "nexacro14App/nexacro14App-Prefix.pch";
INFOPLIST_FILE = "nexacro14App/nexacro14App-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"$(inherited)",
"-framework",
nexacro14,
);
PRODUCT_BUNDLE_IDENTIFIER = com.tobesoft.nexacro14App;
PRODUCT_NAME = "${TARGET_NAME}";
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "armv7 armv7s arm64 x86_64";
};
name = Debug;
};
B8EC88261DE702DE00C30DD6 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
CODE_SIGN_ENTITLEMENTS = nexacro14App/nexacro14App.entitlements;
DEVELOPMENT_TEAM = RAH8A8577Q;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/nexacro14App/Library",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "nexacro14App/nexacro14App-Prefix.pch";
INFOPLIST_FILE = "nexacro14App/nexacro14App-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = (
"$(inherited)",
"-framework",
nexacro14,
);
PRODUCT_BUNDLE_IDENTIFIER = com.tobesoft.nexacro14App;
PRODUCT_NAME = "${TARGET_NAME}";
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "armv7 armv7s arm64 x86_64";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
B8EC88081DE702DD00C30DD6 /* Build configuration list for PBXProject "nexacro14App" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B8EC88221DE702DE00C30DD6 /* Debug */,
B8EC88231DE702DE00C30DD6 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
B8EC88241DE702DE00C30DD6 /* Build configuration list for PBXNativeTarget "nexacro14App" */ = {
isa = XCConfigurationList;
buildConfigurations = (
B8EC88251DE702DE00C30DD6 /* Debug */,
B8EC88261DE702DE00C30DD6 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = B8EC88051DE702DD00C30DD6 /* Project object */;
}

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1100"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B8EC880C1DE702DD00C30DD6"
BuildableName = "nexacro14App.app"
BlueprintName = "nexacro14App"
ReferencedContainer = "container:nexacro14App.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</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 = "B8EC880C1DE702DD00C30DD6"
BuildableName = "nexacro14App.app"
BlueprintName = "nexacro14App"
ReferencedContainer = "container:nexacro14App.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "B8EC880C1DE702DD00C30DD6"
BuildableName = "nexacro14App.app"
BlueprintName = "nexacro14App"
ReferencedContainer = "container:nexacro14App.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,22 @@
//
// AppDelegate.h
// nexacro14App
//
// Created by 김재환 on 2016. 11. 24..
// Copyright © 2016년 com.tobesoft. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <nexacro14/NexacroAppDelegate.h>
#import <nexacro14/NexacroMainViewController.h>
#import <nexacro14/NexacroWKWebViewDelegate.h>
@interface AppViewController : NexacroMainViewController
@end
@interface WebViewDelegate : NexacroWKWebViewDelegate
@end
@interface AppDelegate : NexacroAppDelegate <UIApplicationDelegate>
- (NexacroMainViewController*)initializeMainViewController;
@end

View File

@ -0,0 +1,93 @@
//
// AppDelegate.m
// nexacro14App
//
// Created by on 2016. 11. 24..
// Copyright © 2016 com.tobesoft. All rights reserved.
//
#import "AppDelegate.h"
@implementation AppViewController
// (YES/NO)
- (BOOL)shouldAutorotate
{
return YES;
}
// ( )
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
@end
@implementation AppDelegate
- (NexacroMainViewController*)initializeMainViewController
{
NSString *bootstrapUrl = @"http://172.10.12.59:8080/nexacro17/TopsIssueLoader/_ios_/start_ios.json";
[[NexacroResourceManager sharedResourceManager] setBootstrapURL:bootstrapUrl isDirect:NO];
// WKWebView delegate
AppViewController* controller = [[AppViewController alloc] initWithFullScreen:NO];
// WKWebView delegate
// WebViewDelegate* webviewDelegate = [[WebViewDelegate alloc] init];
// AppViewController* controller = [[AppViewController alloc] initWithFullScreen:NO
// withWebviewDelegate:webviewDelegate];
return controller;
}
@end
// WKWebView delegate AppViewController
@implementation WebViewDelegate
#pragma mark - WKWebView - WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message
{
[super userContentController:userContentController didReceiveScriptMessage:message];
}
#pragma mark - WKWebView - WKNavigationDelegate
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(nonnull WKNavigationAction *)navigationAction decisionHandler:(nonnull void (^)(WKNavigationActionPolicy))decisionHandler
{
[super webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler];
}
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation
{
[super webView:webView didCommitNavigation:navigation];
}
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
[super webView:webView didFinishNavigation:navigation];
}
- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
[super webView:webView didFailNavigation:navigation withError:error];
}
#pragma mark - WKWebView - WKUIDelegate
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler
{
[super webView:webView runJavaScriptAlertPanelWithMessage:message initiatedByFrame:frame completionHandler:completionHandler];
}
- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler
{
[super webView:webView runJavaScriptConfirmPanelWithMessage:message initiatedByFrame:frame completionHandler:completionHandler];
}
- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * __nullable result))completionHandler
{
[super webView:webView runJavaScriptTextInputPanelWithPrompt:prompt defaultText:defaultText initiatedByFrame:frame completionHandler:completionHandler];
}
@end

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<nexacro-config>
<!-- application dialog-position: 업데이트 진행정보 출력 위치(top, center, bottom) -->
<!-- application file-logging: 초기 로딩 에러 정보를 파일로 떨구지 여부, 파일은 iTunes 를 통해서 확인 가능 -->
<application dialog-position="bottom" file-logging="true" quiet="false"/>
<!-- notification enable: 노티피케이션 기능을 사용하지 여부 -->
<!-- notification handler: 사용자 정의 노티피케이션 핸들명 -->
<notification enable="true" handler="DefaultNotificationManagerHandler"/>
<!-- updator force: start_ios.json 정보로 부터 업데이트 파일 존재시 팝업창 표시 여부, true 시 팝업 창으로 확인 없어 강제 업데이트 진행 -->
<!-- updator cancelable: start_ios.json 정보로 부터 업데이트 파일 존재시 팝업창이 표시될때 취소 버튼 표시 여부, 취소 클릭시 앱이 종료됨 -->
<!-- updator errormsg: 초기로딩중 로딩에 실패했을때 에러 정보 팝업을 출력할지 여부, 최종 사용자 한테는 불필요한 정보이므로 배포시에는 false 로 할것 -->
<!-- updator quiet: 업데이트 확인중 메시지를 숨길지 여부, true로 하더라도 업데이트 존재시 업데이트 수행중의 단계숫자는 출력됨 -->
<updator force="false" cancelable="false" errormsg="true" quiet="false"/>
</nexacro-config>

View File

@ -0,0 +1,27 @@
/*
Localizable.strings
Nexacro
Created by 오 영진 on 12. 12. 3..
*/
"needupdate" = "It is need to update. \r\nIt will start after the update is completed.";
"force_close" = "Update is Completed.";
"loadingFail" = "First loading is fail. \r\nPlease restart.";
"updateFail" = "Update is fail. \r\nPlease restart.";
"notexist" = "Start file is NOT exist. \r\nPlease restart.";
"BeingUpdated" = "Being updated.";
"wantreplace" = "There is a file of the save name. Do you want to replace? ";
"ok" = "OK";
"cancel" = "Cancel";
"alert_title" = "";
"move" = "Move";
"upper" = "Upper";
"filter" = "Filter";
"home" = "Home";
"nofilename" = "No File Name.";
"checkforupdates" = "Check for updates.";
"installforupdates" = "Install for updates.";
"downloadingforupdates" = "Downloading for updates.";
"new_engine_available" = "Engine update required.";

View File

@ -0,0 +1,27 @@
/*
Localizable.strings
Nexacro
Created by 오 영진 on 12. 12. 3..
*/
"needupdate" = "アップデートがあります。\r\n完了した後に始まります。";
"force_close" = "アップデートが完了しました。";
"loadingFail" = "初期ロードに失敗しました。\r\n再起動してください。";
"updateFail" ="アップデートが失敗しました。\r\n再起動してください。";
"notexist" = "起動ファイルがありません。\r\n再起動してください。";
"BeingUpdated" = "アップデート中です。";
"wantreplace" = "同一のファイル名があります。上書きしますか?";
"ok" = "確認";
"cancel" = "キャンセル";
"alert_title" = "";
"move" = "移動";
"upper" = "上位";
"filter" = "フィルター";
"home" = "ホーム";
"nofilename" = "ファイル名がありません。";
"checkforupdates" = "アップデート確認中です。";
"installforupdates" = "アップデート設置中です。";
"downloadingforupdates" = "アップデートダウン中です。";
"new_engine_available" = "新規バージョンがご利用になれます。";

View File

@ -0,0 +1,27 @@
/*
Localizable.strings
Nexacro
Created by 오 영진 on 12. 12. 3..
*/
"needupdate" = "업데이트가 있습니다. \r\n업데이트 완료 후 시작됩니다.";
"force_close" = "업데이트 되었습니다.";
"loadingFail" = "초기 로딩이 실패하였습니다. \r\n재시작 해 주세요.";
"updateFail" = "업데이트가 실패하였습니다. \r\n재시작 해 주세요.";
"notexist" = "구동에 필요한 파일이 없습니다. \r\n재시작 해 주세요.";
"BeingUpdated" = "업데이트 중입니다.";
"wantreplace" = "동일한 파일이 이미 존재합니다. 바꾸시겠습니까?";
"ok" = "확인";
"cancel" = "취소";
"alert_title" = "";
"move" = "이동";
"upper" = "상위";
"filter" = "필터";
"home" = "홈";
"nofilename" = "파일명이 없습니다.";
"checkforupdates" = "업데이트 확인 중입니다.";
"installforupdates" = "업데이트 설치 중입니다.";
"downloadingforupdates" = "업데이트 다운 중입니다.";
"new_engine_available" = "새로운 엔진 버전이 있습니다.\r\n업데이트 하십시오.";

View File

@ -0,0 +1,16 @@
//
// main.m
// nexacro14App
//
// Created by on 2016. 11. 24..
// Copyright © 2016 com.tobesoft. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

View File

@ -0,0 +1,98 @@
<?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>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.tobesoft.nexacro14App</string>
<key>CFBundleURLSchemes</key>
<array>
<string>nexacro14App</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>ExternalAPITest</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSAppleMusicUsageDescription</key>
<string>미디어 사용</string>
<key>NSCalendarsUsageDescription</key>
<string>달력 사용</string>
<key>NSCameraUsageDescription</key>
<string>카메라 사용</string>
<key>NSContactsUsageDescription</key>
<string>연락처 사용</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Google Map 사용자 위치 서비스에 사용됩니다.</string>
<key>NSLocationUsageDescription</key>
<string>Google Map 사용자 위치 서비스에 사용됩니다.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Google Map 사용자 위치 서비스에 사용됩니다.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>포토 라이브러리 추가 사용</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>포토 라이브러리 사용</string>
<key>NSRemindersUsageDescription</key>
<string>리마인더 사용</string>
<key>UIBackgroundModes</key>
<array/>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>Launch Screen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<false/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSMicrophoneUsageDescription</key>
<string>오디오 레코딩을 하기 위해 마이크 사용을 승인하여 주십시오.</string>
</dict>
</plist>

View File

@ -0,0 +1,14 @@
//
// Prefix header for all source files of the 'Nexacro14' target in the 'Nexacro14' project
//
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iOS SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif

View File

@ -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>aps-environment</key>
<string>development</string>
</dict>
</plist>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="ipad12_9" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<imageView key="view" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="splashimage_pad_portrait.png" id="yNy-aP-cuF">
<rect key="frame" x="0.0" y="0.0" width="1024" height="1366"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="52.34375" y="374.4140625"/>
</scene>
</scenes>
<resources>
<image name="splashimage_pad_portrait.png" width="768" height="1004"/>
</resources>
</document>

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB